@clickhouse_ru

Страница 102 из 723
Igor
31.03.2017
13:58:42
нет, timestamp не может быть использован в качестве обязательного поля EventDate, если у вас это timestamp с временем. я выше ответил - MergeTree разбивает данные по месяцам самостоятельно для эффективности работы. вашим языком, шардирует данные помесячно, локально, по директориям, и потом, когда вы делаете запросы, вы указываете диапазон нужных дат (собрать стату за январь например). и он читает только данные за январь, остальные данные ваще никак не трогает. я выше описал, как можно поступить, если есть timestamp, но нет date )

Maksim
31.03.2017
14:00:01
афигеть

да я понял на счет этого поля. могли бы вы пояснить на счет конструкции и вопросов по ней? а то я в неком замешательстве )

Stepan
31.03.2017
14:02:32
Можно попробовать увеличить пул потоков в настройках. Сейчас это не очень удобно делается, в default профиле. <yandex> <!-- Profiles of settings. --> <profiles> <!-- Default settings. --> <default> <background_pool_size>25</background_pool_size> ...
Дмитрий, нужно ли перезапускать кликхаус сервер или как сами словари все подхватиться на лету? (спрашиваю, собсно, потому что походу не подхватилост, а ребутнуть непросто нынче)

Google
Igor
31.03.2017
14:04:45
да я понял на счет этого поля. могли бы вы пояснить на счет конструкции и вопросов по ней? а то я в неком замешательстве )
https://groups.google.com/d/msg/clickhouse/eUrsP30VtSU/p4-pxgdXAgAJ попробуйте вот этот ответ почитать, должно стать понятней )

Maksim
31.03.2017
15:21:02
https://groups.google.com/d/msg/clickhouse/eUrsP30VtSU/p4-pxgdXAgAJ попробуйте вот этот ответ почитать, должно стать понятней )
не совсем понял из прочитанного. MergeTree(EventDate, intHash32(UserID) - eventDate поле обязательное. UserID в данном контексте что означает ? автоинкремент поле?

Igor
31.03.2017
15:21:55
>_>

нет

аргументами после указания движка MergeTree указываются столбцы (или выражения), имеющиеся в таблице, по которым надо строить индекс, условия для семплирования и прочую фигню предположим, у вас есть таблица с полями EventDate, EventTimestamp, UserID, CounterID, URL, Referer UserID - это столбец в таблице, intHash32(UserID) - условие для семплирования > Движок принимает параметры: имя столбца типа Date, содержащего дату; выражение для семплирования (не обязательно); кортеж, определяющий первичный ключ таблицы; гранулированность индекса. Пример:

Maksim
31.03.2017
15:27:28
а то есть поле с датой, потом первичные ключи и значение граниулирования индекса

Igor
31.03.2017
15:27:38
дя

Maksim
31.03.2017
15:27:41
пропустил видимо этот кусок контекста

Vladislav
31.03.2017
15:27:55
заметил ошибку при выборке семпированных данных: SELECT count(*) FROM apps_clickstream_local SAMPLE 1 / 100 Received exception from server: Code: 10. DB::Exception: Received from /server/:9000, ip. DB::Exception: Not found column cityHash64(device_id) in block. There are only columns: app_name, os_name, device_id, event_time.

Maksim
31.03.2017
15:28:25
спасибо игорь вы прям гуру)) очень сильно мне помогли пойду воевать и загружать данные) большущее спасибо

Igor
31.03.2017
15:28:25
а если count()?

Google
Vladislav
31.03.2017
15:28:40
то же самое

Igor
31.03.2017
15:28:45
Maksim
31.03.2017
15:29:17
Stepan
31.03.2017
15:45:45
конкретно для данной опции надо рестартить, к сожалению
Спасибо, к сожалению, не помогло, все та же Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = No thread available, e.what() = No thread available Какая-то часть словарей (12) прогружается, а на остальных вот такая ошибка, печально...

Stepan
31.03.2017
15:57:44
Ага, проверял, именно те 110, что прописал в users.xml

evervoid
31.03.2017
16:00:55
Всем привет! Как сейчас обстоят дела с поддержкой NULL в таблицах? Можно ли где-то вообще следить за новостями разработки?

Alexey
31.03.2017
16:01:42
Ага, проверял, именно те 110, что прописал в users.xml
Не надо 110, будет плохо. Лучше уберите эту настройку назад. С сообщением no thread available это не связано.

Stepan
31.03.2017
16:02:38
Не надо 110, будет плохо. Лучше уберите эту настройку назад. С сообщением no thread available это не связано.
Хорошо, а с чем такое может быть связано? При меньшем количестве словарей те, которые помечены как no thread available нормально подгружаются

Есть какие-то ограничения на количество словарей в одном файле? (нет, ну мало ли..)

Shine
31.03.2017
16:11:08
Всем привет! Как сейчас обстоят дела с поддержкой NULL в таблицах? Можно ли где-то вообще следить за новостями разработки?
Алексей уже наверное устал отвечать на этот вопрос. Вкратце - с нулами не очень все хорошо (пока), за новостями можно следить из коммитов :), например из хорошего и свежего: починилась вставка нуллов и добавились джойны для nullable столбцов, но это прям свежее и еще не выкатывалось. Когда нуллы будут полностью поддерживаться, они добавятся в документацию и насколько я понял, нуллы довольно приоритетны, т.е. все проблемы с нулами решатся как только, так сразу )

evervoid
31.03.2017
16:12:00
Спасибо! А нет какого-нибудь блога/твиттера для анонсов?

papa
31.03.2017
16:19:52
changelog.md

Alexey
31.03.2017
16:43:46
Есть какие-то ограничения на количество словарей в одном файле? (нет, ну мало ли..)
Насколько я помню, нет. А где написано No thread available? В system.dictionaries?

Stepan
31.03.2017
16:45:47
Да, именно там

Alexey
31.03.2017
16:46:12
А как в точности там написано?

Stepan
31.03.2017
16:48:38
Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = No thread available, e.what() = No thread available Я чуть позже проверю всю сотню словарей, может ошибка в одном как-то (может где-то не на int ссылается или еще что) аффектить другие?

Maksim
31.03.2017
17:07:09
а если count()?
Скажи пожалуйста. а автоинкремент поле как в clickhouse создать ?

Dmitry
31.03.2017
17:08:20
Никак

Maksim
31.03.2017
17:08:57
а почему его нету?

Google
Pavel
31.03.2017
17:09:59
а зачем?

мне кажется это убьет всю идею распределенности CH

Dmitry
31.03.2017
17:10:17
Тут есть нескоько ответов: Во первых КХ распределенная БД, поэтому пришлось бы как-то синхронизировать счетчик между хостами

Pavel
31.03.2017
17:10:21
автоинкремент - поганая вещь

во-вторых, вы можете эмулировать это на Kafka.

Dmitry
31.03.2017
17:10:54
Во вторых в КХ он не нужен, т.к. нету уникального PK

Pavel
31.03.2017
17:10:54
и вставлять номера сообщений, если так хочетс как обычное поле

Maksim
31.03.2017
17:13:26
я понял спасибо)

а null по default как установить ?

подскажите плиз decimal(16,8) mysql какой тип выбрать в clickhouse ?

float32 ?

Вася
31.03.2017
17:54:22
String надёжнее всего.

Maksim
31.03.2017
18:12:43
чем надежнее? просто я так понимаю string намного больше места занимает

Igor
31.03.2017
18:21:43
чем надежнее? просто я так понимаю string намного больше места занимает
тем, что при инсерте 13.37 не будет вероятности получить в селекте 13.39? =)

Maksim
31.03.2017
18:25:46
Igor
31.03.2017
18:25:52
ну это же float

с 13.37 я утрировал, конечно

конечно, может

Maksim
31.03.2017
18:26:15
вроде должно быть норм

Google
Igor
31.03.2017
18:26:44
ну а строка она и есть строка, че ей будет хотя, если в разных кодировках их запихивать, то да, тоже ничего хорошего

Maksim
31.03.2017
18:26:56
блин

поменяю на string

Igor
31.03.2017
18:27:49
а прям обязательно значения после запятой? просто, например, в случае с баблом (рублями там) можно домножать на 100 и хранить в Int'е в копейках

Maksim
31.03.2017
18:29:48
а прям обязательно значения после запятой? просто, например, в случае с баблом (рублями там) можно домножать на 100 и хранить в Int'е в копейках
я про стринг спрашивал. у меня там строка будет. хотя может быть какая нибудь строка будет содержать число и что реально другое значение в таком случае вернет ?

Igor
31.03.2017
18:30:26
эээммм

если вы храните данные в String, то нет, с ними ничего не будет плохого

если во Float32/Float64 - то возможна потеря точности

так же, как в языках программирования, субд и прочих штуках на примере: :) create table floats_are_bad (x Float32) ENGINE = Memory; :) insert into floats_are_bad values (123.456), (1234567.8901234), (9999999.9999) :) select * from floats_are_bad ┌─────────x─┐ │ 123.456 │ │ 1234567.9 │ │ 10000000 │ └───────────┘

Maksim
31.03.2017
18:33:33
блин

у меня decimal(16,8)

там сумма написана

какой тип использовать ?

Вася
31.03.2017
18:34:45
Я прошу прощения за неудачный сарказм. Не надо хранить в String. Если нужна абсолютная точность, умножьте на десять в нужной степени и храните в Int64. Главное чтобы не переполнилось.

Igor
31.03.2017
18:34:49
ну грустно, что. можете разбить на два инта - до запятой и после запятой. можете хранить в String, но тогда потеряете возможность эффективно считать всякие суммы и прочее. надо будет строку конвертировать во float (привет, потеря точности), и над ней уже делать агрегацию

Maksim
31.03.2017
18:39:20
а если одно поле то какое решение в моем случае? мне нужно будет считать sum по этим полям decimal

Vladislav
31.03.2017
18:40:56
хранить x * 100000000

в int64

и каждый раз не забывать умножать/делить :)

Maksim
31.03.2017
19:15:02
не понял

Google
Maksim
31.03.2017
19:15:06
так int это ведь целое число

и почему float как тип с плавающей запятой хуже int ?

papa
31.03.2017
19:25:14
https://www.google.ru/search?q=почему+нельзя+хранить+деньги+в+float

Maksim
31.03.2017
19:30:14
мы используем decimal в mysql он точно отображает сумму. в clickhouse я так понял аналога такому типу нету. соответственно единственное решение int как вы описываете, но не пойму как int может быть не целым. ведь это целочисленный тип

papa
31.03.2017
19:34:26
в этом случае можно хранить миллионные доли копеек, если они у вас целое чисило.

papa
31.03.2017
19:49:00
123.456 => 123456000

Maksim
31.03.2017
19:50:18
123.456 => 123456000
и что это? как потом понять из этого 123456000 где дробная а где целая часть?

Igor
31.03.2017
19:50:47
постоянно умножаете и делите на одно и то же число

на 10000000 там, или сколько надо

Maksim
31.03.2017
19:54:42
я понял вас спасибо)



а индексы для MergeTree

они тут?

Igor
31.03.2017
19:55:48
дя

Maksim
31.03.2017
19:56:27
ну сча я наэспериментирую )) подключил драйвер создам заново схему. я так понял лучше использовать string для строк?

papa
31.03.2017
19:56:39
индекс один, в остальном да.

Maksim
31.03.2017
19:56:42
или FixedString(70) пойдет?

Igor
31.03.2017
19:57:37
ну если поместится в 70 символов то пойдёт не поместится - печалька + зпдолбаетесь NUL-байты убирать

papa
31.03.2017
19:57:53
FixelString обычно для блобов фиксированного размера используется.

Maksim
31.03.2017
19:58:25
я почему его выбрал. хотел уменьшить размер базы. за счет ограничения длины

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