
Dorian
29.03.2017
20:53:19
Коллеги
Вопрос не по CH, а больше пл концепция БД. Так что не кидайте тряпками.
Какую БД посоветуете для хранения текстовых конфиг файлов? Нужно сделать распределенную систему выполнения задач, а для каждой задачи нужен уникальный конфиг. Хочу на базе zmq отдавать воркерам key для доступа к db

Denys
29.03.2017
21:08:45
ElasticSearch

Vladimir
29.03.2017
21:26:45

Dorian
29.03.2017
21:28:37
ElasticSearch
Да, уже думал об этом. Но записи с тем же индексом возможно придётся обновлять

Google

Dorian
29.03.2017
21:29:36

Vladimir
29.03.2017
21:30:58
@mangoat ну я к тому что у означенных выше систем все же какие-то намеки на consistency в отличии от ES. А как часто нужно конфиги менять?

Dorian
29.03.2017
21:31:39
Раз в неделю
Раз в месяц
Не часто

Vladimir
29.03.2017
21:32:02
и генерировать по темплейту

Dorian
29.03.2017
21:33:55
Хочу утилизировать ноды динамический. Чтобы не пропала работа, если нода умрет
Воркер пришёл : отдали запись
Он выполнил работу и отчитался

Vladimir
29.03.2017
21:34:29
ну короче мне с ходу кажется что либо означенные выше zk/etcd/consul либо configuration management напрягать

Dorian
29.03.2017
21:34:51
Спасибо
Начну все же с мезоса
))

Dmitriy
30.03.2017
07:23:23
Подскажите, если ограничение на количество которое можно заисертить в ReplacingMereTree ?
cтолкнулся с тем что не могу сделать инсерт 668943518 строк из одной базы в другую. вторая соответсвенно ReplacingMereTree
вставилось только 35456497 и все. диск с которого идет чтение уходит под 100% утилдизации диск на который пишу, даже не напрягся. один всплеск утилизации только, при чем долгое время команда select insert еще работает, но кол. строк во второй базе не меняется. потом это дело падает.
Следует отметить что в данных которые я лью во вторую находится порядка 10млн бублей.

Google

Dmitriy
30.03.2017
07:30:00
данные вытягиваю из распределенной таблици.
выполяню все на одном сервере.
ReplacingMereTree таблица лежит на ссд и прокинута через симлинк в каталог кликхауса
собственно ошибка
Code: 210. DB::NetException: Connection reset by peer while writing to socket (192.168.1.143:9000)
Code: 75. DB::Exception: Cannot write to file (fd = 1), errno: 32, strerror: Broken pipe

Виктор
30.03.2017
07:38:01
Проблема явно в чтении, а не в записи
И нет, в ClickHouse нет ограничения на число передаваемых бублей

Dmitriy
30.03.2017
07:44:28
разбил инсерт на подинсерты: отдельно инсертиться каждый час дня. и все нормально идет, нагрузка на винт с которого идет чтение в 3 раза меньше. даже в 4 раза.


Anatoliy
30.03.2017
09:47:12
Добрый день. Есть таблица user_properties с набором полей uuid, createdAt, name, age, region. В эту таблицу вносятся пользователи (их свойства). И вот теперь я хочу извлечь по каждому пользователю последние правки (то есть строку со всеми значениями столбцов, которая добавлялась последней)
Хотел попробовать это сделать с использованием limit N by.
Написал такой запрос:
select uuid, createdAt, name, age, region from user_properties order by createdAt limit 1 by uuid
Но при выполнении падает сам сервер БД (докер контейнер останавливается), что как-то странно. В таблице всего 4 строки.
ClickHouse server version 1.1.54189
Таблица создавалась таким образом:
CREATE TABLE IF NOT EXISTS user_properties (
uuid String,
createdAt DateTime,
name String,
age UInt8,
birth DateTime,
region String
) ENGINE=File(Native);

evervoid
30.03.2017
10:04:54
Всем привет!
Поддерживает ли http-интерфейс запросы без content-length?

Pavel
30.03.2017
10:14:08
Резонный вопрос - с какой целью?

Vitaliy
30.03.2017
10:36:37
Всем привет!
Поддерживает ли http-интерфейс запросы без content-length?
Да, вроде бы все должно работать
clickhouse-client -n -q "drop table if exists ui8; create table ui8 (i UInt8) ENGINE = Log"
cat /dev/urandom | head -c 500000 | curl --raw -v --request POST --no-buffer --include --header "Transfer-Encoding: chunked" 'http://127.0.0.1:8123/?query=INSERT%20INTO%20ui8%20FORMAT%20RowBinary' --data-binary @-
clickhouse-client -q "select count() from ui8"

Pavel
30.03.2017
11:10:25
потоковая отправка?
А как силами PieChart отрисовать вручную заданный SQL запрос к ClickHouse?
через конструктор - вышло, вручную - отвалвиается :( хотя alias указываю верно

Pavel
30.03.2017
15:44:48
Всем привет! А где можно почитать рекомендации по оптимальному железу для кластера CH. К сожалению нет опыта запуска собственных кластеров СУБД - сейчас живет инсталляция AWS Redshift, а там железо предопределено.

Igor
30.03.2017
15:54:48
https://github.com/yandex/ClickHouse/blob/master/doc/administration/tips.txt

Pavel
30.03.2017
16:29:27
Спасибо
Правильно понимаю что для малой интенсивности select (сотни в час) можно использовать 32 Gb ram а не 128 как в рекомендации?

Виктор
30.03.2017
16:32:00
Память связана обычно не с интенсивностью, а с запросами и ожидаемым временем выполнения
1. Память отжирается самим запросом - скажем, если есть group by по ключу высокой кардинальности
2. Память используется файловой системой под кэш, это влияет на скорость ответа по активно запрашиваемым/записываемым данным
То есть, в зависимости от задачи, 32 Gb может быть вполне достаточно.

Google

Sergey
30.03.2017
18:10:06

Bob
30.03.2017
22:21:29
А вот https://events.yandex.ru/events/meetings/13-apr-2017/

Kirill
31.03.2017
06:04:05

Konstantin
31.03.2017
06:08:03
всем привет! подскажите, а есть аналог DATE_TRUNC ?

Vladislav
31.03.2017
06:14:38
https://clickhouse.yandex/reference_en.html#toStartOfDay
отсюда и ниже

Konstantin
31.03.2017
06:18:12
toRelativeWeekNum - что имеется в виду под "from a certain fixed point in the past" ? както задается точка отсчета?

Ilya
31.03.2017
06:21:56

Konstantin
31.03.2017
06:23:09
спасибо!

Andrey
31.03.2017
07:29:02
Добрый день!
Возникла проблема с Nullable столбцом.
SELECT count(*)
FROM
(
SELECT
page_content_id,
session_id
FROM test.events
WHERE (name = 'impression') AND (initiator = 'page') AND (page_type = 'content') AND (page_content_id != NULL)
)
ANY LEFT JOIN
(
SELECT
page_content_id,
session_id
FROM test.events
WHERE (name = 'impression') AND (initiator = 'section') AND (section_type = 'description') AND (page_content_id != NULL)
) USING (page_content_id, session_id)
Received exception from server:
Code: 68. DB::Exception: Received from localhost:9001, ::1. DB::Exception: Cannot get sizeOfField() for column ColumnNullable(ColumnVector<Int32>).
0 rows in set. Elapsed: 0.031 sec.
page_content_id - это Nullable(Uint32) . Использую replacingMergeTree.
Можете подсказать возможные решения? Может быть можно привести к UInt32

Alexey
31.03.2017
07:52:25


Andrey
31.03.2017
07:53:32
Алексей, большое спасибо!
Вопрос, а джоин будет в следующей версии работать только между двумя Nullable или между Nullable(<Type>) и <Type> тоже?

f1yegor
31.03.2017
08:05:05
Добрый день. Есть таблица user_properties с набором полей uuid, createdAt, name, age, region. В эту таблицу вносятся пользователи (их свойства). И вот теперь я хочу извлечь по каждому пользователю последние правки (то есть строку со всеми значениями столбцов, которая добавлялась последней)
Хотел попробовать это сделать с использованием limit N by.
Написал такой запрос:
select uuid, createdAt, name, age, region from user_properties order by createdAt limit 1 by uuid
Но при выполнении падает сам сервер БД (докер контейнер останавливается), что как-то странно. В таблице всего 4 строки.
ClickHouse server version 1.1.54189
Нет group by?

Alexey
31.03.2017
08:10:51
Нет group by?
Всё равно должно работать.
Надо посмотреть логи сервера.

Andrey
31.03.2017
08:23:41

Nikita
31.03.2017
09:46:40
а функция rowNumberInAllBlocks, возвращает номер строки во всех "прочитаннах" блоках или же во всех, что есть в таблице?
по результату выполнения кажется, что во всех прочитанных. и вопрос, почему если что-то указать в where то rowNumberInAllBlocks() вернет занчения начиная с единицы, а если ничего не указывать, то начиная с 0.

Dig
31.03.2017
12:30:58
При вставке в формате JSONEachRow теряются значения обрамленные в <>
пробовал экранировать: \<value\> - не помогает
INSERT INTO table FORMAT JSONEachRow
{"date":"2017-02-22","subject":"value1 <value2>","customFields":["List-Unsubscribe:<http://www.domain.com?u=blabla>","X-Mailer-SID:2007"]}
в subject будет только value1
в customFields будет: List-Unsubscribe:,X-Mailer-SID:2007

Google

Maksim
31.03.2017
13:39:10
Добрый день, подскажите пожалуйста есть статистика на 40 млн записей. каждый месяц растет на 10-15 млн. в будущем может достичь до 100 млн в месяц. До текущего времени мы использовали MySql выбирали только группировали определенные данные и записывали в кеш память, но запись стала очень медленной до 5 мин. ну и дальше все будет хуже. выбрали clickhouse. Какой лучше engine использовать для хранения такой статистики? (в mysql мы его прошардировали по месяцам - статистика за каждый месяц)

Igor
31.03.2017
13:40:23
mergetree

Maksim
31.03.2017
13:41:12
mergetree
нам надо распределенно обрабатывать запросы

Igor
31.03.2017
13:42:02
а потому что
> Движок Distributed не хранит данные самостоятельно, ...
Движок Distributed принимает параметры: имя кластера в конфигурационном файле сервера, имя удалённой базы данных, имя удалённой таблицы

Maksim
31.03.2017
13:42:56

Igor
31.03.2017
13:42:56
а данные храниться будут как раз в *MergeTree-таблицах. Можно ReplicatedMergeTree.

Maksim
31.03.2017
13:43:49

Stepan
31.03.2017
13:45:26

Igor
31.03.2017
13:45:38
в смысле - распределить?
делаете mergetree таблицу на сервере1, делаете mergetree таблицу на сервере2
делаете distributed таблицу на сервере0, которая будет смотреть на таблицы выше
делаете запросы в distributed-таблицу на сервере0
вес шардов можно указать в конфиге
насчет INSERTов - можно делать инсерты напрямую в mergetree таблицы (надо будет разруливать самим, че куда запишется)
можно инсертить сразу в distributed, тогда КХ будет разруливать сам, какие данные куда запишутся

Stepan
31.03.2017
13:47:12
Ребяты, кто-нибудь сталкивался с такой ошибкой: есть 100+ словарей, часть прогружается, а на остальные такая ошибка
Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = No thread available, e.what() = No thread available
Залез в код, написано 16 потоков в тредпуле доступно, но можно пул расширять вроде как, но как и почему это не делается внутренними средствами - хз

Maksim
31.03.2017
13:47:59

Igor
31.03.2017
13:48:00
а вам шардирование прям очень нужно? вроде масштабы не такие большие, сделайте реплики и норм
всё в одну таблицу, конечно

Igor
31.03.2017
13:48:38

Igor
31.03.2017
13:49:25
вообще, distributed для такого не нужен; если вам хочется разбивать данные на разные таблицы, можно движком Merge (не MergeTree) воспользоваться, он просто локально будет склеивать данные из нескольких таблиц
а на одном сервере будет достаточно одной MergeTree таблицы и всё
У MergeTree обязательно должен быть столбец с датой, данные разбиваются по месяцам этой даты как раз

Maksim
31.03.2017
13:50:22


Dmitry
31.03.2017
13:50:26
Ребяты, кто-нибудь сталкивался с такой ошибкой: есть 100+ словарей, часть прогружается, а на остальные такая ошибка
Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = No thread available, e.what() = No thread available
Залез в код, написано 16 потоков в тредпуле доступно, но можно пул расширять вроде как, но как и почему это не делается внутренними средствами - хз
Можно попробовать увеличить пул потоков в настройках. Сейчас это не очень удобно делается, в default профиле.
<yandex>
<!-- Profiles of settings. -->
<profiles>
<!-- Default settings. -->
<default>
<background_pool_size>25</background_pool_size>
...

Google

Dmitry
31.03.2017
13:50:37

Igor
31.03.2017
13:50:41

Maksim
31.03.2017
13:50:57
за 1 сек выборка через group by where выполнится?
вернее не так. sum(clicks) group by field where in (пару айдишек)

Igor
31.03.2017
13:51:33
если индекс есть по field то да

Maksim
31.03.2017
13:52:27
понял. окей, а если понадобится распределенно запросы выполнять потом это добавить быстро ?

Dmitry
31.03.2017
13:52:40
да

Stepan
31.03.2017
13:52:44

Maksim
31.03.2017
13:53:07
то есть просто создаю таблицу statistics с engine mergeTree

Igor
31.03.2017
13:53:17
дя

Maksim
31.03.2017
13:53:32
создаю схему. пишу скриптик который перегонит из mysql в clickhouse по открытому http
и все вроде
? )

Igor
31.03.2017
13:54:06
дя
если нет столбца "даты" в мускульных данных, так или иначе придется создать
можете заполнять дату из скриптика, можете повесить это на кликхаус, пофигу.
если решите повесить на кликхаус, то в схеме помимо столбца с датой-временем (типа такого:)
timestamp DateTime
создайте столбец
date Date DEFAULT toDate(timestamp)
а когда скриптиком будете данные вставлять, делайте инсерт, не указывая вообще столбец date. тогда он заполнится сам на основе значения из столбца timestamp

Maksim
31.03.2017
13:56:30
хотел бы еще поинтерисоваться читаю доку не могу понять данного набора полей
MergeTree(EventDate, intHash32(UserID), (CounterID, EventDate, intHash32(UserID)), 8192)
у меня в таблице уже есть поле date в виде timestamp
1) оно может быть использовано в качестве обяз. поля EventDate ?
2) UserID это для чего ?