@clickhouse_ru

Страница 18 из 723
Dmitry
22.11.2016
16:29:07
и монотоно возрастает, кстати

Alexey
22.11.2016
16:29:15
В монге хорошо сделано - id это текущее время+id машины клиента+счётчик

Roman
22.11.2016
16:29:19
UUID позволяет просто одни данные отличить от других (при условии, что он уникален на реальных объемах).

А монотонно возрастающий счетчик позволяет не только данные отличить одни от других, но и последовательность вставки отследить.

Google
Dmitry
22.11.2016
16:30:01
ну да

если нужна сортировка по времени - сойдет и по object id

Roman
22.11.2016
16:30:14
Последнее — отслеживание послеовательности вставки — ни кому кроме Алексея не надо?

Fike
22.11.2016
16:30:28
Igor
22.11.2016
16:30:31
последовательность вставки - как и зачем, в рамках MergeTree? там же группируется все по дате

Dmitry
22.11.2016
16:30:38
https://docs.mongodb.com/v3.2/reference/method/ObjectId/

Roman
22.11.2016
16:30:43
не, если у вас 5 джобов загрузки в 10 таблиц, то никто не мешает, если 300 джобов и 2 тыс таблиц и до тучи еще 4 ETL зоопарк, то веселуха
Можешь пояснить "для чайников" — зачем тебе отслеживать последовательность распределенной вставки данных (многими агентами) в распределенное же хранилище?

Igor
22.11.2016
16:30:46
ну хорошо, будет опциональный ключ

Dmitry
22.11.2016
16:31:07
если уж отслеживать -- то последовательность вставки в систему-источник

Вот там и отслеживайте

А если какой-нибудь SAP наплодил таблиц, так у них и так везде UUID

Fike
22.11.2016
16:37:06
В монге хорошо сделано - id это текущее время+id машины клиента+счётчик
Я, если честно, не вижу преимуществ перед простым рандомом

Alexey
22.11.2016
16:39:04
Я, если честно, не вижу преимуществ перед простым рандомом
некоторая гарантия отсутствия коллизий в виду монотонности по времени

Google
Roman
22.11.2016
16:39:12
могу как разработчик ETL сразу мега полезное свойство сиквенседов привести- это инкреметный захват данных. timestamp не всегда прокатывают, а вот sequence милое дело
По рекомендациям разработчиков, в ЯКХ данные нужно вставлять данные "редко" — ну грубо говоря не чаще 1 раза в секунду на 1 ноду. В таких условиях уникальным ключем вставки может быть комбинация id ноды и таймстемп, а сиквенсом просто таймстемп.

Igor
22.11.2016
16:39:58
а что с ними еще делать?

Vladislav
22.11.2016
16:39:59
вроде я видел ограничение только на запросы

Igor
22.11.2016
16:40:02
не удалять же %)))

Vladislav
22.11.2016
16:40:08
а не на вставку

можно ссылку?

Igor
22.11.2016
16:40:19
нет, там именно вставка. че-т типа большими инсертами >1000 строк

Roman
22.11.2016
16:40:20
вставлять? о_0
Поручик Ржевский, молчать! :)

Alexey
22.11.2016
16:40:37
не слишком, если честно

Igor
22.11.2016
16:42:01
Производительность при вставке данных. Данные рекомендуется вставлять пачками не менее 1000 строк или не более одного запроса в секунду.

https://clickhouse.yandex/reference_ru.html#Производительность

whatever

Evgeniy
22.11.2016
16:50:08
Evgeniy
22.11.2016
17:00:58
Последнее — отслеживание послеовательности вставки — ни кому кроме Алексея не надо?
это все нужно когда разгребаешь инциденты при умножении данных на кривые справочники. тут вроде уже реклмендовали всем переходить на 6 нормальную форму )

Vladimir
22.11.2016
17:02:40
Тарантул? :) Даешь импортозамещение!
В том случаи самописный сервис был, ибо решение ооочень старое.

Roman
22.11.2016
17:10:23
В том случаи самописный сервис был, ибо решение ооочень старое.
Я пошутил. Просто недавно в этом чатике проскакивал вопрос о том, чем ЯКХ от Тарантула отличается и каковы у них области применения. Вот неплохой пример — узкая, но важная задача — генерить уникальные сиквенсы для интеграционных процессов.

Google
Vladimir
22.11.2016
17:10:44
Как вариант :)

Evgeniy
22.11.2016
17:39:57
вопрос. много узлов к одному внешнему диску . взлетит ?

Alexey
22.11.2016
17:40:33
вопрос. много узлов к одному внешнему диску . взлетит ?
Работать будет, но этот вариант не оптимален.

Evgeniy
22.11.2016
18:31:38
Работать будет, но этот вариант не оптимален.
вторая попытка ): Жесткий диск- это enterprise решение

#запрос_на_доработку в клиенте нужно сделать настраиваемым ограничение на количество выводимых строк - по умолчанию 1000

Igor
22.11.2016
18:50:14
почему не 10к?

Igor
22.11.2016
18:51:43
а, я думал, кстати, что такой параметр в настройках есть

Alexey
22.11.2016
18:52:12
И в настройках тоже есть - max_result_rows.

Igor
22.11.2016
18:52:40
о, проглядел, значит :) спасибо!

не, это не то

❯ echo 'SELECT * FROM system.numbers LIMIT 100000 FORMAT PrettyCompact;' | clickhouse-client --max_result_rows=10000 Received exception from server: Code: 158. DB::Exception: Received from localhost:9000, 127.0.0.1. DB::Exception: Limit for result rows exceeded: read 65536 rows, maximum: 10000.

имелось в виду, именно выводимых на экран одновременно

А здесь при попытке забрать больше эксепшн

Т.е. хочется, я так понимаю, возможность изменять максимальное кол-во отображаемых Pretty-форматами в интерактивном режиме строк А еще в идеале пейджер ))

Alexey
22.11.2016
18:56:48
Понятно.

Evgeniy
23.11.2016
05:34:34
вопрос по использованию массивов в качестве значения поля. Есть ограничения ? какие предельные размерности ?

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

Google
Igor
23.11.2016
05:41:22
в доках писали, что многомерные массивы - на свой страх и риск

> Многомерные массивы не рекомендуется использовать, так как их поддержка довольно слабая (например, многомерные массивы нельзя сохранить в какую-либо таблицу кроме таблиц типа Memory).

Evgeniy
23.11.2016
05:42:05
вопрос про view и union all . поддерживает ли оптимизатор чтение выделенных секционированных данных через по след . признаку seleсt '1' as e, bb.* from ff_1 where e='1' union all select '2' as e, bb.* from ff_2 where e='2' .. т.е. если я обращусь к view c условием e='2' прочитаются все или только таблица ff_2 ?

вопрос про поддерживаемые периоды . например я в апп буду синтетически мапить свои справочники в хеш а потом в код месяца , что бы использовать это как ключ партиции. так вот какая минимальная и максимальная дата поддерживается в системе ?

Igor
23.11.2016
06:01:48
минимальная - 1970-01-01 (которая может быть видна как 0000-00-00) максимальная - 2038-01-19 (toDate(24855)) при попытке сделать SELECT toDate(24855) + 1; получится 0000-00-00

кстати, документация, похоже, неактуальна > В качестве исключения, если делается преобразование из числа типа UInt32, Int32, UInt64, Int64 в Date, и если число больше или равно 65536, то число рассматривается как unix timestamp :) select toDate(toInt64(24856)); 0000-00-00 это баг или лучше исправить документацию?) казалось бы, можно использовать даты до 32768

Dmitry
23.11.2016
06:48:32
Всем привет! А где можно прочитать про внутреннюю архитектуру click house в сравнении с другими аналогами такими как impala, drill и так далее?

Dekin
23.11.2016
08:23:04
Всем привет! А где можно прочитать про внутреннюю архитектуру click house в сравнении с другими аналогами такими как impala, drill и так далее?
По поводу impala: это надстройка над Hadoop, поэтому ее архитектуру сравнивать с CH бессмысленно, т.к. в последнем вообще не map reduce модель вычислений. Drill - это "свободный от хранилища" аналитический движок, созданный с целью хоть что-то разумное посчитать в зоопарке всяческих schema-free NoSQL, т.е. вообще ПО другой категории. Можно, кстати, CH в него интегрировать, если очень хочется. Архитектура ClickHouse хорошо описана тут: https://github.com/yandex/ClickHouse/blob/master/doc/developers/architecture.md

Dmitry
23.11.2016
08:39:34
Impala не надстройка, а отдельный инструмент. Там не используется парадигма map reduce

Ссылку за архитектуру спасибо

Dekin
23.11.2016
08:43:24
А, интересно. Просто определение "native database for Hadoop", видимо, сбило с толку в свое время. Почитаю тогда о ней побольше. Спасибо.

Dmitry
23.11.2016
08:53:46
Чуть позже скину хорошую статью про неё

Dekin
23.11.2016
09:19:13
Спасибо. Пока нашел вот это: http://www.cidrdb.org/cidr2015/Papers/CIDR15_Paper28.pdf

Dmitry
23.11.2016
09:21:04
Да, это именно она

Классно было бы иметь подобную статью по CH в каком-нибудь цитируемом журнале

Evgeniy
23.11.2016
09:40:26
Классно было бы иметь подобную статью по CH в каком-нибудь цитируемом журнале
Это вопрос лишь денег . Задайте вопрос своим маркетологам

Dekin
23.11.2016
10:14:56
Это вопрос лишь денег . Задайте вопрос своим маркетологам
Нормальные научно-технические журналы печатают за просто так, главное, чтобы статья была по тематике. Как говорил @milovidov_an на встрече в понедельник, главное "совершить насилие над собой и потратить на это драгоценное время" (за точность цитаты не ручаюсь).

Alexey
23.11.2016
12:41:04
вопрос про view и union all . поддерживает ли оптимизатор чтение выделенных секционированных данных через по след . признаку seleсt '1' as e, bb.* from ff_1 where e='1' union all select '2' as e, bb.* from ff_2 where e='2' .. т.е. если я обращусь к view c условием e='2' прочитаются все или только таблица ff_2 ?
Lookup будет в обе таблицы. Если e - первый столбец ключа, то lookup в той таблице, где нет такого значения, будет простым, но всё-равно потребуется прочитать один небольшой блок данных.

Google
Arthur
23.11.2016
14:06:22
А что делает all right join? Его нет в документации, а результат отличается от all left join со сменой таблиц местами

Evgeniy
23.11.2016
14:50:52
ну да при скорости чтения с узла 3 Gb/sec можно и прочитать лишний блок ))
Скорость которую показывает клиент - это же скорость логического чтения , т.е. считается от объема распакованных даных , а можно ли вывести скорость физического чтения ?

Darafei
23.11.2016
14:51:25
iotop?

Марк ☢
23.11.2016
14:52:07
atop

Valeriy
23.11.2016
14:53:01
Скажите, пожалуйста, совсем дурацкая идея использовать rand() как выражение для сэмплирования? Учитывая, что он еще и в ключе должен содержаться. Наверное вопрос можно даже так сформулировать: обязано ли выражение для сэмплирования выдавать для одной и той же строки один и тот же результат? Что-то подсказывает, что должно, но вдруг. В документации сказано лишь: "Выражение для сэмплирования (использовать не обязательно) - произвольное выражение."

Evgeniy
23.11.2016
14:54:22
atop
с кластера ?

Марк ☢
23.11.2016
14:54:52
хз. atop просто лучше показывает инфу чем iotop

я тут просто мимо проходил

Evgeniy
23.11.2016
14:55:56
хз. atop просто лучше показывает инфу чем iotop
Я просто о том что на кластере померить физическое чтение одного запроса будет еще той задачкой.

Марк ☢
23.11.2016
14:56:20
ээээ. я не следил за темой...

Dekin
23.11.2016
15:04:02
Я просто о том что на кластере померить физическое чтение одного запроса будет еще той задачкой.
Наверняка это все можно посмотреть через графит, в который CH передает достаточно много данных мониторинга.

Alexey
23.11.2016
15:05:58
А что делает all right join? Его нет в документации, а результат отличается от all left join со сменой таблиц местами
Да, это RIGHT JOIN. Результат такой же, как если таблицы для LEFT поменять местами. Но способ выполнения не симметричен. Рассмотрим подробнее: LEFT JOIN выполняется так: - результат правого подзапроса засовываем в хэш-таблицу в оперативке; - сканируем левую таблицу и делаем лукапы. RIGHT JOIN выполняется так: - результат правого подзапроса засовываем в хэш-таблицу в оперативке; - сканируем левую таблицу и делаем лукапы; при этом отмечаем флажками, какие строки справа были использованы; - добавляем в результат то, что не было использовано справа. То есть, в обеих случаях, левая таблица читается потоково, а по правой формируется хэш-таблица в оперативке. Независимо от того, LEFT или RIGHT JOIN.

Arthur
23.11.2016
15:07:22
Алексей, спасибо! Теперь понятно)

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