Я знаю, что это не прямой ответ на вопрос, и Вы можете, если хотите, отказаться от меня (я понимаю человеческую природу, проявляя ненависть к альтернативным мыслителям).
Но я должен написать альтернативный правильный способ работы таких логических систем, где у нас ежедневно большое количество данных, и мы должны составлять сводные отчеты без проблем с производительностью в будущем.
К сожалению, это данные временных рядов.
Это будет расти и будет стоить вам потери производительности.
Для краткосрочный запуск добавление индексов может решить Ваш вопрос.
Но в долгосрочной перспективе , где появится много рынков, клики будут ~ 1 миллион в день «обходной путь индекса» - это не очень хорошее решение .
A) Если вы сделаете поле даты индекса, вы начнете медленную вставку.Потому что каждый раз он будет выполнять процедуры обновления индекса в фоновом режиме.
B) Если вы разберетесь с таблицей, через некоторое время будет трудно управлять, поскольку нехорошо иметь сотни разделов, и однажды придет делос очень «неудобной» задачей для текущей структуры данных, которая приведет к переосмыслению схем таблиц.
Решение состоит в том, чтобы переосмыслить Вашу логику:
- Используйте Kafka и вставьте в нее данные своего клика.
- Вставьте данные в таблицу
clicks
(таблица должнане имеют индексов для быстрой вставки). - Создайте работника, который будет получать данные о кликах от Кафки, делать математику и создавать сводку по рынкам за день, неделю, месяц, год и т. д. Создавая таблицы:
clicks_by_markets
, clicks_by_markets_yearly
, clicks_by_markets_weekly
, clicks_by_markets_daily
Другое решение (без Кафки):
- Есть таблица
clicks_raw
для размещения данных запроса безобработка. - Создание сценария, который будет планироваться каждые 10 минут, и обработка
clicks_raw
таблиц и заполнение таблиц, таких как: clicks_by_markets
, clicks_by_markets_yearly
, clicks_by_markets_weekly
, clicks_by_markets_daily