
Александр
21.06.2017
18:00:17
Главное что бы ответ лился без буферизации
Сокетом вообще лялька

Igor
21.06.2017
18:02:39

Александр
21.06.2017
18:03:36
Вот в этом и проблема, т.к. стейт не меняется в промежутке, а сразу приходит готовый ответ целиком

Google

Olga
22.06.2017
07:47:45
Привет!
Скажите, пожалуйста, я хочу питоновским скриптом ходить в click house. Нужно ли для этого получать какой-то токен?

Maksim
22.06.2017
07:49:17
нет, логин-пароля достаточно

Olga
22.06.2017
07:49:31
Спасибо!

Aleksandr
22.06.2017
08:43:37
Можно ли как-то изменить primary key на таблице с данными? Или лучше сделать заново импорт?

Александр
22.06.2017
08:44:08
Я не рисковал и переливал данные
Кто подскажет из какой ветки собрать релиз кандиата?

Aleksandr
22.06.2017
08:57:53
спасибо

Julia
22.06.2017
09:05:49
#москва #бд #субд #удаленка #офис
Работа до осени на удаленке, с перспективой в офис
Ищем опытного инженера баз данных в команду. Работа над созданием интересного решения в области аналитики с нуля.
http://constssk.ru
зп до 180к
Что надо делать:
Проектирование структуры БД
Документирование, составление диаграмм связей
Написание SQL запросов
Оптимизация работы БД
Кластеризация работы СУБД
От Вас:
Опыт работы с pgsql большим набором данных
Знание PL/pgSQL
Умеете построить ETL-процесс в крупных хранилищах данных
Можете строить модели данных и оптимизировать запросы в PostgreSQL
Знание Python3, как плюс
Также плюсом будет знания и опыт работы с NoSQL (Clickhouse)
Контакт: в лс пожалуйста

Renat
22.06.2017
09:08:39
все верно, в кликхаусе не классический SQL синтаксис, значит это NoSQL

Александр
22.06.2017
09:23:11
А это нормально, что ./release скрипт ничего не делает вообще? ) Ну, т.е. ни ошибок, ни сообщений, тишина

Alexander
22.06.2017
09:46:53
Коллеги, всем привет.
Вот делаю такой запрос в таблицу КХ
SELECT
hid,
cpa,
aconv_b
FROM dict.conversion_rates
WHERE (hid = 91491) AND (is_moscow = 1)
выводится все как надо, 2 запили по бизнес смыслу
┌───hid─┬─cpa─┬──────────────aconv_b─┐
│ 91491 │ 1 │ 0.03313661847586101 │
│ 91491 │ 0 │ 0.019289985318994004 │
└───────┴─────┴──────────────────────┘
НО, если ставлю вместо hid в 91491 AS hid то выводится около 9000 записей
SELECT
91491 AS hid,
cpa,
aconv_b
FROM dict.conversion_rates
WHERE (hid = 91491)
AND (is_moscow = 1)
при этом в таблице, больше чем 9к записей
Это баг, фича или я что-то не то, в запросе написал? по идея должно же быть также 2 записи, потому что условие в WHERE не изменилось

Александр
22.06.2017
09:49:33
Ну у вас возможно 9к записей только попадают под условие is_moscow

Alexander
22.06.2017
09:49:43
нет, там два условия

Google

Александр
22.06.2017
09:50:08
Все верно. В первом запросе вы берете оригинальный hid из строки и проверяете hid = 91491 и is_moscow = 1
Во втором запросе вы берете в качестве hid значение 91491 для всех строк
И проверяете только is_moscow
Так вот строк с is_moscow может быть всего 9к?

Alexander
22.06.2017
09:50:52
может

Александр
22.06.2017
09:50:58
проверьте select count() from dict.conversion_rates where is_moscow = 1
Если там будет 9к то запрос работает корректно

Roman
22.06.2017
09:52:18
Что будет есть вместо "91491 AS hid" использовать что-то вроде "91491 AS some_custom_name"?

Александр
22.06.2017
09:52:24
Просто в первом запросе данные приходят в виде
hid - 123
hid - 345
hid - 678
Во втором же запросе для всех строк приходит так
hid - 91491
hid - 91491
hid - 91491
Поэтому в первом условии в where нет никакого смысла
Т.к. под where hid = 91491 попадут все строки, далее они отфильтруются уже по второму условию is_moscow

Alexander
22.06.2017
09:53:11
SELECT
91490 AS some_name,
cpa,
aconv_b
FROM dict.conversion_rates
WHERE (hid = 91491) AND (is_moscow = 1)
┌─some_name─┬─cpa─┬──────────────aconv_b─┐
│ 91490 │ 1 │ 0.03313661847586101 │
│ 91490 │ 0 │ 0.019289985318994004 │
└───────────┴─────┴──────────────────────┘
будет нормально

papa
22.06.2017
09:53:13
91491 AS hid,
...
WHERE (hid = 91491)

Александр
22.06.2017
09:53:16
Что и происходит

Alexander
22.06.2017
09:53:17
да, ясно
но я думал условие WHERE должно к столбцам таблицы применяться, а потом уже в результате подставляться названия после AS

Александр
22.06.2017
09:53:59
prewhere применяется до where
еще до того как данные прочитаны вроде как
если where hid = 91491 вынести в prewhere
и оставить select 91491 as hid, то возможно вернет две строки

Google

papa
22.06.2017
09:54:32

Александр
22.06.2017
09:54:33
Но смысл в таких танцах...

Alexander
22.06.2017
09:54:44
да случайно получилось как-то

Александр
22.06.2017
09:54:58
:)

Alexander
22.06.2017
10:04:18
по-моему в Оракле алиасы по другому работают
но там даже удобнее
не надо в GROUP BY или ORDER BY какой-то сложное выражение писать, если там не просто столбец
точнее тут удобнее

papa
22.06.2017
10:07:36
тут можно алиасить (почти) любые выражения в (почти) любых местах запроса, и переиспользовать их в других местах запроса. но возникает проблема с алиасом равным колонке по имени, т.к. при использовании срабатывает ссылка на алиас.

Vladislav
22.06.2017
10:16:07
Привет :) Не подскажете — как Clickhouse отнесётся к тому, что Zookeeper окажется за Loadbalancer? Соответственно в описании кластера будет одна нода, а реально кластер...

Maksim
22.06.2017
10:26:43
Скажите плиз кто использует smi2 php driver. может появился драйвер побыстрее? потому как скорость получения данных у него не фонтан и далека от реально обрабатываемой скорости

Александр
22.06.2017
10:28:33
И возможно медленно в вашем случае он работает из-за отключенного сжатия
У нас сжатие включено по умолчанию
Там же, в соседней репе есть билдер запросов
Сори, не ту ссылку дал
https://github.com/the-tinderbox/ClickhouseClient

Aleksey
22.06.2017
11:27:44
#работа #удаленка #офис
Нужен программист на Yii2/Clickhouse в интересный проект, от 100к. Удаленно.
Подробности в лс.

Bulat
22.06.2017
11:31:36
давайте не будет в этом чате хантить людей, поскольку это чат для обсуждения технических вопросов.

Maksim
22.06.2017
11:36:23
по скорости есть?

Google

Maksim
22.06.2017
11:45:08
У нас сжатие включено по умолчанию
тут не в сжатие дело. а в том что кх присылает результат строкой помоему. а это надо форматнуть в массив или объект что занимает дополнительное время на пост обработку

Александр
22.06.2017
11:45:51
Ну тут как бы разницы не будет. КХ присылает ответ в виде JSON, который разбирается функцией json_decode в обычный ассоциативный массив
Я не знаю о каких скоростях идет речь, но я даже десятки тысяч строк разбираю крайне быстро
на селектах
Думаю, что выгружать сотни тысяч строк из кх в php и дальше че то с ними делать - плохая затея

Maksim
22.06.2017
11:49:55
да согласен. строка по любому должна быть преобразована и любой драйвер делает одно и тоже. надо думать над тем чтобы кх присылал адекватное количество строк тогда и задержек на пост обработку не будет
а про сжатие какое вы говорите. на уровне http ?

Александр
22.06.2017
11:50:18
Да
Это уменьшает latency по сетке

Maksim
22.06.2017
11:50:49
еще большая проблема то что при каждом запросе он заново подключается отключается

Александр
22.06.2017
11:50:56
keep-alive

Maksim
22.06.2017
11:50:59
это создает задержку

Igor
22.06.2017
11:51:02
Можно дампить на php сразу в файл без обработки, в своём драйвере я сделал поток на диск, и можно сразу гнать в gz

Александр
22.06.2017
11:51:42
Я так понял, что проблема не в том, что бы сдампить на диск, а в том, что бы полученные данные обработать
И вот время гидрации полученных данных собственно большое

Maksim
22.06.2017
11:52:01

Александр
22.06.2017
11:52:26
https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%BD%D0%BE%D0%B5_HTTP-%D1%81%D0%BE%D0%B5%D0%B4%D0%B8%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5

Maksim
22.06.2017
11:52:39
и какие проблемы она создаст кроме нагрузки на трафик

Александр
22.06.2017
11:53:06

Google

Maksim
22.06.2017
11:53:10
эту опцию где включить
как сокет пробросить

Fike
22.06.2017
11:53:19
А как именно проявились проблемы со временем?

Александр
22.06.2017
11:53:23
Можно включить в клиенте газла
При инстанциировании самого транспорта можно подменить клиент газла и туда передать нужные опции соединения

Maksim
22.06.2017
11:54:01
в сми2 просто такой штуки не наблюдал
не знаю через что они коннект создают

Александр
22.06.2017
11:54:22
Там обычный curl
У нас тот же curl, только с оберткой в виде guzzle

Maksim
22.06.2017
11:55:12
keep alive будет на каждый запрос?

Kirill
22.06.2017
11:55:19
а пхп теперь умеет keep-alive ? попробуйте тотже запрос, но через https://github.com/davecheney/httpstat и смотрите где ждет