Я нашел интересный комментарий в php.net о сериализации данных, чтобы сохранить его в БД.
В нем говорится следующее:
Пожалуйста! пожалуйста! пожалуйста! НЕ сериализуйте данные и поместите их в свой база данных. Сериализованный метод может использоваться таким образом, но при этом отсутствует точка реляционной базы данных и типов данных, присущих вашей базе данных двигатель. Это делает данные в вашей базе данных не переносимыми, сложными читать и может усложнять запросы. Если вы хотите, чтобы ваше приложение быть переносимым на другие языки, например, скажем, вы обнаружите, что хотите использовать Java для некоторой части вашего приложения, что имеет смысл использовать Java in, сериализация станет болью в ягодицах. Вам следует всегда иметь возможность запрашивать и изменять данные в базе данных без использования сторонний посреднический инструмент для манипулирования данными, которые необходимо вставить.
Я сталкивался с этим слишком много раз в своей карьере, это делает сложно поддерживать код, код с проблемами переносимости и данные это сложнее перейти на другие системы RDMS, новые схема и т.д. Это также имеет дополнительный недостаток, заключающийся в том, что он найдите свою базу данных на основе одного из полей, которые у вас есть. сериализованная.
Это не значит, что serialize() бесполезно. Это не... Хорошее место для это может быть файл кеша, который содержит результат данных например, интенсивная работа. Есть много других... Просто не злоупотребляйте сериализацией, потому что следующий парень, который приходит, будет иметь кошмара для поддержания или миграции.
Я хотел бы знать, является ли это стандартным представлением об использовании сериализации данных для целей БД. Значение, если это хорошая практика, использовать его иногда, или если его следует избегать.
Например, мне было предложено использовать сериализацию в последнее время.
В этом случае данные, которые мы должны были сохранить в таблице MySQL, были следующими:
- Автомобильная марка.
- Модель автомобиля.
- Автомобильная версия.
- Информация о машине.
Информация о машине была массивом, представляющим все свойства версии, поэтому это было большое переменное количество свойств (менее 100 свойств). Этот массив был сериализован.
Основная причина, по которой мне была предоставлена возможность использования сериализации, была следующая:
Являясь большим количеством полей, лучше сериализовать данные в чтобы улучшить производительность вместо создания поля для каждого свойства или несколько таблиц.
Лично я больше согласен с комментарием на php.net, чем с этим последним asseveration, но я хотел бы получить здесь более квалифицированные мнения, чем мои.