Оптимизация записи на диск. Когда сохранять данные в localForage?
У меня есть SPA запущенное в Elecron которое получает с серверов ВКонтакте сообщения пользователя.
Мне нужно каким-то образом эти сообщения сохранять, я решил использовать localForage, библитека которая предоставляет функции как в localStorage только для работы с IndexedDB(setItem(key, val), getItem(key, val)) и так далее.
Я подключен к longPoll серверу обновлений, и когда в чат с определённым человеком приходит новое сообщение, мне нужно сохранить его на жёсткий диск, но проблема в том что я не могу сделать этого с конкретным сообщением, мне нужно взять все сообщения, добавить к ним новое, и потом всё это сохранить, при постоянном потоке новых сообщений это приводит к постоянным нагрузкам на жёсткий диск.
Каким образом решить эту проблему? БД решают эти проблемы, если да то какую выбрать? Или попробовать использовать node fs?
Но с node fs тоже вопрос, если мы JSON.stringify(массив сообщений) а потом записываем это в текстовый файл, то получается тоже теряем возможность добавления туда новых сообщений по одному, нужно только JSON.parse(файл) а потом объединять это всё и записывать.
Я тут в недоумении, как с этим лучше поступить. Возможно мне стоит записывать данные на диск только в определённые промежутки времени? Или мне стоит сохраняться при выходе из приложения? Тогда возникает вопрос с непредвиденным закрытием приложения.
но проблема в том что я не могу сделать этого с конкретным сообщением, мне нужно взять все сообщения, добавить к ним новое, и потом всё это сохранить, при постоянном потоке новых сообщений это приводит к постоянным нагрузкам на жёсткий диск.
А это мысль.)
Но для этого мне нужно будет под каждый диалог новое хранилище создавать. Во всяком случае надо попробовать.
UPD: Таки можно в localForage создать множество object store в одной базе данных. Нашёл древнюю тему на англоязычном форуме с этой проблемой, потом поддержку добавили.
UPD2: Спасибо большое, этот ответ натолкнул на правильную мысль.