
Maxim
26.12.2016
08:21:01
Добрый день,
Скажите как ClickHouse использует директорию /opt/cores. Хотим разместить данные ClickHouse в другой директории, не в /opt.
Можно ли изменить расположение cores из конфига, или это лучше сделать ссылкой?

prll
26.12.2016
10:46:32
А используется когда clickhouse упал чтоб отложить core dump

Alexander
27.12.2016
15:31:30
Всем привет, а в КХ есть функция row_number()

Google

Alexander
27.12.2016
15:31:31
?
ну или аналог какой-нибудь

Pavel
27.12.2016
15:35:37

Alexander
27.12.2016
15:37:04
вообще есть таблица, у строках которой есть id и date_time (дата_добавления) ну и другие параметры
для каждого ID надо вывести последнюю версию строки

papa
27.12.2016
15:37:30
argMax
если вопросов нет, то либо все понятно, либо ничего не понятно. если надо, могу более развернуто пояснить.

Alexander
27.12.2016
15:44:06
воистину работает, спасибо

papa
27.12.2016
15:44:26
а, ок.

Alexander
27.12.2016
15:44:31
да я открыл Доку, посмотрел эту функцию и запилил запрос, все сошлось
спасибо большое)
классно на самом деле, а я сидел голову ломал
КликХаус - сила

Igor
27.12.2016
16:02:27
есть rowNumberInAllBlocks

Google

f1yegor
27.12.2016
16:07:34
"Happy New Year" сказал clickhousr на проде

nikoinlove
27.12.2016
16:13:12
В корке?

papa
27.12.2016
16:27:08
в консоли

f1yegor
27.12.2016
18:13:30
сегодня запросы на проде начали проседать по таймауту(60 сек). посмотрел query_log - все отрабатывает быстро, есть подозрение что клиент не успевает забирать результаты, надо бы действительно стримить их. насколько я понимаю Accept-Encoding: gzip же не будет работать?

Igor
27.12.2016
18:14:02
будет, только там вроде надо передать флажок один
enable_http_compression=1
вот тест
https://github.com/yandex/ClickHouse/blob/1c849f14af0abeeb450115f800cc3c507ef73523/dbms/tests/queries/0_stateless/00302_http_compression.sh

f1yegor
27.12.2016
18:14:55
с этим флажком отдастся какой-то кастомный lz, которые не прочитать, если я ничего не путаю

Igor
27.12.2016
18:15:11
ненене, это компрессор метрики какой-то свой, наверное
если enable_http_compression, то там честный gzip или deflate (по умолчанию вроде deflate, не уверен, честно)
а кастомный lz это ты, наверное, про
> вам придётся использовать для работы с ним специальную программу compressor (%%sudo apt-get install compressor-metrika-yandex%%). Если вы указали в URL compress=1, то сервер будет сжимать отправляемые вам данные.
просто enable_http_compression в документации никак не упоминается, только в тестах

f1yegor
27.12.2016
18:16:54
поставлю галочку - добавлю в документацию)

Igor
27.12.2016
18:18:19
причем на моих данных это сжатие прям сильно улучшило все, и время ответа, и размер. странно, что по умолчанию не работает

f1yegor
27.12.2016
18:19:11
да, я бы предполагал что должно без всяких флажков работать, просто через headers. странно сделали

Igor
27.12.2016
18:19:50
но кстати, если данных мало, то запрос дольше выполняется, ЕМНИП
ну, т.е., SELECT count() делать с хттп-сжатием глупо, например %)

f1yegor
27.12.2016
18:21:11
а вы, Игорь, не в яндексе же работаете?

Igor
27.12.2016
18:22:26
я? неееет

Google

Alexey
28.12.2016
05:58:57
причем на моих данных это сжатие прям сильно улучшило все, и время ответа, и размер. странно, что по умолчанию не работает
gzip всё-таки медленно жмёт (~30 МБ/сек/ядро при уровне сжатия 3, для типичного Intel ~2 GHz, если я правильно помню). Когда добавляли его поддержку, то у нас было много программ, которые уже ходили на сервер с заголовком Accept-Encoding: gzip. И если бы сделали, чтобы он сжимал по-умолчанию, то это привело бы к увеличению потребления CPU при релизе. Поэтому сделали флаг, чтобы в момент релиза ничего резко не поменялось.
На самом деле зависит от сети. Для 1 GBit как раз под вопросом, стоит ли использовать gzip или нет (зависит от коэффициента сжатия). На 10 GBit точно не gzip.
Если Accept-Encoding: gzip, deflate, то сервер использует gzip.
На будущее, можно добавить Accept-Encoding: br (для Brotli). Также коллега сейчас делает, чтобы использовалась библиотека zlib-ng вместо zlib - станет лучше, но только чуть-чуть.


nikoinlove
28.12.2016
06:00:33
а разве бротли быстро жмет на лету? я думал он как зопфли, чтоб заранее пожатые файлики класть

Alexey
28.12.2016
06:01:33
Более-менее быстро. Почти как zstd.
Для хороших уровней сжатия (как gzip 3..6) получается в районе 200..600 МБ/сек.

Alexander
28.12.2016
06:02:47
brotli жмет быстрее всего, что мы пробовали. Включая zstd
(впрочем, zstd мы пробовали год назад, а brotli -- совсем недавно)

nikoinlove
28.12.2016
06:05:08
а снаппи там всякие не?
которыми монги по дефолту жмутся

Alexey
28.12.2016
06:05:22
https://quixdb.github.io/squash-benchmark/
- только сразу при загрузке переключите на Xeon, а dataset на enwik8 или urls.10K.

Alexander
28.12.2016
06:05:45
снаппи жмет быстро, но плохо

Alexey
28.12.2016
06:09:00
Правда там страница наполовину устарела :(
Нет уровней для zstd. Зато есть уровни для lz4, которые сбивают с толку. Значит лучше туда не смотреть.
По поводу видео митапа 14 декабря. Видео готово, я его посмотрел - там всё Ок. Но мне тут коллеги советуют, что исходя из формата этой встречи (встреча была ограниченной, не для всех желающих), видео выкладывать не нужно - чтобы сохранить смысл такого формата встреч. (При этом видео с первой встречи 21 ноября уже выложили.)
Что думаете? Есть какие-нибудь аргументы по этому поводу?

Valeriy
28.12.2016
08:42:37
Я его как раз начал смотреть вчера, поэтому думаю, что его стоит оставить )
А, сорри, это от 21-го ноября смотрю.

Alexey
28.12.2016
08:43:26
Его точно оставим :) Речь только про второй митап.

Eduard
28.12.2016
08:48:31
А что, если желающие посмотреть не из ДС? :)

Alexey
28.12.2016
08:49:37
В ДС2, надеюсь, приедем и ещё вживую что-нибудь интересное расскажем. И в ДС3 (правда не знаю, в какой).

Igor
28.12.2016
08:49:39
кстати, хорошая идея, но не факт, что легко сходу реализуема - опубликовать видео приватной ссылкой и ссылку разослать контрибьютерам

Eduard
28.12.2016
08:51:25
Ну ДС3=Екат ящетаю, я б даже туда смотался по такому поводу.

Igor
28.12.2016
08:57:44
> @milovidov_an
видео выкладывать не нужно - чтобы сохранить смысл такого формата встреч.
Есть смысл - не выкладывать чтобы простимулировать стать "избранным" ) С другой стороны там много "мебели" и "интеграторов" )))

Alexey
28.12.2016
09:03:50
В следующий раз мы надеемся сделать встречу более интересной и надеюсь участников (контрибьютеров) будет больше :)

Google

f1yegor
28.12.2016
09:13:40
Я за видео, т.к. нету возможности побывать вживую

Pavel T.
28.12.2016
10:00:02
Колеги, не все и всегда могут на митап явиться. Будет обидно пропускать обсуждаемую информацию. Может всё же будет общедоступным видео от таких встреч?

Maksim
28.12.2016
10:01:36
ага, показываешь паспорт, что не из ДС, и тебе дается уникальная секретная одноразовая ссылка на видео, которое уничтожается автоматом на твоем лептопе после первого просмотра... XD

Igor
28.12.2016
10:01:53

Pavel T.
28.12.2016
10:04:18
Что за дичь?
Т.е. есть желание организации закрытого комьюнити по CH или всё же открытого?
Для популиризации платформы наверное всё же чем больше публичной информации с рассказами, обсуждениями - тем лучше, ИМХО.
Но это как уж авторы задумали.
Или тут комьюнити только на Мск рассчитано, кто всегда сможет заглянуть на встречу? Тогда хоть вебинары организуйте

Alexey
28.12.2016
10:07:41
Да ладно вам. Все более менее крупные встречи будут с видео. Небольшие могут быть и без (это проще организовать). Видел с большого митапа тут было, с того что был в декабре - нет, мы как раз смотрим и думаем выкладывать ли.

Roman
28.12.2016
10:10:23
Ну то есть тут играют роль маркетинговые и PR сообраджения.
На публичных встречах тоже отвечают на все вопросы, включая "кишки", но там это обычно идет в кулуарах и не попадает в видео или презентационные материалы — то есть кому надо задает вопрос и получает ответ, а на публику идет ровно то, что разработчики хотели сообщить. И это нормально — правильный маркетинг и для открытого продукта имеет значение.


Pavel T.
28.12.2016
10:13:30
тогда надо действительно как-то делить встречи и доступ разделить.
Через ту же Г+ группу для разработчиков иметь возможность видеть больше материалов с техническими обсуждениями, что будет недоступно просто в паблике.
Это конечно решается в первую очередь через агенду при организации встреч - кто ЦА и кому будут доступны материялы. Для каких-то материялов строго "ватермарк", что это не публичная оферта, а лишь идеи внутри комьюнити разработки и деплоя


Alexander
28.12.2016
10:42:36
Я не думаю, что ограниченность приглашения надо связывать с ограниченностью доступа к видео. На Олимпиаду мало кого приглашают, но все смотрят. Ограничивать следует только в том случае, если была информация "не для всех". Насколько я помню, ничего секретного на митапе не было. Хотя не уверен насчет выступления товарища из Люксофта, имеет смысл у них спросить.

Darafei
28.12.2016
10:45:16
обычные правила - или "предупредить всех докладчиков, что запись будет публична", или "спросить каждого докладчика перед выкладыванием"

Roman
28.12.2016
10:49:17
Если серьезно, то как-то геморно всех опрашивать или отсматривать материал постфактум, что решить выкладывать или нет. Имхо.

Alexander
28.12.2016
10:53:11
там не для разглашения может быть только название клиента
Но мне кажется, что сам факт видео съемки подразумевает, что видео не для служебного пользования.
Но решать Яндексу

Igor
28.12.2016
11:16:37
Подскажите а может существует другая документация по функциям в CH ? Не в таком формате ?
Для чего: в gui хочу сделать подсказки по ф-циям пример https://monosnap.com/file/YCgjbBwBhxMBOhi3VbNbdSWUAdyRnR
но в лоб регулярку не получилось написать чтобы распарсить текущую документацию.
Идеал : "functionName"=>"desc" , но xml/yml/json тоже пойдет )

Igor
28.12.2016
11:18:57
мне в голову приходят разве что исходники, и в тех вряд ли можно будет добиться желаемого регуляркой

Google

Igor
28.12.2016
11:19:56
ну да, даже на том же примере с uniqHLL12 в исходниках документации вообще нету %)
на примере FunctionsArray.h есть
/** Функции по работе с массивами:
*
* array(с1, с2, ...) - создать массив из констант.
* arrayElement(arr, i) - получить элемент массива по индексу.
* Индекс начинается с 1. Также индекс может быть отрицательным - тогда он считается с конца массива.
* has(arr, x) - есть ли в массиве элемент x.
* indexOf(arr, x) - возвращает индекс элемента x (начиная с 1), если он есть в массиве, или 0, если его нет.
* arrayEnumerate(arr) - возаращает массив [1,2,3,..., length(arr)]
но с учетом того, что комментарии надо будет переводить на английский, это еще менее стабильный способ
могу вам помочь с унификацией описаний функций и всего такого

Igor
28.12.2016
11:22:49
угу, это я руками пример скопипастил из доки) остальные 1000 функции решил регуляркой ...

Igor
28.12.2016
11:23:25
гг. а я некоторое время назад регуляркой проходился по всем исходникам, чтобы найти функции, которых нет в документации, и добавлял их туда %))

Igor
28.12.2016
11:23:48
)))

Igor
28.12.2016
11:23:49
регэкспы - это прекрасно!

Igor
28.12.2016
11:24:05
select * from system.functions ?
я так подгружаю в gui список - чтобы всегда был актуальный список исходя из сборки

Igor
28.12.2016
11:24:51
вот блин :(
чё-т я совсем невнимательно содержимое system изучал

Pavel T.
28.12.2016
11:25:40
а документация не доксигеном сгенерирована?

Igor
28.12.2016
11:26:19
неа