Где хранить контент — в Монго или файловой системе?
Добрый вечер. Вопрос может показаться наивным, но хочется разобраться и подтвердить вывод какими-то фактами.
С точки зрения нагрузки и производительности, где будет лучше держать контент для сайтов, которые его получают по API - в файле JSON или в Монге? Как провести сравнение нагрузки?
По идее, прочитать файл много ресурсов не надо. Может быть его вообще можно как-то загружать в память процесса? Потому что если оборащатся к файлу каждый раз, то это большая нагрузка на файловую систему. Файл JSON, кстати, раздается у меня сервером на Ноде, если имеет значение.
В то же время у Монги может быть какая-то оптимизация этого процесса, не даром же такие вещи вообще существуют.
jeruthadam, дешевле - не в $, а по ресурсам.
Ведь гораздо легче отдать статику, чем делать запрос в БД, пусть и крохотный.
Ну и не отдавайте нодой в мир, а проксируйте Nginx-ом к примеру. Вообще пушка будет )
Алексей Ярков, я на клиент не отдаю голый JSON, в том-то и дело. Там будет 100 статей, зачем мне их на клиент посылать, если юзер открыл страницу с одной статьей. Поэтому nginx отпадает.
Нода в режиме production кеширует статику. Если эти файлы в папке public, то они сразу после запуска приложения уже в памяти. Что может быть быстрее, чем из памяти?
jeruthadam, Если эта строчка вписана в какой-то файл всего серверного кода, то ваш articles.json загружается в память даже и в режиме development. Правда, она не может так выглядеть, может как-нибудь так - const data = require('./articles.json')
Abcdefgk, она загружается единоразово? Есть юзер А запросит этот роут, который закгружает этот файл, а через 5 минут придет юзер Б и запросит эту же инфу, то будет заново обращение к JSON файлу? Или уже из памяти? А откуда он тогда знает что файл не изменился?
jeruthadam, Если предполагается, что файл будет постоянно изменяться, то тогда его нужно запрашивать именно из файловой системы - сохранять его туда изменённым, потом изменённым запрашивать, - то есть не реквайром, а так -