2016-09-20 1 views
0
  1. JSON будет обновлен до ~ 4 раза в день
  2. JSON будет загружены часто (каждый пользователь будет использовать это в качестве основы данных)
  3. нужно будет держать последнюю предыдущую версию каждых спасенных изменений (одна резервная копия)

Учитывая эти случаи, существует ли определенный pro/con для хранения json-данных в файле на сервере, а также для хранения его в базе данных? И если хранить его в базе данных, имеет ли смысл иметь его собственную таблицу (две строки, одну текущую версию, одну резервную копию)сохранение json-данных, которые будут часто выполняться/изменяться в db или в файле?

ответ

0

Хранение, выборка и даже запрос JSON в эти дни не являются большой проблемой - особенно с решениями NoSQL, такими как MongoDB & Cassandra. Фактически, платформа, подобная MongoDB, позволит вам напрямую отправлять запросы в JSON - на самом деле, она хранит данные как документы JSON и работает достаточно хорошо. (Я собираюсь предположить, что вы не говорите о масштабном масштабе, по крайней мере, пока нет.)

Суть в том, что такая система, как MongoDB, сделала для вас много тяжелой работы. Он будет эффективно оптимизировать для вас вещи, такие как загрузка частых документов в память, оптимизация их размеров и создание механизмов для перемещения больших документов JSON без огромных следов.

Если вы столкнулись с этим на уровне файлов за файлом, у вас будет много непредвиденных проблем, с которыми вам придется столкнуться в будущем. Вам необходимо управлять файловыми дескрипторами, следить за блокировкой чтения/записи при одновременных чтениях, разрешениями файловой системы, устранять узкие места производительности ввода-вывода диска - список продолжается. Даже для веб-серверов в эти дни, которые обслуживают файлы днем ​​и ночью, где они сделали некоторые довольно интересные оптимизации для управления производительностью обработки файлов, в конечном итоге работают с CDN (Сети доставки контента), чтобы оптимизировать производительность на грани и управлять масштабом.

Сохранение предыдущих версий данных JSON может быть таким же простым, как просто не переписывать существующую запись и маркировать предыдущую предыдущую (n-2) версию для удаления. Затем это можно сделать в отдельном потоке, чтобы «очистить» или пакетный процесс в одночасье, чтобы удалить посторонние данные. (ПРИМЕЧАНИЕ: это может привести к некоторой фрагментации вниз по линии, но это то, что можно впоследствии сжать.)

Итак, длинный рассказ короткий. Я больше не буду хранить JSON в файловой системе. Поместите его в нечто вроде MongoDB и дайте ему обработать подробные детали. Пока вы действительно не перейдете на транзакции 1B +, ​​это, вероятно, должно быть очень хорошо для вас.

Смежные вопросы