
nikoinlove
31.01.2017
23:06:34
а зукипер к такому количеству серверов особенный какой-то нужен, тоже большой?)

Alexey
31.01.2017
23:08:42
Нет, хватает обычного, на три сервера. Причём, он обслуживает в сумме много кластеров - где-то около 600 серверов. В ZK где-то в районе 10 млн. нод получается. Какая-то настройка ZK нужна (и какие-то специальные параметры запуска Java, но я их не помню).

Evgeniy
31.01.2017
23:37:53
а есть планы на spil to disk? чтобы медленно но не OOM

Alexey
31.01.2017
23:39:32
Для GROUP BY уже есть приличный spill to disk - см. max_bytes_before_external_group_by в документации. Также есть для ORDER BY (работает слегка медленнее, чем мог бы). А для JOIN, IN, DISTINCT - нет.

Google

Igor
01.02.2017
06:27:35
а почему некоторые теги в репозитории имеют названия типа v1.1.4?)

Vladimir
01.02.2017
10:43:07
Добрый день, подскажите почему у меня файлики с uint8 занимают в десятки раз больше места, чем date, datetime? Я думал они должны быть соизмеримы. MergeTree таблица

Dmitry
01.02.2017
10:54:14
скорее всего потому, что в uint8 много уникальных значений и они хуже сжимаются

Igor
01.02.2017
11:06:41
обновил формулу для homebrew, кто-нибудь может потестить у себя?
на 10.11.6 у меня норм собирается
https://github.com/hatarist/homebrew-clickhouse

Dmitry
01.02.2017
11:12:52
Добрый день, не подскажите, как из DateTime вытащить только время?
в toString нельзя указать формат, а алгоритм работы функции toHour, зависит от летнего/зимнего времени

Dmitry
01.02.2017
11:14:19
а что значит только время? в каком формате?

Igor
01.02.2017
11:18:35
:) SELECT now() AS dt, substring(toString(dt), 12, 8) FORMAT CSV
"2017-02-01 14:17:04","14:17:04"
а так в лоб не подойдет?

Dmitry
01.02.2017
11:19:25
мне нужно сделать "периодический" фильтр, т.е. дата не важна, а важен временной период

Igor
01.02.2017
11:19:51
а, не подойдет
А toTime()?

f1yegor
01.02.2017
11:20:19
какая была настройка чтобы читать несколько реплик на одном шарде при distributed table?

Dmitry
01.02.2017
11:21:31

f1yegor
01.02.2017
11:21:35
нашел. max_parallel_replicas
@milovidov_an Would you suggest a single beefy machine instead of a cluster of machines?

Google

Pavel
01.02.2017
11:47:48
это вопрос не к разработчикам я думаю, это скорее архитектурный момент
распределенная установка дает много преимуеств, но при этом имеет кучу недостатков :)

papa
01.02.2017
11:59:05

Dmitry
01.02.2017
12:00:36
toHour возращает число взависимости от летнего/зимнего времени?

Valeriy
01.02.2017
12:08:45
нашел. max_parallel_replicas
Есть подозрение, что если Distributed-таблица располагается на том же сервере, что и одна из входящих в нее реплик, то max_parallel_replicas игнорируется, происходит просто локальное чтение.

papa
01.02.2017
12:25:03

Vladislav
01.02.2017
12:32:30

Igor
01.02.2017
12:38:06
блин, и правда. спасибо, исправил

Vladislav
01.02.2017
12:52:40
Scanning dependencies of target clickhouse
[100%] Building CXX object dbms/src/Server/CMakeFiles/clickhouse.dir/main.cpp.o
[100%] Linking CXX executable clickhouse
[100%] Built target clickhouse
==> Cleaning
==> Finishing up
ln -s ../Cellar/clickhouse/1.1.54144/bin/clickhouse-client clickhouse-client
ln -s ../Cellar/clickhouse/1.1.54144/bin/clickhouse-server clickhouse-server
==> Caveats
The configuration files are available at:
/usr/local/etc/clickhouse-client/
/usr/local/etc/clickhouse-server/
The database itself will store data at:
/usr/local/var/clickhouse/
If you're going to run the server, make sure to increase maxfiles limit:
https://github.com/yandex/ClickHouse/blob/master/MacOS.md
==> Summary
? /usr/local/Cellar/clickhouse/1.1.54144: 7 files, 55.3M, built in 12 minutes 33 seconds
workers-MacBook-Pro:build user$
:)

Igor
01.02.2017
12:53:20
уии, спасибо большое. у вас 10.12?

Vladislav
01.02.2017
12:54:13
10.12.3 (16D32)

prll
01.02.2017
13:05:59
Вчера наконец было закоммичено изменение имени пользователя в пакете с metrika на clickhouse и пути с /opt/clickhouse на /var/lib/clickhouse . костыли для плавного перехода есть.

Алексей
01.02.2017
13:50:25
Господа, а как дебажить
Code: 293, e.displayText() = DB::Exception: Cannot authenticate in MongoDB: server returned response for 'authenticate' command that has field 'ok' missing or having wrong value:
при том что логопас верный и это primary
а если попробовать с хоста напрямую через команду mongo --host .... всё пускает

Alexey
01.02.2017
13:54:04

Google

Pavel
01.02.2017
14:02:07
в монге недавно аутенифтицикацию поменяли, там несколько ее типов

Алексей
01.02.2017
14:02:16
на одном сервере работает на другом не работает.
разница в серверах в том что один находится на том же сервере где кликхаус а второй доступен по сети

Alexey
01.02.2017
14:04:46
Да, у нас только один тип поддерживается - тот, который самый старый.
Наверное, для второго сервера включается какая-то другая аутентификация.

Pavel
01.02.2017
14:05:18
можно новую монгу к нему принудить, но там немного магии
нужно находу откатить версию схемы аутентификации на старую и пересоздать юзера
если критично - могу дома найти свои мучения с монгой :)

Alexey
01.02.2017
14:05:54
Я совсем не разбираюсь в Монге, но может быть, можно поставить mongos на localhost, который уже смотрит куда надо.

Pavel
01.02.2017
14:07:07
в монге есть крутой новый драйвер для C++ 11
я им активно пользуюсь и впечатления - очень приятный, он точно умеет новый механизм аутентификации
ну и в отличие mongo-c... ну небо и земля в общем
https://mongodb.github.io/mongo-cxx-driver/mongocxx-v3/tutorial/

Алексей
01.02.2017
14:12:03
вариант с монгой в режиме только арбитр ща проверю. спасибо

Alexey
01.02.2017
14:14:20
в монге есть крутой новый драйвер для C++ 11
Тоже смотрел. Выглядит Ок. Правда так как достаточно много зависимостей, был только вариант его использовать под флагом сборки - то есть, пользователю понадобится собрать его отдельно по инструкции (с совпадающими опциями сборки, влияющими на ABI), а потом явно включать при сборке ClickHouse.
А также был готовый драйвер из Poco. Крайне примитивный, рассчитанный под старую версию протокола. Зато доступен по-умолчанию при сборке, без флагов.

Dmitry
01.02.2017
14:22:18

Google

f1yegor
01.02.2017
14:27:26


Evgeny
01.02.2017
14:33:54
всем привет.
столкнулся с проблемой вставки. больше 10 метров не вставяет одной записью.
eproydakov@eproydakov-HP-ZBook:~$ clickhouse-client —version
ClickHouse client version 1.1.54134.
Табличка
:) create table test ( date Date, str1 String, str2 String, str3 String ) engine = MergeTree(date, (date, str1, str2), 16384);
Генерилка данных.
clang++ -std=c++11 dump.cpp -o gen
dump.cpp
./gen 300000 data.txt
Собственно сама вставлка из консоли.
eproydakov@eproydakov-HP-ZBook:~/workspace$ curl 'http://localhost:8123/?query=INSERT%20INTO%20test%20(date,%20str1,%20str2,%20str3)%20VALUES' —data-binary "@./data.txt"
Code: 27, e.displayText() = DB::Exception: Cannot parse input: expected , before: 6, 'str1', 'str2', 'str290786'), (290787, 'str1', 'str2', 'str290787'), (290788, 'str1', 'str2', 'str290788'), (290789, 'str1', 'str2', 'str290789'), (290790, ': (at row 273087), e.what() = DB::Exception

prll
01.02.2017
14:47:51
пример идеального баг репорта 8)

Alex
01.02.2017
15:14:00
Проблема в первой колонке - она типа Date, но в неё вставляются числа

Pavel
01.02.2017
15:14:27
мммм, офтопный вопрос, а что по поводу клиента для С++ 11/14/17?

Alex
01.02.2017
15:17:10
так как первая колонка не в формате Date, парсер VALUES пытается распарсить число в виде sql-выражения, а он очень ограниченный
если хочется даты вставлять, лучше их писать в виде '2017-02-01'

Alexey
01.02.2017
15:18:16

Pavel
01.02.2017
15:19:49
о, классно! мне в принципе требуется для начала просто загрузка данных в больших батчах
совсем-совсем в идеале со сжатием

Yaroslav
01.02.2017
15:27:31
Вроде нормально вставлять числа, судя по доке

Alex
01.02.2017
15:32:14
можно отключить парсинг выражений в VALUES настройкой input_format_values_interpret_expressions=false
тогда сразу упадёт
Дока скорее про то, как даты хранятся...

Yaroslav
01.02.2017
15:45:36
так если они хранятся как unsigned int и ты ему даешь unsigned int - в чем проблема?)
это выглядит дешевле чем передавать строчку чтобы парсер ее парсил в число

Alex
01.02.2017
16:05:57
тем не менее парсинг из формата 'YYYY-MM-DD' будет эффективнее
и без багов :)

Pavel
01.02.2017
16:07:00
вопрос в преобразовании в этот текстовый формат, я думаю

Google

Pavel
01.02.2017
16:09:23
все семейство функций конвертеров в текстовую дату очень тормозное и тащит за собой кучу snprintf* и прочей ереси
когда-то давно разрабатывал самопальное наколеночное и кривое поделение, которое принимало данные в capnp тупо в бинарном виде и почти сразу же заливало в нем же на диск
с точки зрения оверхеда и лишних перекодирований - было совершенно чудесное

papa
01.02.2017
16:14:07

Pavel
01.02.2017
16:14:52
вопрос в том, как их представлять для залива в чисто бинарных
"Native - The most efficient format. Data is written and read by blocks in binary format. For each block, the number of rows, number of columns, column names and types, and parts of columns in this block are recorded one after another. In other words, this format is "columnar" - it doesn't convert columns to rows. This is the format used in the native interface for interaction between servers, for using the command-line client, and for C++ clients."
хммм, слона и не заметил :/

Roman
01.02.2017
16:22:57
еще RowBinary посмотри

f1yegor
01.02.2017
16:23:44

Valeriy
01.02.2017
16:36:43
Говорят, есть хак - задать "<default_database>default</default_database>" в remote_servers/replica_only/shard/replica. Тогда будет работать распределенно, но вроде только в БД default ходить.

Yaroslav
01.02.2017
16:39:26

Alex
01.02.2017
16:42:30
Попробуйте измерить. Ну или загляните в код: https://github.com/yandex/ClickHouse/blob/master/dbms/src/DataStreams/ValuesRowInputStream.cpp#L46
для пущей эффективности выше предлагали RowBinary - там действительно дата представляет из себя два байта, которые без лишнего парсинга скопируются прямо в значение

Aleksey
01.02.2017
19:02:10
Привет!
А как будет вести себя CollapsingMergeTree, если в составе первичного ключа будут колонки из nested поля?
Схлопывание будет происходить только при полном совпадении всего массива?
И есть ли функции для сравнения массивов? Что-то не нашёл в документации

Alexey
01.02.2017
19:19:28