Является ли сериализация PHP хорошим выбором для хранения данных небольшого веб-сайта, измененного одним человеком
Я планирую архитектуру веб-сайта на PHP. Это будет небольшой веб-сайт с небольшим количеством посетителей и небольшим набором данных. Данные изменяются исключительно одним пользователем (администратором).
Чтобы упростить задачу, я не хочу возиться с реальной базой данных или XML-данными. Я думаю о хранении всех данных с помощью сериализации PHP в нескольких файлах. Так, например, если существует несколько категорий, я сохраню массив, содержащий экземпляры классов Category
для каждого категория.
Есть ли какие-либо подводные камни при использовании сериализации PHP в этих обстоятельствах?
4 answers
Используйте базы данных - это не так сложно, и любое дополнительное время, потраченное на использование базы данных, будет хорошо изучено.
Подводные камни, которые я вижу, таковы, как упоминал Ехонатан:
1. Обслуживание и добавление функциональности.
2. Нет простого способа запросить или просмотреть данные.
3. Очень неуверенный в себе - взгляните на"hackthissite.org ". Многие из начальных примеров связаны со взломом, когда кто-то помещал данные, жестко закодированные в файлы.
4. Сериализация будет работать для одного массива, то есть для одной таблицы. Если вам нужно что-то сделать, например, иметь родительские категории, которые должны соответствовать другим данным, это будет работать не так хорошо.
Подводные камни возникают при обслуживании и добавлении функциональности.
Это очень хороший способ учиться, но вы будете больше ценить базы данных после уроков.
Я бы посоветовал использовать небольшую базу данных, такую как sqlite, если вы не хотите настраивать полный сервер БД. Однако я также скажу, что сериализация массива и сохранение его в текстовом файле происходит довольно быстро. Мне пришлось сериализовать массив с несколькими тысячами записей (дамп из базы данных) и использовать его в качестве временной базы данных, когда наш сервер БД перестраивался в течение нескольких дней.
Я попытался реализовать сериализацию PHP для хранения данных веб-сайта. Для тех, кто хочет сделать то же самое, вот отзыв о проекте, начатом несколько месяцев назад и сильно измененном с тех пор:
Плюсы:
Было очень легко загружать и сохранять данные . Мне не нужно писать SQL-запросы, оптимизировать их и т. Д. Код короче (при параметризованных SQL-запросах он может значительно вырасти).
Развертывание не требует дополнительных усилий. Нас не волнует, что поддерживается на веб-сервере: если есть только PHP без дополнительных расширений, серверов баз данных и т.д., веб-сайт все равно будет работать. Sqlite - хорошая вещь, но ее невозможно установить на некоторых серверах, и для нее также требуется расширение PHP.
Нам не нужно заботиться ни об обновлении сервера базы данных, ни об используемом сервере базы данных (таким образом, избегая сценария, когда клиент хочет перейти с Microsoft SQL Server на Оракул и т. д.).
Мы можем добавить больше свойств к объектам, не нарушая все (точно так же, как мы можем добавить другие столбцы в базу данных).
Минусы:
Как сказал Керри в своем ответе, "нет простого способа запросить или просмотреть данные". Это означает, что любые случаи бизнес-аналитики/статистики невозможны или требуют огромного объема работы. Кстати, некоторые базовые сценарии становятся чрезвычайно сложными. Давайте допустим, мы храним товары и хотим знать, сколько их в наличии. Вместо того, чтобы просто писать
select count(1) from Products
, в моем случае для этого требуется создать PHP-файл, загрузить все данные, а затем подсчитать количество элементов, иногда добавляя материал вручную.Некоторые изменения, необходимые для реализации миграции данных , которая была болезненной и требовала больше работы, чем просто выполнение SQL-запроса.
В заключение, Я бы рекомендовал использовать сериализацию PHP для хранение данных небольшого веб-сайта, измененного одним человеком , только если выполняются все следующие условия:
Контекст развертывания неизвестен, и есть вероятность, что сервер поддерживает только базовый PHP без расширений,
Никого не волнует бизнес-аналитика или подобное использование информации,
Никаких изменений в требованиях, оказывающих большое влияние на структуру данных, не будет.