примерно через какое время он должен произвести мердж данных и удалить дубли?
расчитывайте что это никогда не произойдёт и пишите запросы исходя из этого
это может и не произойти, надо делать или OPTIMIZE ... FINAL, но все равно это не даст гарантии, или в запросе указывать к таблице на движке ReplacingMergeTree SELECT...FINAL. В идеале еще стоит предусмотреть логику работы с дублями на стороне приложения
А почему так может быть? Изучал, что применять постоянно optimize не очень хорошая идея. Учитывая автоматическую вставку, то и optimize нужно будет учитывать при крон запросе. А если не делать постоянно optimize, то по итогу база будет очень быстро расширяться засчет таблицы с дублями, хотя эти дубли как раз не нужны
база не будет расширяться, постепенно дубли будут схлопываться. Но до конца это скорее всего не произойдёт и какой-то процент дублей всётаки останется. Поэтому запросы на выборку надо писать исходя из того что надо финальную дедупликацию провести Техники дедубликации https://kb.altinity.com/engines/mergetree-table-engine-family/replacingmergetree/ https://kb.altinity.com/altinity-kb-queries-and-syntax/altinity-kb-final-clause-speed/
Понял, спасибо за ответ! Я пока что тестирую данный функционал и вижу, что при двойной вставке одних и тех же данных таблица по памяти увеличилась в два раза, соответственно, предположил, что так будет каждый раз
важно ещё понимать что схлопывание происходит только в пределах одной партиции
Как я понимаю, проблему с дубликацией данных в идеале нужно учитывать на уровне приложения при записи данных в бд. Но не подскажете, какие могут быть бэст кейсы, когда данные записываются из внешнего источника (из Mysql с помощью интеграционной таблицы). В данный момент искал любые способы инсертить оттуда всю таблицу, но на уровне бд в клике ограничить появление дублей, чтобы только новые уникальные записи появлялись.
если данных не много, то проще кроном с нуля перезаписывать если что-то посложней можно смореть в сторону MaterializedMySQL движка или Debezium(CDC)
Пробовал MaterializedMySQL, к сожалению, он не работает с MariaDB Про Debezium не слышал, посмотрю, спасибо
Обсуждают сегодня