@clickhouse_ru

Страница 87 из 723
Gennadiy
12.03.2017
15:31:19
Такое решение задачи очевидно, но может есть уже готовый механизм (Вертика умеет работать с Кафкой "из коробки"). И нет необходимости придумывать свои костыли)

Pavel
12.03.2017
15:31:42
я не слышал про такое

Встает вопрос о том, в каком формата должны быть данные в кафке?

Нужен какой-то контейнер и тип упаковки данных

Google
Pavel
12.03.2017
15:32:50
Текстовое - тормозить будет

Бинарное - потребуется пересборка формата/сериалайзера при правке схемы

Gennadiy
12.03.2017
15:35:33
Будет текстовая (JSON), тк переделывать то что уже взаимодействует с кафка не представляется возможным(

Pavel
12.03.2017
15:36:04
Джейсон в кафку....

"Ну я не знаю"

Gennadiy
12.03.2017
15:36:43
из кафки

Pavel
12.03.2017
15:41:28
мне лично вариант кафки не нравится как таковой

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

и всегда нужно выбирать из двух мест - то, что еще не было уложено в CH и то, что уже уложено

и мержить

а это уже 3 форамта хранения, различных и часто несовместимых между собой

Gennadiy
12.03.2017
15:49:07
Это да...

Pavel
12.03.2017
15:51:29
вдвойне сложнее, когда ты не "типичный data mining"

Google
Pavel
12.03.2017
15:51:44
и у тебя нету этих зукиперов, кафок и прочего

а тупо нужно уложить ивенты в базу

f1yegor
12.03.2017
19:34:26
а какой язык интересует?

Pavel
12.03.2017
19:45:36
язык чего?)

f1yegor
12.03.2017
19:47:04
на каком языке вы хотите выгребать из кафки в кликхаус?

Pavel
12.03.2017
19:47:59
я уже выгребаю, на С++

хотя я отказался от Кафки пока что и заливаю в буфер таблицу, пока данных мало - работает прилично

Vladislav
12.03.2017
20:04:18
Всем привет. А это разве нормально? SELECT number, if(number > 5, number, NULL) AS ifWithNull, if(number > 5, number, 0) AS ifWithoutNull FROM system.numbers LIMIT 10 ┌─number─┬─ifWithNull─┬─ifWithoutNull─┐ │ 0 │ \N │ 0 │ │ 1 │ \N │ 0 │ │ 2 │ \N │ 0 │ │ 3 │ \N │ 0 │ │ 4 │ \N │ 0 │ │ 5 │ \N │ 0 │ │ 6 │ \N │ 6 │ │ 7 │ \N │ 7 │ │ 8 │ \N │ 8 │ │ 9 │ \N │ 9 │ └────────┴────────────┴───────────────┘

Shine
12.03.2017
20:05:39
а nullif такое же выдает? он вроде нормально работал

а так вообще нулы - сырые еще (

сами с нетерпением ждем, когда уже они нормально заработают )

включая nulls last / nulls first

Vladislav
12.03.2017
20:10:15
SELECT number, if(number > 5, number, NULL) AS ifWithNull, if(number > 5, number, 0) AS ifWithoutNull, nullIf(1, NULL) AS nullIfs FROM system.numbers LIMIT 10 ┌─number─┬─ifWithNull─┬─ifWithoutNull─┬─nullIfs─┐ │ 0 │ \N │ 0 │ 1 │ │ 1 │ \N │ 0 │ \N │ │ 2 │ \N │ 0 │ \N │ │ 3 │ \N │ 0 │ \N │ │ 4 │ \N │ 0 │ \N │ │ 5 │ \N │ 0 │ \N │ │ 6 │ \N │ 6 │ \N │ │ 7 │ \N │ 7 │ \N │ │ 8 │ \N │ 8 │ \N │ │ 9 │ \N │ 9 │ \N │ └────────┴────────────┴───────────────┴─────────┘

Не очень понимаю логику nullIf...

Shine
12.03.2017
20:39:52
в вашем кейсе сработает вот так

multiIf(number > 5, NULL, number) AS ifWithNull

Timur
13.03.2017
08:45:08
@garikanet Чем вызвано требование "Пользователь с правами не readonly" для smi2/clickhouse-frontend?

Igor
13.03.2017
09:03:53
принудительная отправка параметра в каждом запросе - max_rowsresult

для того чтобы случайно не получить результат в 50М строк

дополнительно ещё пару параметров передаётся, а если userRO то переназначить их нельзя => ошибка С обновление я выложу правки - чтобы можно было с RO работать

Google
George
13.03.2017
09:59:06
Через ALTER TABLE ADD COLUMN name можно ли добавить колонку в поле Nested, если обращаться через точку?

Timur
13.03.2017
10:18:15
принудительная отправка параметра в каждом запросе - max_rowsresult
Ясно, спасибо за разъяснение. Часть пользователей спокойнее как раз с readonly правами пускать

Dmitry
13.03.2017
10:19:24
можно поставить readonly=2

можно будет переопределять настройки, но нельзя модифицировать данные

Timur
13.03.2017
10:29:57
можно поставить readonly=2
отличная идея, спасибо

Алексей
13.03.2017
10:38:17
а тут есть ребята которые пишут smi2/clickhouse-frontend ?

Igor
13.03.2017
10:56:06
да)

Алексей
13.03.2017
10:57:24
а может знаете proxy режим в планах есть ?

Геннадий
13.03.2017
11:07:03
а может знаете proxy режим в планах есть ?
Мы выставили за прокси и CH и webgui. В хост порт надо писать со слэшем в конце, работает

Алексей
13.03.2017
11:09:07
нее. я немного про другое. я хотел бы что бы фронтенд общение с кликхаусом вел сам. сейчас же он стучится с веб браузера. но у меня нет и не будет возможности использовать его в таком режиме :(

Andrey
13.03.2017
11:15:05
А зачем вам это если не секрет? Чтоб данные авторизации не публиковать?

Алексей
13.03.2017
11:17:44
нет у меня просто кликхауз в сети до которой доступа по порту 8123 нет и не может быть

Andrey
13.03.2017
11:18:13
а iptables? прокинуть порт нельзя?

Алексей
13.03.2017
11:18:19
можно конечно запилить ssh прокси и любые другие извращения, но не хочется

Andrey
13.03.2017
11:18:32
контроля над шлюзом нет?

Алексей
13.03.2017
11:18:44
графана молодец. она делет запросы от себя.

контроля над vpn шлюзом нету да

Andrey
13.03.2017
11:19:36
если есть доступ есть хоть по какому то порту, то можно сделать

Алексей
13.03.2017
11:20:00
есть по 22 и по 443

на обоих что логично висят демоны

Google
Igor
13.03.2017
11:20:30
можно конечно запилить ssh прокси и любые другие извращения, но не хочется
Самый простой вариант nginx + proxy_pass на CH сервер, вроде как кто то такое запускал

Алексей
13.03.2017
11:20:32
ну и вопрос не в следать костылем а в сделать как надо

Andrey
13.03.2017
11:21:05
ну если 443 есть то proxy_pass и все готово

Алексей
13.03.2017
11:23:20
Андрей, спасибо это вариант понятен и прост. однако на мой вгзляд выглядит костылем. мой вопрос был исключительно про корректную реализаицию когда nginx по дороге нету.

Andrey
13.03.2017
11:24:25
Тут скорее проблема с вашей стороны) Т.е. если бы ничего не висело на 443 порту, то можно было бы поменять порт в конфиге clickhouse и никакого nginx не было бы.

если хочется работы aka grafana, то nginx вполне вписывается на место графановского бекенда

Алексей
13.03.2017
11:26:22
ок. ответ понял. не горит вовсе.

Igor
13.03.2017
11:29:34
а может знаете proxy режим в планах есть ?
Да, я планирую, точнее уже делаю серверную версию, что будет : - Автоматическая маршрутизация запроса между MySQL / CH - т/е gui будет уметь работать с mysql ( возможность добавить любую другую sqlLike базу ) - Шаринг запроса + результата - Дашбординг - LDAP auth - Хранение истории всех запросов на сервере - Работа с кластером CH Но срок когда "оно" будет +- в конце весны/начало лета в мечтах:))) Если интересно вот мой kanban/roadmap: https://tree.taiga.io/project/isublimity-chg/kanban

Алексей
13.03.2017
11:30:33
@garikanet спасибо! здорово.

как я говорю не горит вовсе и как делать обертки понятно. но хочется без оберток.

Roman
13.03.2017
11:35:37
похоже на новую графану)

prll
13.03.2017
11:54:17
кстати clickhouse теперь умеет быть https сервером, но надо немного шаманства с сертификатами

Pavel
13.03.2017
11:56:00
когда ждать http2? :)

prll
13.03.2017
11:56:35
как только он в poco появится ;)

а зачем он нужен ?

Pavel
13.03.2017
11:56:55
боюсь, что только для галочки

nikoinlove
13.03.2017
11:57:10
слоу-poco

Pavel
13.03.2017
11:57:12
хотя встроенное сжатие может быть полезно, наверное, при активном обмене запросами

Igor
13.03.2017
11:59:44
так сжатие и так есть

https://github.com/yandex/ClickHouse/blob/master/dbms/tests/queries/0_stateless/00302_http_compression.sh

Google
Pavel
13.03.2017
12:00:33
да я не вижу смысла, признаться

это ж не кастомер фейсинг, пофигу что там летает :)

Andrey
13.03.2017
12:41:17
а куда сертификаты класть для https?

Igor
13.03.2017
12:43:21
да куда угодно в конфиге же указать можно https://github.com/yandex/ClickHouse/blob/1af6311a9974fbbd7e5c5c9d14dd69cb9ee34686/dbms/src/Server/config.xml

по умолчанию server.crt и server.key, видимо, в той же папке, где и config.xml серверный

Andrey
13.03.2017
13:36:57
Добрый день. Пробовал фичу параллельного исполнения запроса между репликами - не удалось получить прирост производительности по сравнению с вариантом без параллелизма. При этом ключ сэмплирования - случайное UInt16 и сэмплированные запросы идут быстрее обратно пропорционально доле сэмпла (для сэмпла 0.1 запрос в 10 раз быстрее, чем по всем данным). Есть ли рекомендованная конфигурация, чтобы и репликацию включить, и запрос полноценно параллелился между репликами? P.S. Если я верно понял, при выполнении запросов вида SELECT sum(metric), dimensions... FROM fact group by dimensions... по Distributed таблице, он сначала агрегируется на шардах, входящих в таблицу, а затем результаты агрегируются на ноде, на которой находится Distributed таблица. Создалось впечатление, что распараллеливание по репликам работает иначе (все данные для агрегации поднимаются параллельно с реплик и пересылаются по сети на одну ноду). Есть ли возможность сделать, чтобы работало так же, как и при шардировании?

Плюс ещё вопрос: есть ли способ получить из ClickHouse план исполнения запроса или что-то вроде того?

Alexey
13.03.2017
14:00:03
Добрый день. Пробовал фичу параллельного исполнения запроса между репликами - не удалось получить прирост производительности по сравнению с вариантом без параллелизма. При этом ключ сэмплирования - случайное UInt16 и сэмплированные запросы идут быстрее обратно пропорционально доле сэмпла (для сэмпла 0.1 запрос в 10 раз быстрее, чем по всем данным). Есть ли рекомендованная конфигурация, чтобы и репликацию включить, и запрос полноценно параллелился между репликами? P.S. Если я верно понял, при выполнении запросов вида SELECT sum(metric), dimensions... FROM fact group by dimensions... по Distributed таблице, он сначала агрегируется на шардах, входящих в таблицу, а затем результаты агрегируются на ноде, на которой находится Distributed таблица. Создалось впечатление, что распараллеливание по репликам работает иначе (все данные для агрегации поднимаются параллельно с реплик и пересылаются по сети на одну ноду). Есть ли возможность сделать, чтобы работало так же, как и при шардировании?
При распараллеливании по репликам, реплики работают как отдельные шарды, с которых читается соответствующая часть сэмпла данных. То есть, ускорение должно быть таким же как при сэмплировании (за исключением деталей - передача большего количества данных по сети, суммирование случайных задержек при использовании большого количества серверов). Было бы интересно узнать, почему в вашем случае это не так. Надо больше подробностей. Вопрос - а сколько сейчас шардов и реплик?

Alexey
13.03.2017
14:01:36
Плюс ещё вопрос: есть ли способ получить из ClickHouse план исполнения запроса или что-то вроде того?
Что-то похожее на план выполнения запроса есть в логе - смотрите по словам Query pipeline: Там довольно скудная информация, к тому же этот план выводится по части запроса на локальном сервере.

Пробовал на конфигурациях 2 шарда по 2 реплики на каждый и 1 шард с 4 репликами.
Можно ли привести конфигурацию таблиц, конфигурацию кластера и примеры запросов с временем выполнения? Можно в почту на clickhouse-feedback. Вдруг получится догадаться.

Renat
13.03.2017
14:06:52
Добрый день. Пробовал фичу параллельного исполнения запроса между репликами - не удалось получить прирост производительности по сравнению с вариантом без параллелизма. При этом ключ сэмплирования - случайное UInt16 и сэмплированные запросы идут быстрее обратно пропорционально доле сэмпла (для сэмпла 0.1 запрос в 10 раз быстрее, чем по всем данным). Есть ли рекомендованная конфигурация, чтобы и репликацию включить, и запрос полноценно параллелился между репликами? P.S. Если я верно понял, при выполнении запросов вида SELECT sum(metric), dimensions... FROM fact group by dimensions... по Distributed таблице, он сначала агрегируется на шардах, входящих в таблицу, а затем результаты агрегируются на ноде, на которой находится Distributed таблица. Создалось впечатление, что распараллеливание по репликам работает иначе (все данные для агрегации поднимаются параллельно с реплик и пересылаются по сети на одну ноду). Есть ли возможность сделать, чтобы работало так же, как и при шардировании?
Возможно с каждой реплики/шарда получается очень большой промежуточный результат. Если все данные по вашему group by доступны на одной ноде, то попробуйте переписать запрос с distributed_group_by_no_merge

Dmitriy
13.03.2017
14:51:59
Привет. А можите направить меня как лучше в кластере удалять по месяцам?

Aleksey
13.03.2017
14:59:10
Добрый! Как будет обрабатываться вот такой запрос select description,price from goods where price>50 если я правильно понимаю то сначала КХ достанет столбец price в память и найдет записи где ценник больше 50 и только потом достанет соотвествующие куски из столбца description.... Или оба столбца будут сразу подниматься в память? (предполагаю что эти столбцы не входят в индекс и description тектовый с количеством знаков от 50 до 150 символов)... Или другими словами поддерживает ли КХ late materialization?

Vladislav
13.03.2017
15:01:58
в кх есть where, а есть prewhere

в документации описано было, как работают

Aleksey
13.03.2017
15:05:11
hamper ?
13.03.2017
16:33:13
А на кх какая лицензия? А то я в документации что-то не нашел.

Andrey
13.03.2017
16:34:16
apache 2

https://github.com/yandex/ClickHouse/blob/master/LICENSE

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