
Tima
06.08.2018
19:27:32

antuan
06.08.2018
19:29:54
в разрезе данного вопроса :)

Sergey
06.08.2018
19:30:39
Интересует размер моделей в смысле "это наш класс клика, у него три сотни полей".

Google

Sergey
06.08.2018
19:32:36
Ну т.е. я раньше прикидывал кейсы использования КХ и у меня получалось, что либо ORM не нужен, либо КХ используется как простобаза. Видимо, что-то пропустил.

antuan
06.08.2018
19:33:40
алхимию можно ипользовать не как орм, а как средство декларирования таблиц и генерации запросов
у неё есть core часть и orm часть, которая обертка над первой

Sergey
06.08.2018
19:34:15
Да, но объём кода и работы не тот же, что без Алхимии?

antuan
06.08.2018
19:34:17
вторую использовать никто не заставляет
не пробовал без неё)
ну в целом разница будет не велика
select([func.toMonday(table.x.time), func.count(), func.groupUniq(table.c.user_id)]).where(table.c.time >= X).group_by(func.toMonday(table.x.time))
вот пример запроса
думаю, можно представить, сколько он будет занимать на raw sql

Sergey
06.08.2018
19:36:57
Такой же, что и в raw, собсно.

antuan
06.08.2018
19:37:06
в целом да
только табличку описать надо будет :)

Google

antuan
06.08.2018
19:37:22
но структурированней получается эт точно

Sergey
06.08.2018
19:37:24
А нафига тогда? :) Привычка?

antuan
06.08.2018
19:37:30
крайне полезно при генерации запросов
на ходу
ну и да, привычка

Sergey
06.08.2018
19:37:55
Понятно. Спасибо. :)

antuan
06.08.2018
19:37:58
оверхеда почти нет, так что почему бы и нет

Denis
06.08.2018
19:44:36
А как работает alter колонок? UInt64-> Int64, UInt32 -> UInt64, Float32 -> Int32, при мердже меняет или на лету (во время select)?
create table x (a Float32) engine=MergeTree partition by tuple() order by tuple();
insert into x values (-1000), (4.3), (3.14), (3000), (-100400.4);
alter table x modify column a Int32;

Alexey
06.08.2018
19:46:50

Denis
06.08.2018
19:47:28
т.е. на колонке размером 1 TБ, придется ждать?

Alexey
06.08.2018
19:47:35
Да.

Denis
06.08.2018
19:48:15
А кстати insert в этот момент, пока alter идет, в каком типе делать?

Denis
06.08.2018
19:50:07
А никто не проверял, реальный perforamce String vs Fixed String. Есть строка, размер которой от 1 до 1024, что реально быстрее? Вроде как fixed string должен быть, а как на самом деле?

Alexey
06.08.2018
19:53:12

Denis
06.08.2018
19:56:15

Combot
06.08.2018
19:56:15
Denis (0) увеличил репутацию Alexey Milovidov (3)

Vyacheslav
06.08.2018
20:01:28
/stat@combot

Combot
06.08.2018
20:01:28
combot.org/c/-1001080295593

Vsevolod
06.08.2018
20:25:10
О, кстати, Алексей, хотел спросить, насколько плохая идея вместо fat width таблицы использовать много, объединенных по индексу FixedString(32)?

Google

Alexey
06.08.2018
20:26:05

Vsevolod
06.08.2018
20:26:13
То есть, сам по себе memcmp для 32х байт - это довольно быстро, но там растет число джоинов
В принципе, у меня момент, когда я могу все кардинально поломать
Вопрос в том, насколько быстрее будет жирная таблица

Alexey
06.08.2018
20:28:50
Много JOIN-ов плохо работает - как по удобству (сейчас более одного JOIN-а в запросе писать трудно), так и по скорости (для JOIN правая часть сохраняется в хэш-таблицу и по ней делаются lookup-ы).

Vsevolod
06.08.2018
20:30:18
То есть, лучше сделать колбасу без возможности миграции?

Alexey
06.08.2018
20:31:22
Если только она не слишком широкая. Слишком - это многие тысячи столбцов - тогда вставки будут медленными. Впрочем, если всегда вставляется всё сразу, то толстая таблица всё-равно лучше.

Vsevolod
06.08.2018
20:32:19
Хотя я сам склоняюсь к такому варианту - я слишком думал о flexibility, забывая, что ch - это не мускуль с row oriented идеологией
У меня толстые массивы
Колонок там будет точно меньше тысячи

Alexey
06.08.2018
20:33:55
Ок. В зависимости от толщины массивов может быть разумно уменьшить index_granularity а также размер пачки при вставке.

Vsevolod
06.08.2018
20:36:38
А вот медленный селект - это проблема, да

Alexey
06.08.2018
20:39:08

Алексей
06.08.2018
20:44:07
господа а как долго может продлится стадия Starting up tables. ?
чот уже 20 минут в логе это последняя запись
данных не скзать что много. чуть больше 1t. но по ресурсам не видно что бы что то потреблялось. просто висим и всё

Alexey
06.08.2018
20:50:17
В основном это зависит от числа таблиц и числа кусков в них. В случае если таблицы маленькие, но их много, ClickHouse будет выводить в лог прогресс в процентах.
Также он выводит, какие именно таблицы он загружает.

Google

Алексей
06.08.2018
20:52:25
сам себе отвечу. 30 минут.

Alexey
06.08.2018
20:54:02
увы нет
Наверное вы переключили логгирование в information.
2018.08.06 22:45:31.162028 [ 2 ] <Debug> default.hits_1000m (Data): Loading data parts

Алексей
06.08.2018
20:54:14
да конечно в information

Alexey
06.08.2018
20:54:58
А может быть 30 минут - это таймаут для источника словаря, как написано в логе?

Алексей
06.08.2018
20:55:02
на трассе слишком много информации. я бы и инфо наверное бы хотел избавить от <Information> HTTPHandler: Done processing query

Alexey
06.08.2018
20:56:59
Наверное для соединения с этим словарём такой таймаут.

Алексей
06.08.2018
20:57:14
хм. проверю. спасибо

Vladimir
06.08.2018
21:03:31
/stat@combot

Combot
06.08.2018
21:03:33
combot.org/c/-1001080295593

Олег Иванович
07.08.2018
04:37:58
подскажите, как посмотреть подробности, в чем именно ошибка
текст ошибки такой
[ClickHouse SQL] Code: 36, e.displayText() = DB::Exception: Sampling expression must be present in the primary key, e.what() = DB::Exception
это был запрос на создание таблицы

Vasilij
07.08.2018
05:35:25
У нас Kafka, но кворум победить не смогли. Задолбало ловить рандомно конфликты нод ZooKeeper, волево вырубили кворум.
А вы писали на какой-то одной реплике, или пытались на многих (в то смысле, что это проблема именно Кафка<->кворум, или параллельность<->кворум)? Я так понимаю, если запустить четко один поток записи на одной реплике, через MV например, и кворум, то должно быть ок, кворум не любит только параллельную запись.


Sergey
07.08.2018
07:14:51
А вы писали на какой-то одной реплике, или пытались на многих (в то смысле, что это проблема именно Кафка<->кворум, или параллельность<->кворум)? Я так понимаю, если запустить четко один поток записи на одной реплике, через MV например, и кворум, то должно быть ок, кворум не любит только параллельную запись.
Это точно не проблема Кафки, т.к. конфликт кворума возникал в основном без неё, когда мы интенсивно скриптом мигрировали данные из Эластика в КХ.


Алексей
07.08.2018
09:40:09
коллеги, добрый день!
по чатику найти не смог, поэтому напишу повторно, звиняйте, если что.
баг:
1. таблица id, str, int
2. строка значений: 1, 'some text \\', 0
3. при выгрузке в csv получаем строку 1,"some text \",0
4. при этом получается экранированная слэшом кавычка, что не даёт правильно распарсить csv штатными средствами

Alexander
07.08.2018
09:41:20
А хотелось бы чтобы там осталось \\?

Google

Алексей
07.08.2018
09:44:02
ну, конечно
версия 1.1.54390
т.е. даже не так: там должно быть \\\\, чтобы обратно эта строка в кавычках разбиралась как \\

Roman
07.08.2018
10:25:49
Подскажите, наиболее быстрый способ загрузки данных в КХ. Данных очень много. И еще вопрос целесообразно ли использовать kafka?

Дмитрий
07.08.2018
10:27:16

Юрий
07.08.2018
10:28:07

Roman
07.08.2018
10:29:54
Порядка 300-400 гб в час в csv файлах

Дмитрий
07.08.2018
10:33:57

Eugene
07.08.2018
10:39:22

Sergey
07.08.2018
10:43:31

Eugene
07.08.2018
10:44:10
https://stackoverflow.com/questions/47708424/importing-from-mysql-dump-to-clickhouse
Писал еще давненько. Лучше способа не нашел

Roman
07.08.2018
10:58:47

Kirill
07.08.2018
11:00:55

Roman
07.08.2018
11:06:36
А чем cat не устроил?
У меня не один файл, а несколько тысяч и новые выпадают раз в 5-10 секунд. Просто плохо представляю как это сделать через cat. Могли бы вы поподробнее объяснить.

Evgeny
07.08.2018
11:07:01
cat * |

Alexander
07.08.2018
11:08:19
лучше уж тогда tail -f *|