@clickhouse_ru

Страница 627 из 723
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
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? Это можно рассматривать как добавление одной таблицы в конец другой? Например у меня есть несколько таблиц с одинаковыми столбцами, и я хочу читать из них как из одной. А что если добавить таблицу, в которой нет пары столбцов?

Евгений
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
Я про движок таблиц Merge
присоединяюсь к вопросу!!!

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

Евгений
20.08.2018
13:26:28
там можно поля перечислить или написать create table xxx as narrowest_table engine=Merge(currentDatabase(), '^xx')
Ну это-то понятно, в документации все написано. В общем-то вопрос такой: Есть таблица с обьектами. У каждого обьекта три айдишника. Также есть таблица с событиями этих обьектов. Хочу заджойнить две эти таблицы так, чтобы получилось: id1 id2 id3, информация об объекте, информация о событии. Как это разумнее сделать?

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

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

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
чтобы тут не пропадало, то просится (в терминах RDBMS) outer join, НО!!! по моему опыту, надо в бигдате максимально денормализовать все что можно и толкать в одну таблицу сразу такие вещи. у тебя так не прокатит?
Да оно прокатывало, когда мигрировал данные. А когда начал делать регистрацию новых евентов - понял что ну никак не получится писать сразу всю инфу об обьекте. Только один из трех айдишников

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

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
сделать словарь из таблицы объектов и выбирать из словаря
Словарь же в оперативке хранится? Не влезет

Евгений
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?

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
поломана под почти все кроме убунты. -DUSE_INTERNAL_ZLIB_LIBRARY=0
Спасибо, я уже добавил хедер с va_list :) Тоже собралось

Ilyas
20.08.2018
14:52:50
Можно глянуть еррор лог
я глядел, не помогло

Denis
20.08.2018
14:55:25
а когда условие по date охватывает несколько месяцев, подобного сокращения не происходит?
так все записи надо из партции взять, чего там сокращать-то?

Mike
20.08.2018
14:55:59
можно попробовать использовать старый zlib: сd contrib/zlib-ng; git checkout e07a52dbaa35d003f5659b221b29d220c091667b и собирать
Будем надяться, что следующий стейбл будет без этой баги, а так такущий собрался, попробуем его накатить на тесте, спасибо за рекомендации

Алексей
20.08.2018
14:56:46
так все записи надо из партции взять, чего там сокращать-то?
ну, хотя бы набор партиций, которые просматривать а потом, сократить те партиции, которые диапазон дат захватывает лишь частично

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

prll
20.08.2018
14:59:20
Спасибо, я уже добавил хедер с va_list :) Тоже собралось
а если есть рабочий фикс - можно его пулл-реквестом в https://github.com/Dead2/zlib-ng ? а мы притянем как он там появится

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

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
хорошие вопросы, но при чем тут КХ? Или охота за головами по всему интернету?
Это 1 из 2ух подходящмх чатов, имхо, больше негде спросить.

Pavel
20.08.2018
15:45:10
Roman
20.08.2018
15:46:16
второй - по постгресу что ли?
Tarantool. Хотя, конечно можно и там.

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

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/

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

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

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

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

Ivan
20.08.2018
17:46:58
Есть ли открытый список компаний кто использует клик? Нашел только CERN/Yandex/Cloudflare/LifeStreet. Интересуют европейские/китайские/американские компании
официально его вести непросто из-за потенциальных юридических рисков, но по выступлениям на мероприятиях, github, сайтам с вакансиями и т.п. сколько-то десятков точно можно найти

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

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

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

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