@clickhouse_ru

Страница 391 из 723
Zo zo
17.01.2018
12:58:09
Есть рекламный сервис, хотим переезжать на clickhouse, уже поиграли на тестовом кластере, впечатлились, но пока не очень понятно как его правильно приминить у нас. В частности, у нас такая специфика, что бывают хиты без кликов. Т.е. сначала идет хит (решаем какую рекламу показать), а потом может быть клик. Понятное дело, что потом на освное этих кликов существует много репортов. Вот как это правильно подружить с КХ?

Zo zo
17.01.2018
13:00:10
джоин по hit_id?

Google
Roman
17.01.2018
13:01:40
Да, по нему родимому

Zo zo
17.01.2018
13:01:59
а первичный ключ при этом другой, типа user_id?

Roman
17.01.2018
13:04:41
В нашем случае у нас развесистый первичный ключ и AggregatedMergeTree для дедупликации. Но смысл тот же. Кликов обычно сильно меньше чем показов, плюс у нас не бывает репортов, где все показы джойнятся ко всем кликам

Но при желании можно сделать матвью, если сильно хочется всех на всех

Zo zo
17.01.2018
13:08:06
понял, будем крутить этот момент дальше

и такой вопрос: как вообще можно удалить старое? Нам нет нужды хранить все за годы - 3х месяцев достаточно, а распухания базы конечно хотелось бы избежать

Дмитрий
17.01.2018
13:10:05
https://clickhouse.yandex/docs/en/query_language/queries.html#manipulations-with-partitions-and-parts

Zo zo
17.01.2018
13:11:54
? спсб

Aliaksandr
17.01.2018
13:25:31
У нас примерно та же история, и две отдельные таблицы под показы и клики. В репортах джоин, на 1тб данных и двух репликах работает норм.
Мы все храним в одной таблице, чтобы избегать медленных джойнов по hit_id. Сейчас бы еще сделали партиционирование по типу события дополнительно к дате, чтобы можно было управлять временем жизни отдельных событий. Год назад не было партиционирования по произвольной колонке, поэтому пришлось сделать дополнительные таблицы под определенные типы событий. Выходит, что эти события хранятся одновременно в основной таблице плюс вспомогательной, но в основной они живут меньше

Zo zo
17.01.2018
13:26:49
не совсем понял, как это помгло избежать join on hit_id

Roman
17.01.2018
13:26:49
А что делать, если между показом и кликом проходит полчаса? Это надо как-то события буферизовать

Aliaksandr
17.01.2018
13:27:35
В основной таблице события хранятся несколько месяцев, а не несколько минут :)

Zo zo
17.01.2018
13:30:10
правильно понимаю, что это как @feriat выже предложил с ENUM hit/click?

Google
Aliaksandr
17.01.2018
13:30:55
не совсем понял, как это помгло избежать join on hit_id
Для каких отчетов нужен такой джойн? У нас вроде где-то используется подзапрос на `hit_id global in (select hid ids for clicks in the given interval), но это редкий тип отчета

Страница 391 из 723