
Dmitry
26.06.2018
10:38:38
сбрасывать после прочистки

Ihor
26.06.2018
10:39:07
Может уже задавали этот вопрос, но я спрошу еще раз. Как скейлить кликхаус, на данный момент есть 3 шарда по 2 реплики в каждом, нужно добавлять шарды или реплики?

Kirill
26.06.2018
10:41:38

Ihor
26.06.2018
10:42:26

Google

Kirill
26.06.2018
10:43:03

Ihor
26.06.2018
10:46:12
Что значит склеиться?
Масштабироватся, увеличивать размер кластера. Текущий кластер достаточно нагружен и запаса по ресурсам почти не осталось, вопрос в том как правильно добавить серверов в кликхаус кластер?

Kirill
26.06.2018
10:47:05

Ihor
26.06.2018
10:47:24

Kirill
26.06.2018
10:49:40
Надо смотреть запросы в первую очередь и то, как у вас данные лежат. Если "ничего не помагает" то в случае памяти реплики не помогут, можно попробовать разбить данные на более мелкие куски, хотя это и странно, возможно нужно просто правильно настройки выставить

Ihor
26.06.2018
10:50:40

Aleksandr
26.06.2018
11:31:55
Здравствуйте. Изучаю сейчас словари и не могу понять правильно ли я понимаю словари или нет. В КХ в таблице есть поле status_id UInt8 , в MySQL есть другое поле с 3 колонками: id, name, description хотелось бы что бы при выборке с КХ вместо status_id подставлялось name с таблицы в MySQL , но не могу понять что тогда нужно писать в настройке: <where> или его можно просто не заполнять?
и то что разные типы данных в КХ и в MySQL это проблема или нет?

Tima
26.06.2018
11:34:23

Alexey
26.06.2018
11:34:59

Edya
26.06.2018
11:35:18
спасибо!

Aleksandr
26.06.2018
11:35:27
имеется ввиду то что в КХ это UInt8 а в мускуле это int(11)

Tima
26.06.2018
11:37:03
В конфиге можно указать правило преобразования, так что не должно быть проблем

Google

nikita
26.06.2018
11:38:17
подскажите, для ReplacingMergeTree есть "новая" форма записи, при создании, через partition, order by и settings, как для MergeTree:
create materialized view ...
engine = MergeTree
partition by ...
order by (...)
settings index_granularity = 8192

Aleksandr
26.06.2018
11:39:23
спасибо, буду дальше разбираться ?

Kirill
26.06.2018
12:24:23

Alexey
26.06.2018
12:25:17

Vladimir
26.06.2018
12:26:19

Kirill
26.06.2018
12:28:04

Aleksandr
26.06.2018
12:29:50
Как так ?
в мускуле таблица проектировалась давно и под одно кол-во записей, а по факту оказалось совершенно другое кол-во, сейчас проектируем таблицу в КХ и поняли что смысла в int(11) в КХ нету, достаточно будет UInt8
а обновлять в мускуле таблицу как обычно времени нету ?
А подскажите пожалуйста еще такой момент, как лучше хранить user agent?

Tima
26.06.2018
12:36:12

Alexey
26.06.2018
12:37:03
А подскажите пожалуйста еще такой момент, как лучше хранить user agent?
String
Но - для всего, что вы можете из него вычислить, стоит сделать ещё дополнительно отдельные аккуратные столбцы - это сильно ускорит запросы по этим параметрам. Например, у нас это - BrowserID UInt16, OSID UInt16, MobilePhoneVendor UInt16, MobilePhoneModel String, BrowserVersion1 UInt16, BrowserVersion2 UInt16, ...

Aleksandr
26.06.2018
12:38:04
понял, спасибо большое, в целом так и думал

Victor
26.06.2018
12:38:18
String
Но - для всего, что вы можете из него вычислить, стоит сделать ещё дополнительно отдельные аккуратные столбцы - это сильно ускорит запросы по этим параметрам. Например, у нас это - BrowserID UInt16, OSID UInt16, MobilePhoneVendor UInt16, MobilePhoneModel String, BrowserVersion1 UInt16, BrowserVersion2 UInt16, ...
доклад был у вас.
Про эффективную работу с КХ, чтоль.
Там было немного о хранении UA


Alexey
26.06.2018
12:38:34
Привет!
Подскажите, в чем грабли:
если стартовать КХ с выводом в консоль, все ок:
sudo clickhouse-server start —config-file=/etc/clickhouse-server/config.xml
а вот если как демона:
sudo service clickhouse-server start —config-file=/etc/clickhouse-server/config.xml
то сервер завершается, толком не стартовав:
2018.06.26 12:32:37.327909 [ 4 ] <Information> Application: Received termination signal (Interrupt)
Полный лог:
2018.06.26 12:32:19.244877 [ 1 ] <Information> : Starting daemon with revision 54385
2018.06.26 12:32:19.247361 [ 1 ] <Information> Application: starting up
2018.06.26 12:32:19.250623 [ 1 ] <Debug> Application: Set max number of file descriptors to 1048576 (was 1024).
2018.06.26 12:32:19.250637 [ 1 ] <Debug> Application: Initializing DateLUT.
2018.06.26 12:32:19.250645 [ 1 ] <Trace> Application: Initialized DateLUT with time zone `UTC'.
2018.06.26 12:32:19.251261 [ 1 ] <Debug> Application: Configuration parameter 'interserver_http_host' doesn't exist or exists and empty. Will use 'testch1' as replica host.
2018.06.26 12:32:19.252195 [ 1 ] <Debug> ConfigReloader: Loading config `/etc/clickhouse-server/users.xml'
2018.06.26 12:32:19.254327 [ 1 ] <Information> Application: Loading metadata.
2018.06.26 12:32:19.258321 [ 1 ] <Information> DatabaseOrdinary (system): Total 0 tables.
2018.06.26 12:32:19.258335 [ 1 ] <Information> DatabaseOrdinary (system): Starting up tables.
2018.06.26 12:32:19.261874 [ 1 ] <Information> DatabaseOrdinary (default): Total 0 tables.
2018.06.26 12:32:19.261889 [ 1 ] <Information> DatabaseOrdinary (default): Starting up tables.
2018.06.26 12:32:19.261975 [ 1 ] <Debug> Application: Loaded metadata.
2018.06.26 12:32:19.262367 [ 2 ] <Debug> DDLWorker: Started DDLWorker thread
2018.06.26 12:32:19.262702 [ 1 ] <Information> Application: Listening http://[::1]:8123
2018.06.26 12:32:19.269322 [ 1 ] <Information> Application: Listening tcp: [::1]:9000
2018.06.26 12:32:19.269361 [ 1 ] <Information> Application: Listening interserver http: [::1]:9009
2018.06.26 12:32:19.269384 [ 1 ] <Information> Application: Listening http://127.0.0.1:8123
2018.06.26 12:32:19.269403 [ 1 ] <Information> Application: Listening tcp: 127.0.0.1:9000
2018.06.26 12:32:19.269420 [ 1 ] <Information> Application: Listening interserver http: 127.0.0.1:9009
2018.06.26 12:32:19.269640 [ 1 ] <Information> Application: Available RAM = 7.79 GiB; physical cores = 4; threads = 4.
2018.06.26 12:32:19.269651 [ 1 ] <Information> Application: Ready for connections.
2018.06.26 12:32:19.354425 [ 2 ] <Trace> ZooKeeper: initialized, hosts: 172.19.161.109:2181,172.19.161.108:2181,172.19.161.82:2181
2018.06.26 12:32:19.450133 [ 2 ] <Debug> DDLWorker: Processing tasks
2018.06.26 12:32:19.452768 [ 2 ] <Debug> DDLWorker: Waiting a watch
2018.06.26 12:32:21.271772 [ 3 ] <Debug> ConfigReloader: Loading config `/etc/clickhouse-server/config.xml'
2018.06.26 12:32:37.327909 [ 4 ] <Information> Application: Received termination signal (Interrupt)
2018.06.26 12:32:37.328029 [ 1 ] <Debug> Application: Received termination signal.
2018.06.26 12:32:37.328050 [ 1 ] <Debug> Application: Waiting for current connections to close.
2018.06.26 12:32:38.795104 [ 1 ] <Debug> Application: Closed all listening sockets.
2018.06.26 12:32:38.795142 [ 1 ] <Debug> Application: Closed connections.
2018.06.26 12:32:38.795495 [ 1 ] <Information> Application: Shutting down storages.
2018.06.26 12:32:38.798538 [ 1 ] <Debug> Application: Shutted down storages.
2018.06.26 12:32:38.799510 [ 1 ] <Debug> Application: Destroyed global context.
2018.06.26 12:32:38.799631 [ 1 ] <Information> Application: shutting down
2018.06.26 12:32:38.799642 [ 1 ] <Debug> Application: Uninitializing subsystem: Logging Subsystem
2018.06.26 12:32:38.799670 [ 4 ] <Information> BaseDaemon: Stop SignalListener thread


Aleksandr
26.06.2018
12:39:54
проверьте доступ к папке с clickhouse
запускаете вы скорее всего от имени root
а демон стартует (как минимум под debian) от имени clickhouse

Maxim
26.06.2018
12:41:24
Привет, есть какой-то движок, который не позволит одинаковые записи инсертить в таблицу по первичному ключу?

Alexey
26.06.2018
12:43:27


Kirill
26.06.2018
12:45:02

Google

Victor
26.06.2018
12:46:15
Такого движка нет
а если ReplacingMergeTree с версией, которая будет уменьшаться со временем?

Kirill
26.06.2018
12:46:48
Он со временем по PK удалит дубликаты

Victor
26.06.2018
12:49:46
CollapsingMergeTree я ещё не познал, кейса придумать не могу

Alexey
26.06.2018
12:51:33

Aleksandr
26.06.2018
12:51:54
не за что ?

nikita
26.06.2018
12:54:09


Michal
26.06.2018
13:02:32
А подскажите пожалуйста еще такой момент, как лучше хранить user agent?
А мы сделали словарь с UserAgent'ами, перед вставкой в КХ. В качестве ключа - xxHash( user_agent ) + counter (для предотвращения колизий в хэше). Специфика useragentов такова что при всем их разнообразии бОльшая часть трафика создается совсем небольшим количество useragent-ов. Туда же в словарь вынесли и дополнительную информацию типа браузер/версия/платформа. Данных сколько-то там миллиардов в мес, в словаре с useragent от начала года несколько десятков млн записей. В Clickhouse настроен как ComplexKeyCache на 150 тысяч записей, сейчас посмотрел - hit_rate примерно 0.98 (маловато). В таком решении есть явные плюсы, но и минусы тоже очевидны (для нас минусы пока вполне терпимы, т.к. аналитики на useragent немного у нас).

Wolf
26.06.2018
13:05:00

Maxim
26.06.2018
13:06:52
Поддерживаю Puma. + Если не ошибаюсь, то кх жмет повторяющиеся записи в столбцах. Так что наличие большого кол-ва одинаковых UA не должно как-то сильно влиять на объем занимаемого места. Я прав?

Wolf
26.06.2018
13:09:10
ну просто если вам целый юзер агент не нужен, то проще его не хранить и побить по колонкам данные с него по которым идет выборка , а так все данные жмутся но в чистом виде юзераагенты все таки довльно разные

Michal
26.06.2018
13:27:14

Andrew
26.06.2018
13:32:17
Скажите, а следующий митап в Берлине еще не запланирован? Имею в виду после 3 числа, чтобы заранее спланировать поездку, а то этот был обьявлен всего за неделю

Alexander
26.06.2018
13:34:21

Andrew
26.06.2018
13:35:07

Alexander
26.06.2018
13:36:00
В шапке канала висит тут с 14го июня.

Maxim
26.06.2018
14:07:21
Какой самый оптимальный способ избавляться от дублей в таблице? Например, делать materialized view поверх таблицы с дистинктом будет ок? Или есть что-то лучше?

Alex
26.06.2018
14:08:47

Maxim
26.06.2018
14:09:58
Нужно чтобы в реалтайме не было дублей. А ReplacingMergeTree запускается периодически, как я понял

Дмитрий
26.06.2018
14:10:21
select с final в неё делайте. Медленнее но без дублей

Google

Дмитрий
26.06.2018
14:14:38
Извиняюсь, это про CollapsingMergeTree, когда дубликаты вы сами контролируете.

Michal
26.06.2018
14:40:07

Maxim
26.06.2018
14:41:09
Мы предполагаем делать матвью с дистинктом / либо с LIMIT N BY

Michal
26.06.2018
14:45:12
Ну матвью работают приблизительно так. Для каждого нового фрагмента данных запускается ваш запрос (с дистинктом) и вставляется в другую таблицу. При следующей вставке история повторяется. Т.е. если вы обещаете что будете всегда вставлять ВСЕ дубликаты одним инсертом - то всё заработает :) Но если это будут 2 инсерта, то в первом матвью выберет все неповторяющиеся и во втором выберет все не повторяющиеся и сделает два инсерта в нижележащую таблицу.
При этом проверять "а не было ли уже этих данных" в нижележащей таблице не будет.

Maxim
26.06.2018
14:46:35
??

Michal
26.06.2018
14:47:00
Это отлично работает если например нужно скопировать отфильтрованные данные. Или сделать агрегацию, но дубликаты удалить таким образом не получится.

Vitaliy
26.06.2018
15:37:21
Подскажите, а механизм Delete в MergeTree уже запилили?

Wolf
26.06.2018
15:44:20
в мастере были

Vitaliy
26.06.2018
15:52:00
в 1.1.54385. нет такой возможности....

Wolf
26.06.2018
15:58:01
ну можно всегда собрать с мастера самому если ждать лень
таймаут увеличить в конфиге

Kirill
26.06.2018
16:13:05

Vladimir
26.06.2018
17:34:01
Господа, а есть возможность как-то гарантировать, что после вставки в таблицу данные сразу отразятся в materialized view?

Дмитрий
26.06.2018
17:36:07

Vladimir
26.06.2018
17:36:47

nikita
26.06.2018
17:36:48
атомарно и синхронно? не может быть

Дмитрий
26.06.2018
17:43:53
Да, должно быть атомарно и синхронно. Из скитаний по коду помню, что сперва идет вставка в привязанные к таблице мат.вью и только затем в основную таблицу

Evgeny
26.06.2018
18:30:23
Коллеги, а кто работает с КХ из ноды - вы какой драйвер используете?

Vladimir
26.06.2018
18:45:30
альпу

Google

Evgeny
26.06.2018
18:46:55
А вы пробовали через него загружать массивы или запрашивать данные через промисы? Судя по коды оно не может работать (у меня и не работает)

Vladimir
26.06.2018
19:16:20
через querying?
у нас работает
но только чтение
и наверное не очень больших объемов

Evgeny
26.06.2018
19:19:44
syncParser: true?

Lex
26.06.2018
20:28:25
Итс лук лайк спам

Vladimir
26.06.2018
20:33:11

Anton
26.06.2018
22:08:49
Всем привет, а есть какой-нибудь способ сделать что-то вроде mysqldump?

Andrey
26.06.2018
22:18:31
формат по желанию

Anton
26.06.2018
22:19:04
Не, ну тут ок, а обратно?)

Andrey
26.06.2018
22:19:44

Anton
26.06.2018
22:19:55
Логично
Спасибо