Является ли сериализация PHP хорошим выбором для хранения данных небольшого веб-сайта, измененного одним человеком


Я планирую архитектуру веб-сайта на PHP. Это будет небольшой веб-сайт с небольшим количеством посетителей и небольшим набором данных. Данные изменяются исключительно одним пользователем (администратором).

Чтобы упростить задачу, я не хочу возиться с реальной базой данных или XML-данными. Я думаю о хранении всех данных с помощью сериализации PHP в нескольких файлах. Так, например, если существует несколько категорий, я сохраню массив, содержащий экземпляры классов Category для каждого категория.

Есть ли какие-либо подводные камни при использовании сериализации PHP в этих обстоятельствах?

Author: Brian Tompsett - 汤莱恩, 2010-07-14

4 answers

Используйте базы данных - это не так сложно, и любое дополнительное время, потраченное на использование базы данных, будет хорошо изучено.

Подводные камни, которые я вижу, таковы, как упоминал Ехонатан:

1. Обслуживание и добавление функциональности.
2. Нет простого способа запросить или просмотреть данные.
3. Очень неуверенный в себе - взгляните на"hackthissite.org ". Многие из начальных примеров связаны со взломом, когда кто-то помещал данные, жестко закодированные в файлы.
4. Сериализация будет работать для одного массива, то есть для одной таблицы. Если вам нужно что-то сделать, например, иметь родительские категории, которые должны соответствовать другим данным, это будет работать не так хорошо.

 2
Author: Kerry Jones, 2010-07-14 05:54:39

Подводные камни возникают при обслуживании и добавлении функциональности.

Это очень хороший способ учиться, но вы будете больше ценить базы данных после уроков.

 1
Author: Yehonatan, 2010-07-14 05:44:45

Я бы посоветовал использовать небольшую базу данных, такую как sqlite, если вы не хотите настраивать полный сервер БД. Однако я также скажу, что сериализация массива и сохранение его в текстовом файле происходит довольно быстро. Мне пришлось сериализовать массив с несколькими тысячами записей (дамп из базы данных) и использовать его в качестве временной базы данных, когда наш сервер БД перестраивался в течение нескольких дней.

 0
Author: Jonathan Kuhn, 2010-07-14 05:54:48

Я попытался реализовать сериализацию PHP для хранения данных веб-сайта. Для тех, кто хочет сделать то же самое, вот отзыв о проекте, начатом несколько месяцев назад и сильно измененном с тех пор:

Плюсы:

  • Было очень легко загружать и сохранять данные . Мне не нужно писать SQL-запросы, оптимизировать их и т. Д. Код короче (при параметризованных SQL-запросах он может значительно вырасти).

  • Развертывание не требует дополнительных усилий. Нас не волнует, что поддерживается на веб-сервере: если есть только PHP без дополнительных расширений, серверов баз данных и т.д., веб-сайт все равно будет работать. Sqlite - хорошая вещь, но ее невозможно установить на некоторых серверах, и для нее также требуется расширение PHP.

  • Нам не нужно заботиться ни об обновлении сервера базы данных, ни об используемом сервере базы данных (таким образом, избегая сценария, когда клиент хочет перейти с Microsoft SQL Server на Оракул и т. д.).

  • Мы можем добавить больше свойств к объектам, не нарушая все (точно так же, как мы можем добавить другие столбцы в базу данных).

Минусы:

  • Как сказал Керри в своем ответе, "нет простого способа запросить или просмотреть данные". Это означает, что любые случаи бизнес-аналитики/статистики невозможны или требуют огромного объема работы. Кстати, некоторые базовые сценарии становятся чрезвычайно сложными. Давайте допустим, мы храним товары и хотим знать, сколько их в наличии. Вместо того, чтобы просто писать select count(1) from Products, в моем случае для этого требуется создать PHP-файл, загрузить все данные, а затем подсчитать количество элементов, иногда добавляя материал вручную.

  • Некоторые изменения, необходимые для реализации миграции данных , которая была болезненной и требовала больше работы, чем просто выполнение SQL-запроса.

В заключение, Я бы рекомендовал использовать сериализацию PHP для хранение данных небольшого веб-сайта, измененного одним человеком , только если выполняются все следующие условия:

  1. Контекст развертывания неизвестен, и есть вероятность, что сервер поддерживает только базовый PHP без расширений,

  2. Никого не волнует бизнес-аналитика или подобное использование информации,

  3. Никаких изменений в требованиях, оказывающих большое влияние на структуру данных, не будет.

 0
Author: Arseni Mourzenko, 2011-04-16 15:05:17