Паттерны хранения и обработки данных в ClickHouse / Александр Крашенинников (Badoo)

preview_player
Показать описание
Приглашаем на конференцию Saint HighLoad++ 2024, которая пройдет 24 и 25 июня в Санкт-Петербурге!
--------
--------
Saint HighLoad++ 2019

Тезисы и презентация:

В последние два года ClickHouse стал одним из лидирующих инструментов в задачах OLAP. Высокая производительность в совокупности с встроенными средствами масштабирования и отказоустойчивости дают широкие возможности по построению систем обработки данных. Однако при всём богатстве инструментов, есть ряд нюансов, которые стоит учитывать при проектировании хранилищ - движки хранения данных, система репликации, retention данных.
...
--------
Рекомендации по теме
Комментарии
Автор

Очень круто! Тонны полезной информации, спасибо докладчику! Интересное решение с key-value хранением данных, вместо классической денормализации.

godfreys
Автор

приятно смотреть, как уверенный в себе оратор приводит кейсы как они безграмотно используют CH

dtjwbpg
Автор

Очень крутой доклад, спасибо! Пойду думать что из этого применимо у нас.

alexeysokolov
Автор

Вообще не понял что за деградация при > 200 таблиц. Они выбрали супердерьмовый подход и не объяснили почему. Просто > 200 таблиц начинают тормозить?

GP-ezms
Автор

Крутой доклад, спасибо!
Можно уточнить по борьбе с дубликатами из Кафки, есть некоторое непонимание. Есть таблица на кафка движке, если целевая таблица, где не должно быть дублей. Если брать вашу модель с расширение таблицы полями топик и офсет, то я не могу понять где и как делать проверку офсета.
Цепочка такая: кафка - матвью в целевую таблицу - целевая таблица - матвью в таблицу последнего сдвига по топику - таблица топик-офсет
Я стараюсь проверку использовать в первой матвью, но блок WITH с подзапрос не работает, так как нужно же фильтровать по топику, а клик не видит в блоке Вирт столбец _topic, а Inner join боюсь положит вставку.
Не могли бы подсказать этот момент?

И еще вопрос, почему не учитываются партишены?

rostislavratushniy
Автор

интересно, если вы делаете сначала select max()..., а потом insert max+1 и без транзакций, как у вас получается избежать дублирования id в insert?

DennisPush
Автор

К названию. А патерны и образцы -это одно и тоже?

frvlad