YAML или serialize () для хранения данных в MySQL - PullRequest
1 голос
/ 03 февраля 2011

Я пытаюсь сохранить временные данные (например, продукты корзины, session_data) в БД. И я выбрал YAML для этого вместо функции serialize (). Потому что данные YAML легко читаются человеком и переносимы между языками программирования.

У меня проблемы с YAML, если я храню свои временные данные в базе данных?

Ответы [ 3 ]

2 голосов
/ 03 февраля 2011

Лично я бы использовал сериализацию по двум причинам:

  1. Он включен в PHP по умолчанию.
  2. То, что вы положили, это то, что вы получили.

По второму пункту. Serialize не просто преобразует в строку, но также записывает тип и PHP вызывает функции для объектов, чтобы вы могли выбирать, что сериализовать и что делать с данными, когда вы их сериализуете.

См .: __ сон и бодрствование

Может быть нелегко читать напрямую из базы данных, но не потребуется двух минут, чтобы написать скрипт, который мог бы его вытащить, десериализовать и выполнить print_r для данных, чтобы посмотреть, что хранится.

2 голосов
/ 03 февраля 2011

Лично я бы не использовал YAML. Он слишком зависит от формата (требует новых строк, пробелов и т. Д.), И в PHP нет встроенного синтаксического анализатора. Вместо этого я бы использовал JSON для этого. Работать с ним тривиально, и он читается человеком (не так много, как YAML, но гораздо больше, чем сериализовано). Это лучшее из обоих миров.

Но, учитывая сказанное, вам действительно следует задать себе вопрос, почему вы хотите хранить сериализованное представление сложной структуры данных в поле в БД ... В большинстве случаев может быть лучше хранить нормализованное представление данных (чтобы их можно было легко найти и т. д.). Хранить сериализованные данные не так уж и плохо, но это может быть неоптимальным или неправильным выбором в зависимости от того, что вы пытаетесь сделать. Как правило, это гораздо лучше, чем использование хранилища Entity-Attribute-Value, но вам нужно действительно подумать о том, что вы делаете, чтобы решить, правильно ли это.

1 голос
/ 03 февраля 2011

Просто убедитесь, что вы избегаете всего потенциально опасного, то есть пользовательского ввода, и все в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...