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

А кто что использует для взаимодействия с clickhouse? видел clickhousex

и clickhouse_ecto, но они мне показались сыроватыми, по крайней мере из коробки не заработали. конкретно сейчас смотрю на pillar, но при нём нет адаптера к ecto.

16 ответов

13 просмотров

ping @santaux, кажется, про твою библиотеку говорят )

Pillar берите, он ок :) на ecto парадигма clickhouse плохо ложится, собственно это и побудило pillar сделать

Igоr-Gоrуаchev Автор вопроса
Anton Lapshin
Pillar берите, он ок :) на ecto парадигма clickhou...

pillar внутренне очень неплох на первый взгляд. у меня как раз вставал ещё один вопрос: если нет адаптера к ecto, то, видимо, есть на то причины?

Igоr Gоrуаchev
pillar внутренне очень неплох на первый взгляд. у ...

да, всё так. по той же причине и к монге нормального адаптера нет. кликхаус только внешне по запросам отчасти похож на sql, внутри-то он вообще иной, с иным форматом работы. на классический sql не ложится никак. ну и потом, юзать кх в том качестве, в котором обычно тот же постгрес используется, на мой взгляд немного некорректно, он про другое

Когда я с коллегами писал либы эти все было ок. Но сейчас вполне возможно это все устарело. Поддержкой и развитием други ребята занимаются, они есть в этом чате. И к ecto адаптер тоже работает на самом деле

Igоr-Gоrуаchev Автор вопроса
Konstantin Grabar
Когда я с коллегами писал либы эти все было ок. Но...

скорее всего, так и есть. спасибо за ответ!

У нас clickhousex, но без ecto.

1. Для работы с кликхаусом надо выстроить пайплайн подготовки батча. Мы это делаем сами 2. Дальше надо подготовить вставку. Мы делаем это в raw binary, код могу пошарить. 3. Отправить это по http

Maksim Lapshin
1. Для работы с кликхаусом надо выстроить пайплайн...

На это бы особенно обратил внимание. Дёргать кликхаус на вставку по одной записи – в ноги стрелять.

Yaroslav Rogov
На это бы особенно обратил внимание. Дёргать кликх...

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

pillar антибезопасный внутри, там запросы строятся через String.replace, так что сами экранируйте инъекции А что не так с clickhousex и clickhouse_ecto, почему они кажутся сыроватыми? clickhousex раньше был кривой но сейчас очень хорошо работает, а clickhouse_ecto в общем случае просто не нужен

Igоr-Gоrуаchev Автор вопроса
Lama Lover
pillar антибезопасный внутри, там запросы строятся...

из коробки у он у меня вообще не завёлся, не отработал даже пример из README. не заработала также авторизация (там в хедере : не должно быть после Basic). не исключаю, что что-то не так делал, либо взял библиотеку не из правильного места.

Maksim Lapshin
там не RowBinary что ли?

RowBinary это формат кодирования данных А сами запросы всё равно текстом отсылаются Так вот в pillar это последовательный String.replace А это значит, что это не только инъекция, а ещё и переполнение памяти может быть

Igоr Gоrуаchev
из коробки у он у меня вообще не завёлся, не отраб...

Надо завести issue Какие версии clickhouse и clickhousex? @ar1ka1 @fried_zucchini

Lama Lover
RowBinary это формат кодирования данных А сами зап...

Там же экранирование параметров, а не вот это вот все) (Думаю, инъекцию сделать не получится) По поводу String.replace не совсем понимаю, в чем проблема? Тут все пишут проекты без String.replace, а кто пишет - в зоне риска?

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

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

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
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
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
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта