доезжает в течении какого-то времени и постепенно уточняется
(чем более свежие данные, тем большая вероятность что цифры изменятся). Мы собираем из него,
но при выборках не хотим использовать argMax, поэтому не используем replacing. Вместо этого у нас две таблицы:
* cold - таблица с холодными данными, в которую складываем то что считаем уже неизменным
* hot - таблица с горячими данными, с ключом партицирования который зависит от от времени запуска процесса сбора
hot таблица содержит в себе несколько "версий" горячих данных, каждая версия в своей партиции.
Есть 3 вида партиций:
1) самая свежая, в процессе наполнения, только для вставки
2) актуальная, только для выборки
3) остывшая, для переноса в cold
Когда партиция 1 наполнилась, она становится актуальной, предыдущая актуальная постепенно остывает.
Остывшие данные переносим в cold с помощью insert select, после чего в hot делается alter table drop partition для этих данных.
Описал несколько угловато, но, думаю, основная идея понятна.
Хорошо ли так делать или есть какой-то более "правильный" путь?
А почему вы не используете replacing? Нет возможности указать однозначный ключ схлопывания ?
Обсуждают сегодня