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

Появился вопрос по движку ReplacingMergeTree. Можно ли понять хотя бы

примерно через какое время он должен произвести мердж данных и удалить дубли?

9 ответов

24 просмотра

расчитывайте что это никогда не произойдёт и пишите запросы исходя из этого

это может и не произойти, надо делать или OPTIMIZE ... FINAL, но все равно это не даст гарантии, или в запросе указывать к таблице на движке ReplacingMergeTree SELECT...FINAL. В идеале еще стоит предусмотреть логику работы с дублями на стороне приложения

Vaska-Kasatka Автор вопроса
Konstantin Ilchenko
расчитывайте что это никогда не произойдёт и пишит...

А почему так может быть? Изучал, что применять постоянно optimize не очень хорошая идея. Учитывая автоматическую вставку, то и optimize нужно будет учитывать при крон запросе. А если не делать постоянно optimize, то по итогу база будет очень быстро расширяться засчет таблицы с дублями, хотя эти дубли как раз не нужны

Vaska Kasatka
А почему так может быть? Изучал, что применять пос...

база не будет расширяться, постепенно дубли будут схлопываться. Но до конца это скорее всего не произойдёт и какой-то процент дублей всётаки останется. Поэтому запросы на выборку надо писать исходя из того что надо финальную дедупликацию провести Техники дедубликации https://kb.altinity.com/engines/mergetree-table-engine-family/replacingmergetree/ https://kb.altinity.com/altinity-kb-queries-and-syntax/altinity-kb-final-clause-speed/

Vaska-Kasatka Автор вопроса
Konstantin Ilchenko
база не будет расширяться, постепенно дубли будут ...

Понял, спасибо за ответ! Я пока что тестирую данный функционал и вижу, что при двойной вставке одних и тех же данных таблица по памяти увеличилась в два раза, соответственно, предположил, что так будет каждый раз

Vaska Kasatka
Понял, спасибо за ответ! Я пока что тестирую данны...

важно ещё понимать что схлопывание происходит только в пределах одной партиции

Vaska-Kasatka Автор вопроса
Konstantin Ilchenko
важно ещё понимать что схлопывание происходит толь...

Как я понимаю, проблему с дубликацией данных в идеале нужно учитывать на уровне приложения при записи данных в бд. Но не подскажете, какие могут быть бэст кейсы, когда данные записываются из внешнего источника (из Mysql с помощью интеграционной таблицы). В данный момент искал любые способы инсертить оттуда всю таблицу, но на уровне бд в клике ограничить появление дублей, чтобы только новые уникальные записи появлялись.

Vaska Kasatka
Как я понимаю, проблему с дубликацией данных в иде...

если данных не много, то проще кроном с нуля перезаписывать если что-то посложней можно смореть в сторону MaterializedMySQL движка или Debezium(CDC)

Vaska-Kasatka Автор вопроса
Konstantin Ilchenko
если данных не много, то проще кроном с нуля перез...

Пробовал MaterializedMySQL, к сожалению, он не работает с MariaDB Про Debezium не слышал, посмотрю, спасибо

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

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

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
Кибер Бомж
8
Карта сайта