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к инсертов. но нагрузка растянута по времени при записи, и минимальная при получении статистики.
во полотно накатал... сорян)
делай пока простой, его на долго хватит, потом когда возникнет необходимость найдешь решение
да вот заранее хотелось бы решение. так как искать его придется уже через пол года, количество записей траншей довольно большое
обычные данные обязательно оставить. если будут тормозить отчёты - можно из них начать делать вот такие вот статистические таблицы для отчетов. тоже абсолютно нормальная практика. но сырые данные по продажам в любом случае придется оставить.
спасибо, сырые данные останутся в любом случае. даже если попросят выкинуть - буду отстаивать до последнего)
иногда эти отчетные таблицы берут и выносят вообще в другую базу данных, на другой машине. чтобы наней отчеты гонять
да, ребята уже предлагали микросервис состряпать с отдельной бд. и по моему это хороший вариант. покрайней мере с той точки откуда я смотрю
это не стоит называть прям уж микросервисом. да и необязательно это. мороки много, а на таких мелких данных банально может не понадобиться
ну "микро" понятие растяжимое. может вообще лямбда от авс спрявится с задачами
понятие микросервиса вполне определенное. Фаулером там.. и другими пацанами.
я про размер)
Обсуждают сегодня