Size: a a a

ClickHouse не тормозит

2021 February 04

DC

Denny Crane [not a Y... in ClickHouse не тормозит
раньше пула не было, поэтому проблемы такой не было
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
потом добавили пул и обновление параметров уже непролезло в абстракции, дизайн
источник

RK

Rebrikov Konstantin in ClickHouse не тормозит
Понятно. Большое спасибо!
Главное, что это частный локальный эффект с system.settings. А то я совсем напрягся, что  глобально что-то пошло не так с работой Distributed
источник

SP

Sergey Platonov in ClickHouse не тормозит
хм, INNER JOIN vOwen AS past ON (past.Date >= (vOwen.Date - toIntervalDay(6))) AND (past.Date <= vOwen.Date) не ест
источник

SP

Sergey Platonov in ClickHouse не тормозит
JOIN ON inequalities are not supported
источник

AM

Alexey Milovidov in ClickHouse не тормозит
Den
Привет.

Меня зовут Денис и я работаю в ООО Топвизор. Публикую здесь это объявление с разрешения администратора этого чата. Нам необходим функционал, которого сейчас нет в ClickHouse. К сожалению, кастомная разработка требует саппорта уровня Essential. Вход туда стоит 22 000 000 миллиона рублей в год. Думаю, что разработка может стоить намного порядков дешевле. Уверен, функционал будет полезен не только нам, но и сообществу.



Итак, мы используем ClickHouse и нам не хватает такого функционала:



В MySQL есть понятия UDF - пользовательские функции, написанные на Си
Разыскивается специалист, который сможет добавить такие функции в CH.

Необходимо разработать программу, которая при запуске смотрит в папку и подключает необходимые классы. А в самой программе будет подобный код:

callUDF('filename', 'args')

==

Мы не знаем точно, сколько может стоить такая работа. По поводу сроков выполнения тоже нет определенного понимания. Если вы готовы взяться за эту работу, пожалуйста, напишите мне в личку или на почту den@topvisor.com для обсуждения сроков и стоимости работы.

Спасибо.
UDF в виде функций на C или C++, работающие прямо в пространстве процесса, вряд ли будут реализованы, так как это очень небезопасно и делает очень сложной отладку чужих инсталляций.

Сейчас рассматриваются другие решения, сейчас скину короткое описание...
источник

AM

Alexey Milovidov in ClickHouse не тормозит
Переслано от Alexey Milovidov
Там пять вариантов:

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

AM

Alexey Milovidov in ClickHouse не тормозит
Переслано от Alexey Milovidov
2. Функции в виде подключаемых бинарников, работающих в режиме streaming. Похоже на https://github.com/ClickHouse/ClickHouse/issues/14528
источник

AM

Alexey Milovidov in ClickHouse не тормозит
Переслано от Alexey Milovidov
Это варианты - минимум.
источник

AM

Alexey Milovidov in ClickHouse не тормозит
Переслано от Alexey Milovidov
Первый ок, но мало что можно сделать с его помощью.
Второй позволяет всё, что угодно, но не очень эффективный.
источник

AM

Alexey Milovidov in ClickHouse не тормозит
Переслано от Alexey Milovidov
3. Функции в отдельных процессах (скомпилированных бинарниках), которые используют shared memory для передачи данных столбцов и пайпы для сигнализирования. Недостатки: - сложно сделать, придётся выделять аллокатор у столбцов, чтобы уметь аллоцировать в shared memory; - очень сложно для пользователей, никто не будет использовать, но может быть базой для более простых вариантов.
источник

AM

Alexey Milovidov in ClickHouse не тормозит
Переслано от Alexey Milovidov
4. Функции, работающие в адресном пространстве процесса, но написанные на безопасном языке. Скорее всего на Rust. Недостатки - продумывать и выделять интерфейс для доступа к данным столбцов. Никто в нашей команде не знает Rust. Но полезно для популяризации.

P.S. Python, Go - небезопасные по факту. Про Rust не уверен.
источник

AM

Alexey Milovidov in ClickHouse не тормозит
Переслано от Alexey Milovidov
5. Использование какого-то интерфейса из Apache Arrow для взаимодействия.
источник

AM

Alexey Milovidov in ClickHouse не тормозит
Переслано от Maksim Kita
А какие вообще юз кейс запросы были ?
источник

AM

Alexey Milovidov in ClickHouse не тормозит
Переслано от Maksim Kita
Получается обычными функциями в запросе нет возможности получить необходимый результат эффективно ?
источник

AM

Alexey Milovidov in ClickHouse не тормозит
Переслано от Alexey Milovidov
Иногда просят то, что подходит под пункт 1. То есть, запомнить композицию SQL выражений как функцию.

Но чаще просят в общем виде - чтобы подключать сложные функции, непонятно какие.
источник

AM

Alexey Milovidov in ClickHouse не тормозит
Переслано от Alexey Milovidov
Да, в SQL трудно с control flow, сложную логику не напишешь...
источник

AM

Alexey Milovidov in ClickHouse не тормозит
Переслано от Alexey Milovidov
Ещё сложнее, когда функции имеют не только логику, но и зависят от своих данных-справочников.
источник

AM

Alexey Milovidov in ClickHouse не тормозит
Переслано от Alexey Milovidov
Под это идеально подойдёт пункт 2.
источник

AM

Alexey Milovidov in ClickHouse не тормозит
Переслано от Alexey Milovidov
Пример: функция для перевода hostname в IP-адрес. То есть, она медленная, ходит по сети куда-то... Но значения можно кэшировать. Кстати, это реализуемо уже с помощью executable словарей.
источник