
Pika
02.06.2017
16:56:49
Как в CH устроенно хранение вложенных стурктур данных?

Alex
02.06.2017
17:00:45
Вложенная структура почти эквивалентна нескольким массивам с одинаковой длиной
И хранится также
Массивы хранятся как столбец с размерами + столбец с самими значениями, записанными подряд.

Google

Pika
02.06.2017
17:10:56
А столбец с размерами содержит смещения относительно головы массива?
А как хранятся строки переменной длинны? Длинна + последовательность байт или как с массивами?

Alex
02.06.2017
17:14:23
Столбец с размерами хранит размер массива в каждой строке.
Строки хранятся в одном столбце - длина + последовательность байт

Igor
02.06.2017
18:24:15

Andrey
02.06.2017
18:36:24
Друзья, хочется страшного. Группировать выборку по некоторым полям, а остальные поля выводить любые, желательно первые попавшиеся. Это возможно?

Igor
02.06.2017
18:36:42
Any ?
anyLast()

Andrey
02.06.2017
18:37:16
Any ?
Ооо, да, кажись оно.
сек, попробую)
Да, то что нужно! Спасибо!

Maksim
02.06.2017
19:36:28

Andrey
02.06.2017
19:37:10

Google

Maksim
02.06.2017
19:49:49
Мускль делает any по умолчанию. Постгрес очень жесткий тут

Pika
02.06.2017
21:11:50
Имеет смысл в CH делать схему звезда с таблицей фактов и измерений или одна таблица-простыня наше всё?

Igor
02.06.2017
21:16:55
+1 за простыню со словарями

Pika
02.06.2017
21:27:23
@garikanet используешь словари только как справочник?

Igor
02.06.2017
21:30:26
да, userAgent, location_id, и другие систем. обьекты через id
Так же, мы используем "хитро" таблицы Summing, допустим у нас есть список рекламных компаний(сайтов/товаров...) которые, есть словарь. Мы инсертим в таблицу каждую минуту все активные компании/товары и делаем +1, тогда можно достать все ключи словаря - через запрос в эту таблицу))
( в ожидании ф-ционала в самом CH ))

papa
02.06.2017
21:44:35
а старые удаляете?

Igor
02.06.2017
21:47:36
нет, у нас объекты insert only, у них статус = active|stop
тут тонкость в виде race condition - но мы списываем на мат.погрешность в наших задачах

Maksim
03.06.2017
16:15:32
ок, у меня теперь назрел следующий вопрос: а как вы тестируете проекты, которые используют кликхаус?
мокаете запросы к кликхаусу или гоняете всё на тестовом сервере?

f1yegor
03.06.2017
22:01:52
часть мокаем, для интеграции - в gitlab можно удобно подкючать докер-образы

Maksim
04.06.2017
08:19:41
а как посоветуете быть с геолокацией. Это то, что лучше писать в базу или это вычислимые данные? Кажется, что это надо писать в базу, потому что данные то меняются.

Yury
04.06.2017
08:22:15
у нас событиям добавляется локация пользователя в момент события. А то они любят ее менять произвольно.

papa
04.06.2017
13:14:59

Maksim
04.06.2017
13:15:13
IP -> координаты
я про это

papa
04.06.2017
13:15:32

Igor
04.06.2017
13:15:42
базы geoip меняются, айпишники не меняются

Pavel
04.06.2017
13:17:06
Для геолокации были патчи на префикс лакапы по айпи

Google

papa
04.06.2017
13:18:13
IP -> координаты
т.к. эта связь меняется со временем, то если нужно знать где было событие, то либо надо помнить всю историю геопривязки и джойнить при чтении, либо джойнить в момент записи. второе по-моему проще.

Maksim
04.06.2017
13:18:21
ок
разумно
хотя я так понимаю, что как раз для этого есть словари с временем?

papa
04.06.2017
13:20:51
да, кейс примерно этот. по-моему там сейчас гранулярность времени по датам, он только увеличивается в размерах, и при чтении он работает при каждом чтении, а при записи один раз. зато его можно апдейтить, если что-то пошло не так.

Vadim
04.06.2017
14:29:55
/stat@combot

Combot
04.06.2017
14:29:56
combot.org/chat/-1001080295593

Андрей Михайлович
04.06.2017
18:25:31
чо там чо там про геолокацию?
тыкдом научился работать с геоданными?

papa
04.06.2017
18:30:25
смотря что считать "научился"

Александр
04.06.2017
20:05:32
Всем привет! Кто-то сталкивался с багами оптимизации запросов самим КХ? Когда он выкидывает данные из подзапроса?
Вот тут более детальное описание https://groups.google.com/d/msg/clickhouse/tzLZG-FWbvE/siX-Df9tBAAJ
Если кто-то ловил такое, то получилось как то обойти или нет?

Андрей Михайлович
04.06.2017
20:48:19

papa
04.06.2017
20:48:50
расстояния - да, все остальное - нет.
так что скорее нет, чем да.

Ilya
05.06.2017
05:52:06
Коллеги, так может подскажете, можно ли доступиться из tabix.io (открываю с сайта, без инсталляции) к серверу CH в локальной сети с другой машины? Консоль хрома дает такую ошибку: XMLHttpRequest cannot load http://10.0.0.234:8123/s1/query. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://ui.tabix.io' is therefore not allowed access. The response had HTTP status code 501.
просто в браузере проверку ok пройти могу
да и запрос тоже получается... если самому query в строке написать


Vladimir
05.06.2017
05:58:15
да и запрос тоже получается... если самому query в строке написать
Проще в докерер табих запустить. Примерно минут 10 на все про все. Из сообщения неясно - если 10.* сетка до примера тогда приведите лог нормальный. Если сетка не пример - тогда как минимум 8123 порт должен быть выставлен наружу (PAT). и такое ощущение что нужен CORS но это скорее всего уже в настройках самого tabix.io не думаю что под вас будут править. Воспользуйтесь лучше докером + табих. Либо если в локалке поднят nginx or apache тогда скопируйте архив табих с офф страницы и запустить ещё один виртуальный хост

Ilya
05.06.2017
06:00:29
локалка, в одном сегменте. у меня машина 10.0.0.53, CH - 10.0.0.234. никаких проксей, ничего. В принципе можно с веб-based версии tabix достучаться до локального CH или нет?

Google

Ilya
05.06.2017
06:01:19
где лог взять? это единственная ошибка в консоли хрома. информ. сообщения про отсутствие перевода я вырезал

Vladimir
05.06.2017
06:01:54

Ilya
05.06.2017
06:01:55
просто из браузера я могу вбить строчку и получит select по таблице
а где можно прочитать про необходимые настройки? на сайте пусто
я же не знаю, как табикс устроен. может он все js скрипты к себе затаскивает

Vladimir
05.06.2017
06:03:07
У вас линукс?

Ilya
05.06.2017
06:03:37
локалка — винда
CH - ubuntu

Vladimir
05.06.2017
06:04:47
CH - ubuntu
Могу в личку написать чтобы не разводить флуд

Ilya
05.06.2017
06:05:10
буду благодарен

Vladimir
05.06.2017
06:21:11
Для безопасности уже давно браузеры не умеют делать cross site запросы если у сервера не выставлен хедер cors
Можно искать в гугле по запросам clickhouse cors
https://github.com/yandex/ClickHouse/pull/83 - кажется вот pr который добавил поддержку этого в кх и там же указано как пользоваться.

Александр
05.06.2017
07:49:17
Главное кх на этот хост повесить, что бы не 127.0.0.1 слушал

Mikhail
05.06.2017
11:13:59

Sergey
05.06.2017
13:55:01
Кто-нибудь использовал Clickhouse в Laravel5? Как поступили с миграциями?

Igor
05.06.2017
13:55:10
так в пхп же инструмент был от сми2

Google

Igor
05.06.2017
13:55:28
https://github.com/smi2/phpMigrationsClickhouse
не?

Sergey
05.06.2017
13:59:31
Igor, спасибо не видел, планировал немного модифицировать стандартные миграции в Laravel, может кто уже это проходил.

Aleksey
05.06.2017
14:40:41
в yii2 в одну строчку заработало если что - http://joxi.ru/4vAWKbKhpjDWAW

evervoid
05.06.2017
16:22:20
Ребята, такой вопрос. Есть какие-то минимальные и рекомендуемые требования по железу на одну ноду КХ? И насколько хорошей/плохой практикой может быть расположение нескольких нод на одной физической машине?

Igor
05.06.2017
16:22:46
Миграция в одной базе и миграция в кластере немного разные вещи. Вот моя статья на эту тему https://habrahabr.ru/company/smi2/blog/317682/

Alexey
05.06.2017
16:48:00
Немного информации про железо есть здесь: https://github.com/yandex/ClickHouse/blob/master/doc/administration/tips.txt


Dmitry
05.06.2017
16:58:07
помогите разобраться, делаю три запроса:
1. `SELECT uniqExact(managed_object) AS qty
FROM alarms WHERE
ts BETWEEN toDateTime('2017-06-01T01:00:00') AND toDateTime('2017-06-01T07:00:00')
or
ts BETWEEN toDateTime('2017-05-30T15:00:00') AND toDateTime('2017-05-30T16:00:00')`
результат = 87238
2. `SELECT uniqExact(managed_object) AS qty
FROM alarms WHERE
ts BETWEEN toDateTime('2017-06-01T01:00:00') AND toDateTime('2017-06-01T07:00:00')`
результат = 35941
3. `SELECT uniqExact(managed_object) AS qty
FROM alarms WHERE
ts BETWEEN toDateTime('2017-05-30T15:00:00') AND toDateTime('2017-05-30T16:00:00')`
результат = 52729
почему 87,238 <> 35,941 + 52,729 (88,670)

Nikita
05.06.2017
17:00:29
потому что один и тот же managed_object появился и в мае и июне?

Dmitry
05.06.2017
17:01:36
да, это возможно, спасибо

Виктор
05.06.2017
17:02:59
У нас в Яндекс.Метрике это главный вопрос на собеседовании
Ожидаем что люди понимают что уников складывать нельзя

Dmitry
05.06.2017
17:04:08
ну почему а если primary key?