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

Привет! На кластере реализована следующая архитектура: cronjob -> kafka -> stream table

-> MV -> ReplicatedReplacingMergeTree table.
В kafka могут попадать дублирующиеся записи, которые не нужно записывать в CH.
Нужно построить над конечной таблицей несколько ReplicatedSummingMergeTree MV, сейчас при попадении дубликатов в таблицу данные в MV дублируются.
MV с argMaxState работает медленно ((
Как можно избежать вставки дублирующих записей из kafka?

10 ответов

13 просмотров

КХ тут не поможет. Надо делать до.

Дублирующие записи в разных батчах прилетают в кх? Если в одном, то разве в первом mv их нельзя исключить? Если в разных, то только конечным запросом их убирать (даже если и появилась возможность вешать mv над mv, но replacingmergetree работает в фоне, поэтому поставив над ним summingmergrtree, туда в любом случае улетят дубликаты, так как фон не успеет отработать)

serge- Автор вопроса
Munir
Дублирующие записи в разных батчах прилетают в кх?...

Да, прилетают в разных батчах. Как можно отфильтровать уникальные записи по PK в рамках одного батча с помощью MV?

Munir
Дублирующие записи в разных батчах прилетают в кх?...

Какой фон? Mv над mv над mv получает записи от инсерта. Не важно сколько там глубина. Не от таблицы.

Denny [Altinity]
Какой фон? Mv над mv над mv получает записи от инс...

Сорри, с общим принципом наврал, но с конечным результатом нет.

serge- Автор вопроса
serge
Спасибо!

Сейчас меня опять поругают,) но я бы попробовал (а вдруг сработает) сделать в mv not in из view над таблицей (которая после mv) . Если все оттюнить и вставка не очень масштабная, то есть вероятность, что может помочь.

Munir
Сейчас меня опять поругают,) но я бы попробовал (а...

Ага сработает если один инсерт в день. Ну нельзя проверить есть такой ключ в таблице или нет. Это слишком медленно. И не работает для многопоточности. Два одновременных инсерта навставляют дубликаты.

Denny [Altinity]
Ага сработает если один инсерт в день. Ну нельзя ...

Я не решение предлагал, а вариант, который стоит рассмотреть. Мы не знаем какие данные, какие дубликаты, какой трафик льётся. Поэтому есть вероятность, что дубликаты по дате, и если групбаем убирать внутри батча, то останутся только в соседних. Есть вероятность, что там же и ключи, то выборка двух-трех батчей по ключам будет не слишком дорогая. Ну и есть вероятность, что там один поток на шард.)

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

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

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта