170 похожих чатов

Ребят, насколько жизнеспособна идея сразу создавать "кэш статистики"? есть платежи в

15 категориях
есть условная 1000 человек совершающих эти платежи по 100 раз в сутки (чисто для простоты подсчетов цифры)

простой вариант:
пишем данные в одну таблицу.
когда нужно - получаем SUM(параметр) с условиями.
1000 юзеров по 100 платежей = 100 000 записей в сутки

сложный вариант
пишем данные в таблицу
суммируем с "сумма за все время по конкретному юзеру" (селект + инсерт)
суммируем с "за месяц по конкретному юзеру) (селлект + инсерт)
суммируем с "за день по конкретному юзеру" (селект + инсерт)
1000 юзеров по 100 записей * 4 таблицы = 400 000 записей
1000 юзеров по 100 запросов * 3 таблицы = 300 000 селектов (ок, можно превратит в 100к селектов с джойнами)

с одной стороны за месяц 12 000 000 инсервтов и 3 000 000 селектов (вместо 3 000 000 инсертов)
с другой стороны получить юзеру общую сумму за месяц - 1 запрос, а не SUM 100*30 = 3000 строк.
админу же месячная цифра обойдется в sum 1000 строк, а не 1000*100*30 = 3 000 000 строк.
но кроме того есть статистика за день, за неделю, за месяц/3/6/12 и за все время.

на дневной статистике казалось бы явный проигрыш, просуммировать 100к записей "дешевле" чем сделать 100к селектов и 400к инсертов. но нагрузка растянута по времени при записи, и минимальная при получении статистики.

во полотно накатал... сорян)

10 ответов

8 просмотров

делай пока простой, его на долго хватит, потом когда возникнет необходимость найдешь решение

Алексей- Автор вопроса

да вот заранее хотелось бы решение. так как искать его придется уже через пол года, количество записей траншей довольно большое

обычные данные обязательно оставить. если будут тормозить отчёты - можно из них начать делать вот такие вот статистические таблицы для отчетов. тоже абсолютно нормальная практика. но сырые данные по продажам в любом случае придется оставить.

Алексей- Автор вопроса

спасибо, сырые данные останутся в любом случае. даже если попросят выкинуть - буду отстаивать до последнего)

иногда эти отчетные таблицы берут и выносят вообще в другую базу данных, на другой машине. чтобы наней отчеты гонять

Алексей- Автор вопроса

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

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

Алексей- Автор вопроса

ну "микро" понятие растяжимое. может вообще лямбда от авс спрявится с задачами

понятие микросервиса вполне определенное. Фаулером там.. и другими пацанами.

Алексей- Автор вопроса

я про размер)

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

Обсуждают сегодня

Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
я так понимаю, я так подозреваю, что создание такого плагина для человека, кто умеет писать плагины для делфи потребует минут 5-10 времени. но это мое подозрение. хотелось бы ...
Kraszx
7
Коллеги, добрый вечер. Создаю коллекцию от TFPGMap, ключ - перечисление, значение - целое. Нужно отсортировать коллекцию по значению. Как это можно сделать?
Kirill Filippenok
11
Скажи а ты когда этот канал создавал ты уже дельфи не любил, или это со временем пришло?
Роман Лях (rgreat)
18
Привет, такой вопросик появился кажется ли вам что Rust слишком сложный/строгий для высокоуровневого программирования и слишком "безопасный"/строгий для низкоуровневого?
Крокант
10
Всем привет! Использую кастомное модальное диалоговое окошко, все по классике - mrOK, mrCancel как ModalResult. Однако есть нюанс - в главной форме есть универсальный обработч...
Олег Гранишевский
20
Карта сайта