Чтобы ответить: кажется, что текст во многих СУБД устарел, поэтому лучше использовать большой двоичный объект или varchar с высоким пределом (а с blob вы не получите никаких проблем с кодировкой, что является большой проблемой с varchar) и текст).
Также, как указано в этой теме на форумах MySQL , жесткие диски дешевле, чем программное обеспечение, поэтому вам лучше сначала спроектировать свое программное обеспечение и заставить его работать, и только тогда, если пространство станет проблемой Вы можете оптимизировать этот аспект. Поэтому не пытайтесь слишком рано оптимизировать размер столбца, сначала лучше установить его больше (плюс это позволит избежать проблем с безопасностью).
О различных комментариях:
Слишком много фанатизма SQL здесь. Несмотря на то, что я очень люблю SQL и реляционные модели, у них также есть свои подводные камни.
Хранение сериализованных данных в базе данных как есть (например, хранение данных в формате JSON или XML) имеет несколько преимуществ:
- У вас может быть более гибкий формат для ваших данных: добавление и удаление полей на лету, изменение спецификации полей на лету и т. Д. *
- Меньшее несоответствие импеданса объектной модели: вы сохраняете и извлекаете данные в том виде, как они есть в вашей программе, по сравнению с извлечением данных и последующей обработкой и преобразованием их между структурами ваших программных объектов и структурами вашей реляционной базы данных. .
И есть еще много других преимуществ, поэтому, пожалуйста, не фанатизм: реляционные базы данных - отличный инструмент, но давайте не будем использовать другие инструменты, которые мы можем получить. Чем больше инструментов, тем лучше.
Что касается конкретного примера использования, я склонен добавлять поле JSON в свою базу данных для хранения дополнительных параметров записи, в которой столбцы (свойства) данных JSON никогда не будут выбираться по отдельности, а только когда правильная запись уже выбрана. В этом случае я все еще могу различать свои записи с помощью реляционных столбцов, и когда выбрана правильная запись, я могу просто использовать дополнительные параметры для любой цели.
Так что мой совет, чтобы сохранить лучшее из обоих (скорость, сериализуемость и структурная гибкость), просто используйте несколько стандартных реляционных столбцов, которые будут служить уникальными ключами для разграничения ваших строк, а затем используйте столбец blob / varchar, где ваш сериализованные данные будут вставлены. Обычно для уникального ключа требуются только два / три столбца, поэтому это не потребует больших затрат.
Кроме того, вас может заинтересовать PostgreSQL, который теперь имеет тип данных JSON, и проект PostSQL для непосредственной обработки полей JSON как реляционных столбцов.