Данные приходят из разных источников и где-то идут нормальными для КХ пачками по 100к записей раз в 2 секунды, а где-то буквально по 50 записей в сутки. Соответственно, думаю запустить их через общий буфер.
В связи с этим пара вопросов:
1. Я правильно понимаю, что Buffer хранит внутри себя только ещё не записанные в целевую таблицу данные, во все остальные моменты пустой, а при селектах из него просто показывает данные из целевой таблицы? Или для него тоже надо TTL настраивать, если данные должны со временем удаляться?
2. В целевой таблице есть несколько LowCardinality(String) столбцов. Какой тип надо указывать для соответствующих столбцов Buffer?
Ведь для целевой таблицы, насколько я понимаю, КХ хранит не значения, а индексы из созданного на лету словаря, и если я укажу тип LowCardinality(String) для Buffer, то где гарантия, что индексы этих двух словарей совпадут и будут корректно переданы? А если указать String, то вроде как разные типы данных.
А почему не просто MV. ?
Не совсем понял вопрос. MV на что именно? Сейчас есть около 70 таблиц, в часть из которых данные льются нормальными потоками, а где-то по капле в час. Выбор данных же идёт чаще всего сразу из всех. Соответственно, хочу сделать одну таблицу, а все 70 источников перенаправить на единый входной буфер.
Сделайте 70 MV которые пишут в одну таблицу
На первом этапе так и планирую, но этой одной таблицей будет буфер. Просто в целевую таблицу так писать некорректно, насколько я понимаю, ибо периодически будет много мелких вставок за короткое время, что КХ не любит.
Обсуждают сегодня