Задать вопрос
@Asfli

В какой базе данных лучше всего хранить данные для дашбордов?

Всем привет! Необходимо автоматизировать сбор табличках данных из excel и сделать вебморду с дашбордами, в которых записи будут суммироваться, вычитаться, показывать накопительный итог и строить графики.
Структура столбцов таблицы следующая --> | дата(ежедневный отчет) | пришло | ушло | итог=вчерашний итог+пришло-ушло.
То есть итог будет зависеть от предыдущего дня и так до начала таблицы. Главная загвоздка, что excel легко пересчитает все значения, если я изменю итог 1 дня месяца в конце месяца, а что делать с реляционной бд? Или есть другие механизмы, как оптимально хранить такие связанные данные на сервере?
  • Вопрос задан
  • 188 просмотров
Подписаться 1 Средний 1 комментарий
Пригласить эксперта
Ответы на вопрос 3
@Akina
Сетевой и системный админ, SQL-программист.
а что делать с реляционной бд

А ничего. НЕ хранить ежедневные итоги. Только приходы и уходы. И самая первая запись - только приход (начальный баланс), если начинаем не с пустой кассы. А сумму с накоплением считаем непосредственно в запросе, в тот момент, когда потребовался отчёт.

Ну или как вариант - хранить в отдельной таблице базовую сумму (начальный баланс периода), скажем, на начало месяца или там года, и от неё уже начинать считать.
Ответ написан
mayton2019
@mayton2019
Bigdata Engineer
Вы можете материализовывать дашборд. Тоесть фактичекски делать его хард-копию.
Он ведь не меняется? Верно? И отдавать статический html.

А в базе - отслеживать бухгалтерию вот как предлагали уже.
Ответ написан
@alexalexes
В реляционной базе - основная таблица - это лог событий.
event_log:
event_id - идентификатор события
event_date - дата и время события
event_type_id - тип события (пришло или ушло)
value - сколько (пришло или ушло, положительное значение)
А чтобы подготовить данные для визуализации, переводите лог в агрегированный вид:
либо делаете view на основе запроса, либо делаете хранимую процедуру для генерации агрегированных данных и кладете их в отдельную таблицу:
daily_statistics:
id - идентификатор агрегированной точки
stat_date - дата агрегированной точки
in_value - пришло (кол-во)
out_value - ушло (кол-во)
current_value - баланс

Записи лога событий вы храните до тех пор пока они будут затрагиваться периодом хотя бы одной агрегирующей процедурой. При 2-кратном устаревании записей лога - эти записи можно удалять (или смотреть регламент, сколько хранятся физические документы, которые отражают эти данные, и следовать регламенту).
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы