
Yuri
20.08.2018
13:04:38
можно нанять data scientist, он придумает фрактальную формулу мапинга, которая с веростностью 0.9999 будет давайть тот-же результат. разницв притаких объемах все равно никто не заметит :)

Dmitry
20.08.2018
13:04:38
Кто нибудь знает почему select number from system.numbers limit 0, 2 возращает 2 строки, а select number from system.numbers limit 2, 4 - 4 ??
вопрос отпал

Yuri
20.08.2018
13:06:40
ну вот

Google

Viske
20.08.2018
13:06:40

Yuri
20.08.2018
13:06:43
пустышка!

Denis
20.08.2018
13:06:44
select number+33 from numbers(1000) проще

Станислав
20.08.2018
13:10:54
Господа, а не подскажите, как сгруппировать записи по их позиции в выборке? Нужно посчитать аггрегат на первых 50K записях, от 50К до 100К и так далее.

Yuri
20.08.2018
13:13:44
что-то типа оконных функций?

Станислав
20.08.2018
13:15:08

Yuri
20.08.2018
13:16:15
Window functions are not supported currently, but there are chances that they will appear in the future, in some cases you can find workarounds. Possible directions: parametric aggregate functions, higher-order functions, subselects, and LIMIT BY statements.
For running total, there is a related function
https://clickhouse.yandex/docs/en/functions/other_functions.html#runningdifference-x
Latest release (v1.1.54310-stable) add support for a function runningIncome (not documented yet)
which should work just as runningDifference , but should calculate sum instead of difference. Check that commit: #1427
не смотрел туда?

Евгений
20.08.2018
13:19:28
Кто-нибудь может обьяснить как работает Merge? Это можно рассматривать как добавление одной таблицы в конец другой?
Например у меня есть несколько таблиц с одинаковыми столбцами, и я хочу читать из них как из одной.
А что если добавить таблицу, в которой нет пары столбцов?

Yuri
20.08.2018
13:20:21

Евгений
20.08.2018
13:20:37
Я про движок таблиц Merge

Yuri
20.08.2018
13:21:08
точно, спасибо, а то я заволновлася про upsert :)
спасибо, тоже почитаю для себя

Google

Станислав
20.08.2018
13:22:13
не смотрел туда?
Смотрел, но не могу придумать схему, как это все посчитать одним запросом. Ладно, спс. Попробую сделать виртуальный id, а потом погруппировать по делению на 50К.

Yuri
20.08.2018
13:23:02

Denis
20.08.2018
13:23:29

Евгений
20.08.2018
13:24:01
Ну вообще я знаю ответ на свой вопрос)
Если добавить таблицу без нужных столбцов, то получим DB::Exception: There is no column with name EventType in table.

Yuri
20.08.2018
13:26:19

Евгений
20.08.2018
13:26:28

Denis
20.08.2018
13:27:44
разумнее не делать так чтобы было нужно джойнить

Евгений
20.08.2018
13:27:47
Ничего умнее, чем сделать 5 матвью для каждого события и засунуть все это в Merge, я не придумал. Да вот только есть обьекты, с которыми никаких событий еще не произошло, и они из статистики пропадают(

Yuri
20.08.2018
13:27:48

Евгений
20.08.2018
13:28:07

Yuri
20.08.2018
13:29:05
Да, я понимаю
чтобы тут не пропадало, то просится (в терминах RDBMS) outer join, НО!!!
по моему опыту, надо в бигдате максимально денормализовать все что можно и толкать в одну таблицу сразу такие вещи. у тебя так не прокатит?

Евгений
20.08.2018
13:29:10

Denis
20.08.2018
13:29:32
сделать словарь из таблицы объектов и выбирать из словаря

Yuri
20.08.2018
13:29:33

Евгений
20.08.2018
13:30:09
а что было причиной, если не серкт, такого расщепления?
События регистрируются из топиков в кафке. Переделывать сейчас это уже не получится (как мне кажется), поэтому приходится подстраиваться под это условие
Собственно два топика: построение рекомендации и события с этими же рекомендациями


Mike
20.08.2018
13:35:26
Коллеги, а не подскажете, при сборке под центос 18.10.3 ругается на
/root/clickhouse-rpm/rpmbuild/BUILD/ClickHouse-18.10.3-stable/contrib/zlib-ng/zlib.h:1819:66: error: unknown type name 'va_list'
ZEXTERN int ZEXPORTVA gzvprintf(gzFile file, const char *format, va_list va);
^~~~~~~
gcc 7.3.1, билд поломанный или сборка под центось поломана? :)

Евгений
20.08.2018
13:36:14

Mike
20.08.2018
13:52:23

Евгений
20.08.2018
13:53:37

Google

Mike
20.08.2018
13:56:35

Denis
20.08.2018
13:56:38

Евгений
20.08.2018
14:03:13

Алексей
20.08.2018
14:30:17
коллеги, подскажите ещё раз пожалуйста, а то я что-то совсем в актуальности использования prewhere запутался
1. есть таблица MergeTree(date, (eventId, bannerId, hostId), 8192), части PK интовые
2. выборки идут с фильтрацией по дате, плюс, по частям PK
имеет ли смысл условие по date класть в prewhere?

prll
20.08.2018
14:44:02

Ilyas
20.08.2018
14:44:11
Коллеги, нужна помощь
Выборки с достаточно большим запросом зависают даже на пустой бд.
kill query не может убить такие запросы или делает это очень долго, они продолжают висеть в процесс-листе.
в max_query_size вроде должно влезать: length(query) из system.processes меньше значения max_query_size из system.settings
Может ли быть такое что запись в процесслисте есть, но запрос давно "упал" или не выполняется по какой-то другой причине? Как бы это проверить вообще?

Wolf
20.08.2018
14:46:10
Можно глянуть еррор лог

Denis
20.08.2018
14:47:14
коллеги, подскажите ещё раз пожалуйста, а то я что-то совсем в актуальности использования prewhere запутался
1. есть таблица MergeTree(date, (eventId, bannerId, hostId), 8192), части PK интовые
2. выборки идут с фильтрацией по дате, плюс, по частям PK
имеет ли смысл условие по date класть в prewhere?
имеет если у вас prewhere date охватывает 1-10 дней, (у вас партиционировано помесячно)
если where date несколько месяцев, то не имеет
> MergeTree(date, (eventId, bannerId, hostId), 8192)
> prewhere date = today()
КХ пойдет в один файл(колонку) date, найдет ее партицию, спустится по PK (отфильтрует по PK, по date=today()), найдет отсечки соотвествующие условиям, пойдет в остальные колонки, начнет применять where

Mike
20.08.2018
14:52:35

Алексей
20.08.2018
14:52:45
имеет если у вас prewhere date охватывает 1-10 дней, (у вас партиционировано помесячно)
если where date несколько месяцев, то не имеет
> MergeTree(date, (eventId, bannerId, hostId), 8192)
> prewhere date = today()
КХ пойдет в один файл(колонку) date, найдет ее партицию, спустится по PK (отфильтрует по PK, по date=today()), найдет отсечки соотвествующие условиям, пойдет в остальные колонки, начнет применять where
а когда условие по date охватывает несколько месяцев, подобного сокращения не происходит?

Ilyas
20.08.2018
14:52:50

prll
20.08.2018
14:54:48

Denis
20.08.2018
14:55:25

Mike
20.08.2018
14:55:59

Алексей
20.08.2018
14:56:46
пытаюсь понять "физический" смысл, как это работает

prll
20.08.2018
14:59:20

Denis
20.08.2018
15:00:13
> MergeTree(date, (eventId, bannerId, hostId), 8192)
> prewhere date = today()
КХ пойдет в один файл(колонку) date, найдет ее партицию, спустится по PK (отфильтрует по PK, по date=today()), найдет ОТСЕЧКИ соотвествующие условиям (today, PK), пойдет в остальные колонки только по найденным в date ОТСЕЧКАМ, начнет применять where
>where date = today()
КХ пойдет сразу во все колонки которые нужны в select, найдет партицию по date, спустится по PK (отфильтрует по PK), начнет применять where

Mike
20.08.2018
15:09:13

Ilyas
20.08.2018
15:20:05
подскажите как внешний словарь удалить
из конфигов удалил, кх перезапустил, но словарь в system.dictionaries и пытается обновляться

Google

Alexey
20.08.2018
15:31:33
Подскажите, можно ли в SELECT который в матвью писать более сложные запросы - типа вложенные или джойны? Это ведь будет бить по перфомансу INSERTа?

Roman
20.08.2018
15:35:24
Ребятки, у меня вопрос по алгоритмам B+-Tree и LSM.
Правильно ли я понимаю, что:
1. B+-Tree в отличии от LSM позволяет итерировать ключи только в порядке возрастания (потому что в листьях используется односвязный список)?
2. B+-Tree в среднем даёт лучший результат на чтение, чем LSM. Но если в LSM все лежит в одной SSTable (пусть даже очень большой - 1 Тб.), то он работает лучше на чтение по диапазону, потому что в B+-Tree значения могут быть в разных местах файла?
3. Как работает чтение в LSM по диапазону, когда есть несколько SSTable? Читаем сразу со всех, сортируем и выдаем клиенту?
Спасибо.

Denis
20.08.2018
15:39:36
хорошие вопросы, но при чем тут КХ? Или охота за головами по всему интернету?
в B+-Tree можно как угодно итерироватся кстати, просто спускаемся за log куда надо и идем в любую сторону, ну и да придется весь файл пропрыгать рандомно

Roman
20.08.2018
15:44:36

Pavel
20.08.2018
15:45:10

Roman
20.08.2018
15:46:16

Kirill
20.08.2018
15:49:09
Вам тогда полезными будут лекции Константина:
1) https://www.youtube.com/watch?v=QrNTmBdQMrU
2) https://www.youtube.com/watch?v=u2pju_Hb9Wc

Roman
20.08.2018
15:52:19

Alexander
20.08.2018
16:00:12
Ребят может кто встречал проблему, в версии 1.1.54378 graphite_merge_tree правильно слияние по max делает?
На предыдущих версиях все отлично работало, а на этой булшикт какой то получается

Denis
20.08.2018
16:01:10
Вроде понял, спасибо.
непонятно к чему эти вопросы, во всех субд и btree-то по разному , некоторые (как mysql) хранят сами данные таблицы в PK (index-orgnized-table в терминах oracle-rdbms), остальные не хранят, все хранят в блоках по 4-8-..кб, у некоторых внутри блока еще один btree, у некоторых нет. вот для осознания глубины норы https://habr.com/company/devconf/blog/353682/

Roman
20.08.2018
16:15:44

Aliaksandr
20.08.2018
16:51:27
преимущества lsm - проще в реализации, работает быстрее при вставке большими батчами и при чтении большого количества отсортированных значений, особенно на хранилищах с низкими iops'ами типа HDD
недостатки lsm - перезаписывает одни и те же данные много раз при мержах (aka write amplification), работает медленнее при чтении неотсортированных значений, разбросанных по разным файлам

Roman
20.08.2018
17:04:17

Yuriy
20.08.2018
17:06:26
Скажите, а лимит в 5000 строк на вывод SELECT`ом - это ограничениие кликхауса, HTTP интерфейса или tabix-а, который я использую? Но похоже на ошибку кликхауса, а не табикса

Евгений
20.08.2018
17:10:28

Александр
20.08.2018
17:10:47

Yuriy
20.08.2018
17:10:51
спасибо

Google

Aliaksandr
20.08.2018
17:13:39

Timur
20.08.2018
17:29:43
Есть ли открытый список компаний кто использует клик? Нашел только CERN/Yandex/Cloudflare/LifeStreet. Интересуют европейские/китайские/американские компании

Ivan
20.08.2018
17:46:58

Timur
20.08.2018
17:49:07
Д я понимаю, ищу открытые источники: презентации/митапы. Ищу видео с US PL2018 от Altiniti

Ivan
20.08.2018
17:51:10

Timur
20.08.2018
17:51:25
Спасибо!

Ivan
20.08.2018
17:51:57

Timur
20.08.2018
17:52:20
презенташку делаю. Нужен список компаний кто использует CH

Mike
20.08.2018
17:52:30
Круто видеть знакомые фамилии из Яндекса @blinkovivan

Dmitry
20.08.2018
18:13:47
NOC использует CH

Timur
20.08.2018
18:25:53
Можно ссылку на компанию? В моем понимании noc это network operation center
:)

Michal
20.08.2018
18:59:08
:)
А еще ClickHouse используют в xHamster :)

Timur
20.08.2018
19:00:27
Спасибо

Michal
20.08.2018
19:02:36
https://ru.wikipedia.org/wiki/ClickHouse

Ivan
20.08.2018
19:18:28
а почему статья к удалению? надеюсь плашку снимут

Andrey
20.08.2018
19:22:10
https://ru.wikipedia.org/wiki/%D0%92%D0%B8%D0%BA%D0%B8%D0%BF%D0%B5%D0%B4%D0%B8%D1%8F:%D0%9A_%D1%83%D0%B4%D0%B0%D0%BB%D0%B5%D0%BD%D0%B8%D1%8E/15_%D0%B0%D0%B2%D0%B3%D1%83%D1%81%D1%82%D0%B0_2018#ClickHouse