@clickhouse_ru

Страница 612 из 723
antuan
06.08.2018
19:29:54
О. А сколько колонок в таблицах?
не помню, штук 50 что ли. а какое это имеет значение?

в разрезе данного вопроса :)

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;

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
А никто не проверял, реальный perforamce String vs Fixed String. Есть строка, размер которой от 1 до 1024, что реально быстрее? Вроде как fixed string должен быть, а как на самом деле?
FixedString имеет смысл использовать, когда размер действительно фиксированный. То есть, не от 1 до 1024, а всегда 32, например. В остальных случаях лучше предпочитать String.

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
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
Ок. В зависимости от толщины массивов может быть разумно уменьшить index_granularity а также размер пачки при вставке.
Я думаю, у меня в почтах именно размеры вставки не такие впечатляющие, как в кликах пользователей. Там будут жырные инсерты по тысяче записей - каждая на 2 килобайта текста, скажем, раз в 10 секунд

А вот медленный селект - это проблема, да

Алексей
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 например, и кворум, то должно быть ок, кворум не любит только параллельную запись.

У нас Kafka, но кворум победить не смогли. Задолбало ловить рандомно конфликты нод ZooKeeper, волево вырубили кворум.
И как в итоге выкручиваетесь без кворума? Пишете руками на каждую ноду самостоятельно, или смирились с асинхронной репликацией?

Sergey
07.08.2018
07:14:51
И как в итоге выкручиваетесь без кворума? Пишете руками на каждую ноду самостоятельно, или смирились с асинхронной репликацией?
Смирились. :) На носу придумывание и раскатка мастер-базы — поднимем какой-нибудь MySQL / PostgreSQL, раз в час будем сверять с КХ количество строк в таблицах, если что, дольём.

Алексей
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:28:07
Подскажите, наиболее быстрый способ загрузки данных в КХ. Данных очень много. И еще вопрос целесообразно ли использовать kafka?
csv Например, сейчас у меня из мускуля 1 час экспортится 50гигов csv. В КХ импортится все это минут за 6-7

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

Дмитрий
07.08.2018
10:33:57
Sergey
07.08.2018
10:43:31
Подскажите, наиболее быстрый способ загрузки данных в КХ. Данных очень много. И еще вопрос целесообразно ли использовать kafka?
Кафка хороша как накопитель. Грубо говоря, КХ любит одну пачку INSERT на тысячу строк, а не тысячу INSERT по строке. Соответственно, ставится Кафка, в которую в топики со всех концов льются понемногу данные, а с другого конца раз в секунду, например, что-то выгребает и стопками впихует в КХ.

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
Писал еще давненько. Лучше способа не нашел
А есть библиотека, которая обращается к client и напрямую льет данные в stdin?

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 *|

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