
Igor
24.11.2016
23:09:59
основной упор мы делаем на редактор)
да eng нужно, вон и доку для dev и комменты в коде CH пишут на не понятном мне языке)))
Да нужно перевести на Eng ради "развития/продвиженя" - CH
открыл issue https://github.com/smi2/clickhouse-frontend/issues/21

これはスタスか…ロマンですか
24.11.2016
23:10:47
translate file?

Igor
24.11.2016
23:12:40
типа json - "выполнить запрос"="execute query"
но честно говоря нашим js dev виднее как это "true way" на angular делается

Google

これはスタスか…ロマンですか
24.11.2016
23:27:15
what about comments?

Evgeniy
25.11.2016
04:53:56

Valeriy
25.11.2016
05:07:45
https://github.com/facebook/zstd/releases

Evgeniy
25.11.2016
05:55:00

Timur
25.11.2016
07:11:48
Задам вопрос еще и здесь, кажется что людей тут больше
https://groups.google.com/forum/#!topic/clickhouse/nHwMoA5QOhI

Igor
25.11.2016
07:25:24

Dmitriy
25.11.2016
07:53:57
Там ситуация такая, что всё происходит в рамках одной страницы и переходы выполняются на внешние ссылки, т.е. мы не покидаем страницу.

Виктор
25.11.2016
08:21:49
Ну, мы в Метрике так делаем

Timur
25.11.2016
08:22:42
ага, отлично! тоже пришел к этому выводу
а в визиты пишете тогда-же когда и хиты или отдельно?

Виктор
25.11.2016
08:22:54
Тогда же
Чтобы было синхронно

Google

Timur
25.11.2016
08:23:11
супер. большое спасибо
да, для этого и хотелось писать их вместе
Виктор, а как вы гарантируете консистентность данных между этим "снаружи" и clickhouse?
вот если это "снаружи" данные потеряет или они разойдутся (может быть ситуация что более старые данные запишутся в clickhouse позже)
суммы то сойдутся, но из-за того что после схлопывания оставшаяся "последняя строка" может отличаться от сохраненного состояния они по идее могут разойтись


Dmitriy
25.11.2016
08:51:47
Мы пока научились только обновлять информацию о хитах: максимальная прокрутка, время на странице, наборы внешних кликов и другие меняющиеся параметры.
До обновления визитов (в терминах https://yandex.ru/support/metrika/general/glossary.xml) мы пока сами не дошли.. Да, в хитах состояние хранит счетчик.
Для хранения состояний визитов, наверно, можно хранить активные визиты в RAM приложения (рядом с CH) и сбрасывать информацию либо об изменениях визитов, либо по их завершении (после N минут idle-состояния, где N - настройка конкретного счетчика). Мысли? Витя, как в Яндекс.Метрике это внешнее состояние технически реализовано?!

Roman
25.11.2016
08:55:04

Igor
25.11.2016
08:57:17
но по сути да своя Метрика

Виктор
25.11.2016
09:01:49
То что снаружи данные не теряет :)

Timur
25.11.2016
09:01:52


Виктор
25.11.2016
09:02:56
Если внешняя система работает надёжно, расходиться ничего не будет

Timur
25.11.2016
09:08:41
1) считываем состояние из внешней системы
2) обновляем данные во внешней системе
3) пишем изменения в ch
вот если между 2 и 3 может влезть кто-то в параллельном вызове того-же визита (если нет лока), то данные разойдутся. смена 2 и 3 местами не решает эту проблему
или я что-то не так понимаю :)

Evgeniy
25.11.2016
09:20:59

Dmitriy
25.11.2016
09:45:19


Timur
25.11.2016
09:58:35
Состояния хитов пишем в очередь (они упорядочены по времени: старые будут обрабатываться первыми, порядок дальнейшей записи будет соблюдаться). Активные(!) состояния визитов в памяти внешнего приложения упрощённо могут выглядеть примерно так: hash_map< VISIT_ID, pair< OLD_STATE, NEW_STATE >. Если визита в памяти нет, значит создаётся новый визит. Если есть, за ~ константное время получаем последнее состояние для заданного идентификатора визита (при этом не выполняем никаких SELECT-ов в CH для поиска состояний). Изменения по хитам идут и в память по состояниям визитов, и в CH (хиты и визиты).
При старте внешнего приложения сначала поднимаем в память все активные визиты из CH и только потом разбираем очередь состояний хитов.
В любом случае, ни о какой транзакционности с CH мы не говорим.
Как вариант для размышлений..
Dmitriy - это все более менее понятно. вообще, схемы позволяющие избежать расхождения (с откручиванием лога у которого минус в том что нет синхронности, с мутексом у которого тоже есть свои недостатки и т.п. ) я примерно представляю как можно реализовать
вопрос я задал потому что думал что у CollapsingMergeTree может быть метод, позволяющий атомарно отменять старое состояние и записать новое (т.е. не писать строчку с Sign-минусом вручную).
на эту мысль наводит то что CollapsingMergeTree все-равно где-то должен знать о том какая строчка является последней
но если уж в самой метрике делают через внешнее состояние - то видимо так и нужно :)


Иван
25.11.2016
10:08:07
Добрый день. ODBC драйвер под Windows планируется?

Виктор
25.11.2016
10:08:43
2 и 3 у нас происходит атомарно
Точнее, разделено через отдельную очередь

Timur
25.11.2016
10:09:20
а, понятно. спасибо

Slach
25.11.2016
10:13:19
под винду по идее можно ODBC->JDBC бридж какой то сделать https://uda.openlinksw.com/odbc-jdbc-st/

Google

Name
25.11.2016
10:14:45
А как в кликхауз на счет интерфейсов для простых смертных пользователей? Я имею ввиду odbc windows
В планах на ближайшее время есть?

Виктор
25.11.2016
10:23:43
odbc в планах есть
Под windows он тоже будет работать

Name
25.11.2016
10:30:04
Виетор я наверное не первый кто спрашивает) но спрошу : есть увас для нас какойнибудь роадмап или список приоритетов реализации функциональностей? Это нужно чтобы понимать чего ожидать или на что расчитывать.

Виктор
25.11.2016
10:30:23
Там выше фотография была с митапа
Пока что в таком виде

Name
25.11.2016
10:32:39
понял. Там нет оконных sql функций. Это означает что они в далекой перспективе?
Скорость порадовала. Теперь хотим комфорта;)

Виктор
25.11.2016
10:34:21
Да, это значит что они в далекой перспективе =)
Но всё зависит и от вас тоже, можете найти задачу на гитхабе и написать что вам тоже хочется

Anatoly
25.11.2016
10:37:48
Я так понял, что допиливаться он будет, т.к. нужен в том числе и внутри Яндекса

Fike
25.11.2016
14:46:55
Я честно признаюсь, что не до конца понял, о чем обсуждение чуть выше про хиты, но, судя по всему, вы пытаетесь найти CRDT, и, возможно, вам просто нужно взять один из готовых паттернов и реализовать вручную. Если речь идет о том, что в CH есть запись, которая может обновиться заблудившимися старыми данными, то тут никакого спасения быть не может, пока у CH нет транзакций или версионирования записей (i.e. оптимистичная блокировка, с чем, насколько понимаю, вообще будет сложно из-за column-oriented архитектуры), я бы на вашем месте просто делал повторы с предварительным чтением через условные пять минут после первой отправки.

Dmitrii
25.11.2016
15:03:31
Как указать case insensitive regexp в match для строки? match(value, '(?i)smthng') не срабатывает.


Timur
25.11.2016
15:07:35
Я честно признаюсь, что не до конца понял, о чем обсуждение чуть выше про хиты, но, судя по всему, вы пытаетесь найти CRDT, и, возможно, вам просто нужно взять один из готовых паттернов и реализовать вручную. Если речь идет о том, что в CH есть запись, которая может обновиться заблудившимися старыми данными, то тут никакого спасения быть не может, пока у CH нет транзакций или версионирования записей (i.e. оптимистичная блокировка, с чем, насколько понимаю, вообще будет сложно из-за column-oriented архитектуры), я бы на вашем месте просто делал повторы с предварительным чтением через условные пять минут после первой отправки.
тут вопрос не про транзакционность, понятно что ее не может быть
тут немного другое - в конкретном движке, CollapsingMergeTree, чтобы "изменить строчку" нужно знать "что там сейчас лежит"
по идее - логичнее всего спросить об этом у самого Clickhouse.
Но так делать не стоит. Поэтому - то что "лежит сейчас" стоит надо хранить отдельно (вне clickhouse), т.к. эта информация нужна очень ограниченное время (по сути до таймаута визита, потом она уже не важна, т.к. визит закрывается и не меняется) - ее можно хранить в каком-нибудь быстродоступном хранилище


Dmitriy
25.11.2016
15:10:52

Dmitrii
25.11.2016
15:11:53

Evgeniy
25.11.2016
16:15:48

Igor
26.11.2016
21:14:10

Google

Виктор
26.11.2016
21:31:01
В саппорт очевидно :)
Там люди реагируют и до разработки это дойдёт если проблема действительно есть

Nick
28.11.2016
10:26:30
Коллеги, добрый день! Подскажите, какие у кликхауса аппаратные требования? Планиуем на одной ноде использовать диски 1,5-2 ТБ, какой должен быть объем оперативной памяти?

Evgeniy
28.11.2016
10:27:32
чем больше тем лучше. агрегации в памяти идут
насколько я понял

Nick
28.11.2016
10:28:52
чем больше, тем лучше - это понятно, но все-таки какой порядок величины? Есть ли best practice?

Dmitry
28.11.2016
10:30:25
Все что есть про железо тут https://raw.githubusercontent.com/yandex/ClickHouse/master/doc/administration/tips.txt

Igor
28.11.2016
10:30:30
да какая тут best practice. зависит от данных, которые хочется агрегировать. от их объема. типа.

Evgeniy
28.11.2016
10:58:43

Igor
28.11.2016
10:59:27
если будете агрегировать по ним потом, то конечно

Dmitry
28.11.2016
12:23:40
По опыту использование енумов (по сути те же числа) вместо строк дают значительный буст (вплоть до порядка). Но естественно их (как и внешние словари) надо поддерживать. Поэтому надо смотреть на задачу и решать, как лучше в корректной ситуации

Igor
28.11.2016
12:37:32
туда же - хранение UUIDов в FixedString(16), ipv4 в UInt32, ipv6 в FixedString(16).
будет жрать меньше оперативки (16 символов на один уид вместо 36, например), но если захочется читабельности, то, вероятно, начнет немного жрать процессор, чтобы сконвертировать на лету


Alexander
28.11.2016
13:50:21
Коллеги, всем привет. Мы с Романам Архаровым хотим использовать КХ на нашем проекте. У меня вопрос по внешним словарям. А могут ли быть ими таблицы с историчность.
Поясню. Например у нас есть справочник вендоров-поставщиков, где по каждому id есть название, url и ссылка на картинку picture. В процессе жизни приложение, допустим, название или другие поля, например, могу меняться. Чтобы поддерживать историчность мы хотим сделать для каждого id пару столбцов actual_date_time и actual_end_date_time, определяющих, что такие-то поля были актуальны во временном промежутке от [actual_date_time, actual_end_date_time]. Понятно, если текущие поля актульны до сих пор, то можно поставить actual_end_date_time равным 2100 году, например.
В КХ есть ли какая-то функция, которая возвращает поле не только по id, по и учитывая даты актульности, то есть date between actual_date_time and actual_end_date_time например
в доке видел только
dictGetT('dict_name', 'attr_name', id)
- получить из словаря dict_name значение атрибута attr_name по ключу id.
либо внешними словарями такие таблицы с историчностью в принципе быть не могут


papa
28.11.2016
13:52:39
Леша, в этом чате можно говорить про range_hashed словари?

Виктор
28.11.2016
13:54:10
В-общем решение есть, называется range_hashed словарь
Но кажется документации пока что нет
Можно по коду посмотреть как пользоваться =)

Alexander
28.11.2016
13:55:33
да, в доке такого нет

Google

Alexander
28.11.2016
13:55:39
ну если решение есть, то уже хорошо)
и можно пример кода, он нам понадобитсья?
пож-та)

Виктор
28.11.2016
13:58:06
В-общем ммм
вот код https://github.com/yandex/ClickHouse/blob/master/dbms/include/DB/Dictionaries/RangeHashedDictionary.h

Igor
28.11.2016
13:59:43
только вместо 256 и 1024 черт знает, что правильно вводить)