Pull to refresh

Comments 14

Если изначально все события просто писать в канал Kafka из которого ClickHouse сам нативно умеет забирать данные пачками, то будет то же самое, но, без большей части данной статьи.

На самом деле с Kafka в ClickHouse все не просто.
У меня нет опыта практической эксплуатации, чтобы сказать что-либо например в отношении потерь сообщений (проект, что я реализовывал, не смотря на то, что вполне взлетел, так и выбрался из тестов в production :( ).
На всякий случай оставлю здесь еще ссылку на парсер vector.dev, что является альтернативой по вытаскиванию пачками из Kafka и имеющий возможность записи в ClickHouse.
Огромное спасибо, вечером попробую.

только хотел написать kafka + kafka streams/ksql + grafana всё делает это из коробки, без единой строчки кода \ приложений \ ci\di менеджмента \ конфигов.


  • если хайлоуд, то не думаешь о горизонтальном масштабирование, т.к. я вначале статье насчитал около 4 не атомарных \ конфликтных ситуаций с потерей части данных если смотреть у вас с точки зрения гор.масшт., дальше даже считать перестал.
Если установили grafana 7+, то ClickHouse работать не будет.
Около месяца назад в ClickHouse-плагине появилась поддержка grafana 7.
У меня графана 7.0.5, кх работает.
compatibility with grafana 7.x, please use environment variable GF_PLUGINS_ALLOW_LOADING_UNSIGNED_PLUGINS=vertamedia-clickhouse-datasource or allow_loading_unsigned_plugins=vertamedia-clickhouse-datasource in plugins section of grafana.ini


Из коробки не будет работать. Нужен ENV или изменение конфига
У меня из коробки работала графана 7.0.5 с кх плагином 1.9.3.
Но я сейчас решил обновить кх плагин и приплыли :)
Всё опять заработало после добавления «allow_loading_unsigned_plugins=vertamedia-clickhouse-datasource» в grafana.ini, а также появились алерты, а раньше приходилось дублировать графики в mysql-плагин и настраивать алерты там.
engine = MergeTree(date, (date, project, eventName), 8192);
Дату в ключе сортировки лучше в конец поставить. Например так:
engine = MergeTree(date, (project, eventName, date), 8192);

будет лучше сжиматься. Общее правило по ключам: от нискокардинальных полей к более кардинальным. Вроде даже, лучше вместо date поставить created.
У вас синтаксис определения таблицы устаревший, по-моему.

С редисом переусложнили схему, конечно. Если у вас уже есть Кафка, то либо движок таблиц Кафка (как выше написали, хотя он «капризный», так сказать), либо тот же консюмер батчами накапливайте и вставляйте. Это проще и надёжнее.

Спасибо за статью. КХ крутой!
будет лучше сжиматься.

Спасибо, учту.

Если у вас уже есть Кафка, то либо движок таблиц Кафка

У нас rabbitmq. До кафки так руки и не дошли.
будет лучше сжиматься.

Проверил, действительно так и есть.
Размер базы 276.13ГБ.
После пересоздания с новым индексом 264.1ГБ.
Сжалось на ~4.35%
Ага, там ещё можно пооптимизировать. Например, если уникальных значений немного (макс 100 тыс), можно Lowcardinality вместо String. А для memorypeak можно кодек Delta или DoubleDelta попробовать. И вместо алгоритма сжатия lz4 попробовать zstd. Ещё бы от нулабельных полей отказаться.
У вас размер бд уже заметный, сэкономленные гигабайты лишними не будут. Но надо и на запросы смотреть.
Sign up to leave a comment.

Articles