@clickhouse_ru

Страница 210 из 723
Aleksander
23.07.2017
11:39:09
Всем привет, появилось несколько вопрсов(только изучаю КХ и пытаюсь интегрировать под свою задачу): 1) можно ли использовать КХ не только как хранилище аналитических данных(в моем случае временных рядов), но и как хранилище справочной информации к этим данным? Мой кейс: я собираю данные по каналам YouTube, VK, Insta и проч соц сети, каждый день собираю статистику по всем своим каналам(в базе), так же база может расширяться (в базу могут попадать новые каналы и апдейтиться информация по старым). 2) Использует ли кто-нибудь кх в симбиозе с другой бд? (например в другую бд сохранять описания и апдейтить старые описания), а в кх собирать статистику?

f1yegor
23.07.2017
11:43:37
а каком объем данных планируется? звучит так что если вы возьмете postgres то будет значительно удобней

а для справочной информации посмотри https://www.altinity.com/blog/2017/4/12/dictionaries-explained

Aleksander
23.07.2017
11:49:27
а каком объем данных планируется? звучит так что если вы возьмете postgres то будет значительно удобней
Не могу сказать точно, т.к. сам точно не представляю. Могу сказать так: около 30 миллионов каналов, по каждому из которых в день добавляется по 1 записи статистики, плюс 3 миллиарда видео, фото по которым тоже раз в день добавляется запись статистики. По весу каждая запись это примерно 10 значений типа Int64

Google
Aleksander
23.07.2017
11:52:00
Это данные на которые надо будет выйти, сейчас все меньше в 30 раз

Vladislav
23.07.2017
14:54:58
Наткнулся на интересное поведение в Clickhouse jdbc — ResultSet и PreparedStatement имеют разные TimeZone (получаются они почти одновременно, clickhouse на select timezone() возвращает timezone PreparedStatement). Никто не сталкивался?

Sergey
23.07.2017
19:20:23
Наткнулся на интересное поведение в Clickhouse jdbc — ResultSet и PreparedStatement имеют разные TimeZone (получаются они почти одновременно, clickhouse на select timezone() возвращает timezone PreparedStatement). Никто не сталкивался?
По тексту не понял что от чего отличается. Лучше в виде кусочка кода с комментариями где какая таймзона, можно сразу в issue jdbc для истории.

Старый
24.07.2017
05:25:01
кто сталкивался

am_systemd(su:session): Failed to create session: Start job for unit user@115.service failed with 'failed'

4.4.0-83-generic #106-Ubuntu

16.04

обновился, перезагрузил тачку, пробелма ушла

vladimir
24.07.2017
07:04:35
Всем привет! Пытаюсь разобраться с шардированием, и возникла пара вопросов: 1. "Distributed-таблицы" надо создавать для каждой локальной таблици отдельно, или можо создать одну "Distributed-таблицу" на все локальные. 2. Нужно ли менять в настройках приложения, которое пишет в КХ, локальную таблицу на "Distributed-таблицу" 3. Нужно ли менять в настройках приложения, которое ходит в КХ за данными, локальную таблицу на "Distributed-таблицу"

vladimir
24.07.2017
07:21:33
@hagen1778 спасибо!!

Kirill
24.07.2017
08:28:26
Всем привет, у меня есть вопрос или фичареквест (если вдруг такого еще нет) по плагину для графаны (https://github.com/Vertamedia/clickhouse-grafana): У нас есть некоторая проблема и заключается она в том, что одни и теже дашборды может смотреть несколько человек и в итоге Кликхаусу становится плохо, эти запросы легко кэшировать но таймрендж у них разный (у разных пользователей) поэтому кэш не очень эфективен. Есть ли вариант округлять время начала выборки для только что открытого дашборда. Например: мы открыли дашборд и он отражает данные за час, с рефрешем, скажем, 10 секунд, но запрашивать данные не от "сейчас - час" и потом каждые 10 секунд, а округлить старт на те самые 10 секунд, т.е. если мы открываем страницу в 11:26:02 или 11:26:08 всеравно стартовать с 11:26:00 ?

Google
Felixoid
24.07.2017
08:34:44
Или даже до минуты, функция выше на 1

Kirill
24.07.2017
08:36:09
это все здорово, но мне нужно кэшировать http запросы к КХ, и хотелось бы чтоб плагин транкейтил дату для запросов чтоб можно было в nginx настроить кэш

Felixoid
24.07.2017
08:40:13
Кликхаус неплохо работает с дисковыми кешами. Если все запросы оборачиваются в "округлить до 10 секунд", то по дискам он не ездит. А по плагину — сидит ли тут его автор? :-j

Roman
24.07.2017
09:10:48
Всем привет, у меня есть вопрос или фичареквест (если вдруг такого еще нет) по плагину для графаны (https://github.com/Vertamedia/clickhouse-grafana): У нас есть некоторая проблема и заключается она в том, что одни и теже дашборды может смотреть несколько человек и в итоге Кликхаусу становится плохо, эти запросы легко кэшировать но таймрендж у них разный (у разных пользователей) поэтому кэш не очень эфективен. Есть ли вариант округлять время начала выборки для только что открытого дашборда. Например: мы открыли дашборд и он отражает данные за час, с рефрешем, скажем, 10 секунд, но запрашивать данные не от "сейчас - час" и потом каждые 10 секунд, а округлить старт на те самые 10 секунд, т.е. если мы открываем страницу в 11:26:02 или 11:26:08 всеравно стартовать с 11:26:00 ?
вы предлагаете ввести возможность транкейта временных периодов аналогично тому, как это делает КХ, но на стороне фронтенда? Что-то вроде: SELECT count() FROM $table WHERE toStartOfMinute($timeFilter) ?

Kirill
24.07.2017
09:22:28
нет, есть переменная $from, я бы хотел иметь возможность транкейтить дату старта для нее для того чтоб разные "сессии" могли начинать слать запросы не с того timestamp в котором открыли окно, а с округленного (скажем) на 10 секунд чтоб иметь возможность более эффективно кэшировать запросы

Vladimir
24.07.2017
09:24:41
нет, есть переменная $from, я бы хотел иметь возможность транкейтить дату старта для нее для того чтоб разные "сессии" могли начинать слать запросы не с того timestamp в котором открыли окно, а с округленного (скажем) на 10 секунд чтоб иметь возможность более эффективно кэшировать запросы
А чем кэш самой прокси не угодил? Можно ведь в графане запрос на построение сделать что то вида toStartofMinute($from). Не помню только надо ли toDateTime приведение типов делать. Или вы хотите какую либо опцию добавить к $from на уровне плагина?

Roman
24.07.2017
09:30:43
Возможно, стоит добавить дополнительную опцию под запросом типа round, которая будет принимать интервал и автоматически применять округление к $from

btw, в Графане уже есть подобный фиче-реквест https://github.com/grafana/grafana/issues/5190 https://github.com/grafana/grafana/issues/6930

Kirill
24.07.2017
09:34:15
Поясню на примере: плагин отправляет запросы вида SELECT t, groupArray((App,C/10)) FROM (SELECT (intDiv(toUInt32(EventTime), 3600) * 3600) * 1000 AS t, CASE WHEN ApplicationID = 12 THEN 'XXX' WHEN ApplicationID = 30 THEN 'XXX mobile' ELSE 'Other' END AS App, SUM(Impressions) AS C FROM metrics.metrics WHERE EventDate >= toDate(1500715771) AND EventTime >= toDateTime(1500715771) GROUP BY t, App ORDER BY t, App) GROUP BY t ORDER BY t FORMAT JSON $from вставляется в toDate и toDateTime (toDate(1500715771), toDateTime(1500715771)) $from меняется каждые N секунд указаные в параметре рефреша проблема в том, что если открыто 10 окон то будет 10 разных $from т.к. открыты они были в разное время (допустим с шагом в 1 секунду) хотелось бы таймстамп начала "сессии" затранкейтить чтоб уменьшить количество уникальных запросов и закешировать их на nginx

Roman
24.07.2017
09:39:19
Окей, тогда мое предложение должно сработать - вы устанавливаете для панели аттрибут round, например, в 10s, и тогда он будет применятся для округления значения даты в макросе $from

устроит такая реализация?

Kirill
24.07.2017
09:42:53
более чем

Roman
24.07.2017
09:43:31
ок, создайте фиче-реквест плз в репозитории

Kirill
24.07.2017
09:46:28
done https://github.com/Vertamedia/clickhouse-grafana/issues/12

Roman
24.07.2017
09:52:03
спс

Maxim
24.07.2017
10:27:47
Привет всем, а есть шанс запустить на винде, пробвал запустить на Ubuntu(который на Win10), не запускается, а для тестов убунту ставить лень((

Maxim
24.07.2017
10:28:57
то есть вы имеете винду на докер в режиме linux?

Google
Stas
24.07.2017
10:29:52
Ещё в плагине к графане баг нашёл: если внутри функции типа rate column использовать сразу несколько переменных рядом $var1$var2 то между ними появляется пробел :(

Alexandr
24.07.2017
10:32:30
а если попробовать $$var1$$var2 или ${var1}${var2} ?

Ещё в плагине к графане баг нашёл: если внутри функции типа rate column использовать сразу несколько переменных рядом $var1$var2 то между ними появляется пробел :(

хотя чего это я, графана же

Alex
24.07.2017
10:38:13
Доброго дня колеги. Вот столкнулся с проблемой... Поставил серв на убунте. Установил последнюю версию КХ и последнюю версию табикса. но при более имение сложных запросах табикс выдает ошибку , а через консольный кх клиент отрабатывает без проблем.

в логах кх





еще две ошибки

<Error> HTTPHandler: Code: 24, e.displayText() = DB::Exception: Cannot write to ostream, e.what() = DB::Exception

DB::Exception: Data directory for table already containing data parts - probably it was unclean DROP table or manual intervention. You must either clear directory by hand or use ATTACH TABLE instead of CREATE TABLE if you need to use that parts., e.what() = DB::Exception

Vitaliy
24.07.2017
11:18:53
Привет всем! Кто может помочь разобратся, что же произошло с размером... https://drop.vitalvas.com/storage/72/77/16ecac74f355de0078f086ae5e35.png

Mikhail
24.07.2017
11:25:54
Привет, всем. Столкнулся с такой проблемой c колонкой ALIAS. Создаю Replicated таблицу на трех серверах. CREATE DATABASE tmpdb; CREATE TABLE tmpdb.test_alias_local ( Timestamp DateTime, EventDate Date DEFAULT toDate(Timestamp), field1 Int8 DEFAULT -1, field2 String, field3 ALIAS CASE WHEN field1 = 1 THEN field2 ELSE '0' END ) ENGINE = ReplicatedMergeTree('/clickhouse/tables/{s3_r1}/tmpdb/test_alias_local','{replica}', EventDate, cityHash64(field2), (EventDate, Timestamp, cityHash64(field2)), 8192); CREATE TABLE tmpdb.test_alias AS tmpdb.test_alias_local ENGINE = Distributed(s3_r1, tmpdb, test_alias_local, cityHash64(field2)); INSERT INTO tmpdb.test_alias (Timestamp, EventDate, field1, field2) VALUES (now(), today(), 1, '12345'), (now(), today(), 2, '54321'), (now(), today(), 0, ''); Проверяю работу такими селектами SELECT field1, field2, field3 FROM tmpdb.test_alias; SELECT field2, field3 FROM tmpdb.tmpdb.test_alias_local; SELECT field2, field3 FROM tmpdb.test_alias; Первые два работают без проблеам. а третий выдает ошибку DB::Exception: Not found column: 'field1'. Кто-нибудь сталкивался с подобной проблемой или имеет успешный опыт работы с ALIAS столбцами?

Alex
24.07.2017
14:11:20
Ребят подскажи, как установить более позднюю версию, а не последнюю? Просто есть несколько серверов с одной версией и другая вызывает ошибки...

Mikhail
24.07.2017
14:24:32
вопрос про ALIAS no found column снимается. Нашел баг https://github.com/yandex/ClickHouse/issues/590

но возник другой вопрос, если я выполняю следующий запрос, то CH возвращает ошибку SELECT field1, field2, field3 FROM tmpdb.test_alias WHERE EventDate=today() DB::Exception: Not found column EventDate in block. There are only columns: field1, field2, field3, caseWithoutExpr(equals(field1, 1), field2, '0') Колонки EventDate нет в выражении ALIAS колонки. Связано ли это с тем же багом с ALIAS ?

Sergei
24.07.2017
16:07:43
Чем обусловлен запрет использования вычисляемых выражений для шаблона в match? Это как-то можно обойти?

Alex
24.07.2017
16:38:27
Ребят кто сталкивался...

Admin
ERROR: S client not available

Google
Alex
24.07.2017
16:38:28
DB::Exception: Cannot write to ostream

блин не могу победить(

Sergei
24.07.2017
16:50:27
Господа разработчики КХ, все же зачем сделано ограничение на использование динамических шаблонов в функции match? Посмотрел по коду - ограничение исскуственное. Объект регулярки хранится в пуле, почему бы пользователю самому не решать хочет ли он забивать пул регулярок или нет. Если у меня есть словарь с небольшим кол-вом регулярок - это же для памяти не будет критично. Ну а если туда кто-то запихнет любое поле, то это уже его проблемы...

Alexey
24.07.2017
16:51:17
Чем обусловлен запрет использования вычисляемых выражений для шаблона в match? Это как-то можно обойти?
Regexp должен быть константным, потому что он заранее подготавливается. Поддержка неконстантного не реализована, так как это было бы очень плохо по производительности (минимум в несколько порядков).

Aleksander
24.07.2017
16:52:18
Как раз типичный случай, когда справочные таблицы хранятся в другой СУБД и подключаются в виде словарей. Сам ClickHouse хуже подходит для работы со справочными таблицами.
У меня в справочные таблицы тоже достаточно информации пишется. Не знаю, справится ли постгрес при использовании его в виде справочника. Вот сижу потихоньку имплеменчу.

Alexey
24.07.2017
16:53:14
Господа разработчики КХ, все же зачем сделано ограничение на использование динамических шаблонов в функции match? Посмотрел по коду - ограничение исскуственное. Объект регулярки хранится в пуле, почему бы пользователю самому не решать хочет ли он забивать пул регулярок или нет. Если у меня есть словарь с небольшим кол-вом регулярок - это же для памяти не будет критично. Ну а если туда кто-то запихнет любое поле, то это уже его проблемы...
Для небольшого количества регекспов действительно можно сделать. Хотя этот пул реализован не настолько хорошо, чтобы доставать из него на каждой строке было бы эффективно. Впрочем, можно аккуратно сделать ещё и локальное множество с регекспами на каждый блок данных и тогда должно быть приемлимо.

Alexander
24.07.2017
16:54:46
Я понимаю, что фантазия, а не планируется какой-то engine не особо колоночной, а как раз для словарей, например?

Sergei
24.07.2017
16:56:52
Alexey
24.07.2017
16:57:32
Я понимаю, что фантазия, а не планируется какой-то engine не особо колоночной, а как раз для словарей, например?
Для серьёзных применений пока нет, так как много сложностей, чтобы нормально поддерживать UPDATE/DELETE и т. п.

странно, в нее передаются data и pattern
data - массив символов всех строк в блоке данных, уложенных подряд. Пачка типично из десятков тысяч строк. pattern - одна строка с шаблоном.

Alexey
24.07.2017
17:01:28
Была идея для некоторых применений сделать функцию для матчинга сразу многих подстрок или регекспов с возвратом, какой из них сработал.

Vsevolod
24.07.2017
17:01:50
через hyperscan \m/

Alexey
24.07.2017
17:03:32
DB::Exception: Data directory for table already containing data parts - probably it was unclean DROP table or manual intervention. You must either clear directory by hand or use ATTACH TABLE instead of CREATE TABLE if you need to use that parts., e.what() = DB::Exception
Это сообщение говорит о том, что выполняется запрос CREATE TABLE, но в файловой системе уже есть данные таблицы. И говорят, что либо вы хотите подключить старые данные - тогда можно сделать запрос ATTACH вместо CREATE, либо это следствие недоделанного запроса DROP, и тогда данные можно самостоятельно удалить.

через hyperscan \m/
Как раз вариант. Я это совсем не прорабатывал - пока не было серьёзного повода добавить.

Alex
24.07.2017
17:04:17
а если я сделаю через детач импорт?

Google
Alexey
24.07.2017
17:04:34
Alex
24.07.2017
17:04:54
ну положу нужные мне партишены в детач и сделаю аттач табле

в доке вроде так...

у меня просто готовая база. я ее переношу на новый серв

Alexey
24.07.2017
17:05:32
Тогда просто выполняете ATTACH TABLE ...

Alex
24.07.2017
17:05:44
спасибо. делаю как раз.

Vsevolod
24.07.2017
17:06:09
@milovidov_an вообще, с гиперсканом там все просто, кроме гемора с пакетостроением и с компиляцией корпуса. Но учитывая многотредовость сабжа, это вообще пофиг, как я понимаю

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