Нужно ли хранить или рассчитывать статистику, когда она мне нужна? - PullRequest
0 голосов
/ 25 апреля 2020

Я создаю приложение, и мне понадобится статистика из данных, которые будут храниться в моей базе данных SQL.

Например, у меня есть таблица "животные" со столбцом "тип", который может быть равен "собаке" или "кошке". Мне нужно рассчитать статистику типа «количество животных», которая, следовательно, будет равна количеству сущностей в моей таблице «животные», или «процент от кошки», который, следовательно, будет равен количеству кошка / число

Этот пример был максимально упрощен, но в моем приложении это будут более сложные вычисления и в больших количествах.

Для моей статистики мне нужно создать другую таблицу «статистика» и обновлять ее каждый раз, когда я изменяю свою таблицу «животные», или я рассчитываю эту статистику каждый раз, когда у меня есть запрос на мой API? Каковы лучшие практики?

1 Ответ

0 голосов
/ 25 апреля 2020

Лучше всего делать расчеты, когда они вам нужны. Таким образом, вы гарантируете, что результаты всегда выровнены с данными.

Иногда ваши данные становятся большими. Ваша система действительно занята. Ваша потребность в быстром отклике имеет первостепенное значение. В этих случаях вы думаете о том, как сделать код более эффективным. Именно тогда вы начинаете думать об отдельной таблице статистики.

Если бы у вас была такая таблица, вы бы не сохранили соотношение в таблице - по крайней мере, не только. Вместо этого у вас будут счетчики для «собак» и «кошек». Тогда вы будете использовать триггеры для insert с, update с и delete с, чтобы поддерживать эти значения в актуальном состоянии. Конечно, триггеры увеличивают накладные расходы.

Может также возникнуть ситуация, когда статистика требуется только периодически (например, один раз в день). В этом сценарии вы можете запустить пакетное задание для создания таблицы статистики - запуск пакета в течение более продолжительных периодов для базы данных. Данные устарели, но это может удовлетворить ожидания производительности проще, чем ведение таблицы statistics в режиме реального времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...