@semki096

Куда в моём случае оптимальнее сохранять данные — в файл или в базу mysql?

Есть данные, они считываются каждые 5 минут со стороннего сервиса и я по ним строю график. Изначально данные сохранял в базе.

Но данных много и я подумал - может стоит их кешировать на стороне сервера? А потом из кеша брать данные и на стороне клиента отрисовывать график?

И вдруг я подумал - а зачем я вообще пишу в базу, может правильней сразу писать в файл?

Рассудите меня, как лучше поступить?
  • Вопрос задан
  • 114 просмотров
Решения вопроса 2
База и так пишет в файл )) Но у базы ест инструменты для работы с этими данными,

Если вам нужно будут сразу обратиться у нескольким наборам данным (например за период) то БД будет быстрее

Если все данные есть и хранятся в единственном экземпляре, то как вариант сохранять их в .json и напрямую грузить во frontend

Все зависит от того как вы их планируете использовать!
Ответ написан
Комментировать
@Joysi
Вопрос баланса.
  • Если вам необходимо строить графики с доп обработкой которую удобно делать через запрос к SQL серверу (select avg(...), count(..), min(...),max() from datas where .... group by ... having ...) - то через файл получать данные будет менее прозрачно и, возможно, затратнее.
  • Аналогично если понадобится аналитика по этим данным за большой временной период- то через СУБД проще строить необходимые результаты.
  • Если данные необходимы только в течении 5 минут и потом неинтересны - то можно и без СУБД а в промежуточные (файлы, кеши) и т.п.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
doublench21
@doublench21
Из ваших рассуждений ничего не ясно. То вы берете данные со стороннего сервиса и пишете их в бд. Потом начинаете говорить про их кеширование. А потом внезапно начинаете упоминать запись в файл.

Если Вы пишете данные в бд, то пусть это так и остаётся. Зачем, какой смысл от того, что вы начнете писать данные в файл...

Кешировать конечно нужно, но при чём тут оно? (https://habrahabr.ru/company/zerotech/blog/316316/)
Ответ написан
Комментировать
Но данных много и я подумал - может стоит их кешировать на стороне сервера? А потом из кеша брать данные и на стороне клиента отрисовывать график?

Само-собой напрашивается использование Key/Value хранилищ наподобие Memcached/TaranTool/Redis.
При построении графика данные для графика сначала ищутся по некоторому ключу, допустим, "reports/report1000". Если такого ключа нет, то данные запрашиваются со стороннего сервиса и кладутся по тому ключу.
Желательно класть данные в кеш со сроком истечения, по истечению которого k/v хранилище само очищает от неактуальных данных.
Хранить данные от стороннего сервиса в кеше можно как есть (сериализованные в строку, конечно), а можно и предобработанные. Хранить можно просто как неструктурированные данные, так и в форматах JSON, XML и других.
Один нюанс: данные должны быть небольшие по размеру, иначе k/v хранилище будет кушать много памяти, поскольку все данные находятся в RAM.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы