Плюсы
- Позволяет хранить произвольные сложные объекты
- Упрощенная схема БД (не нужно представлять эти сложные объекты)
Против
- усложняет ваши модели и уровень данных
- Потенциально необходимо обрабатывать несколько версий сериализованных объектов (изменения в определении объекта с течением времени)
- Невозможность напрямую запросить сериализованные столбцы
Альтернатива
Как указывалось в предыдущем ответе, объектная база данных или ориентированная на документы база данных могут соответствовать вашим требованиям.
Сложности
Если ваши объекты достаточно велики, вы можете столкнуться с трудностями при перемещении данных между вашей СУБД и вашей программой. Вы можете минимизировать это, отделяя хранилище данных объекта и метаданных, связанных с объектом.
Проблемы с памятью
Недостаточно памяти - это вполне возможно при наличии достаточно больших объектов. Это также зависит от типа сериализации, которую вы используете. Чтобы узнать, сколько памяти вы будете использовать, вам нужно профилировать свое приложение. Я бы предложил ruby-prof, bleak_house или memprof.
Я бы предложил использовать недвоичную сериализацию везде, где это возможно. Вам не нужно использовать только один тип сериализации для всей базы данных, но это может стать сложным и грязным.
Если вы хотите продолжить, вам лучше всего использовать объектно-ориентированные базы данных, такие как ObjectStore, или документно-ориентированные базы данных, такие как CouchDB. Они лучше разработаны и предназначены для сериализации объектов.