@clickhouse_ru

Страница 66 из 723
Alibek
10.02.2017
22:21:16
разраб сказал?
да, сказал, где-то на github он дал развернутый ответ почему он считает что message system не должна ничего хранить.

Fike
10.02.2017
22:21:47
то есть весь этот сыр-бор ради защиты чести одного разраба?

Alibek
10.02.2017
22:22:39
то есть весь этот сыр-бор ради защиты чести одного разраба?
да нет, он обосновал это плюс опирался на свой опыт создания систем сообщений ранее.

Fike
10.02.2017
22:23:09
боже, ну серьезно что ли

Google
Alibek
10.02.2017
22:29:12
боже, ну серьезно что ли
https://github.com/nats-io/gnatsd/issues/38

Fike
10.02.2017
22:31:34
Я про то, что ты рьяно сражаешься за систему, которую, кхм, тебе немного профорсировали

И оперируешь явно не техническими аргументами

Alibek
10.02.2017
22:33:38
Я про то, что ты рьяно сражаешься за систему, которую, кхм, тебе немного профорсировали
Не понял? Ты сейчас о чём? Какое сражение? kafka и gnatsd приведены в пример, а не для сражения.

И оперируешь явно не техническими аргументами
Это вообщее к чему? Я конкретно отвечал на конкретный вопрос - "а чем функционально отличаются kafka & gnatsd?"

Alexey
10.02.2017
22:43:17
> @milovidov_an > У нас более старая версия CityHash > сохранены значения старой версии CityHash, поэтому мы не можем её обновить Алексей, cпасибо за подробный ответ, мы этого и боялись что CityHash может меняться, нам нужно было партировать на наших клиентов: с++,java,php,js - реализацию как в CH, чтобы клиенты могли такой-же вычислять хеш как и CH и это было бы не изменно) Еще пару вопросов, хочу реализовать в CHgui, просмотр процессов с возможностью Kill и реализовать получение информации о ходе выполнения запроса ( сделать недо подобие clickhouse-client через http) : Насколько опасно в запросы из CHgui подставлять комментарий в виде /*__QUID__*/ в начале каждого запроса, где QUID=sha1(), насколько я смог понять из кода/документации самого CH комменты вырезаются и придумать/смоделировать, когда однострочный комментарий перед/в конце SELECT может вызвать проблему - не реально ? Насколько корректно отправлять KILL на запрос, через отправку запроса "SELECT 1" в GET указывая query_id ? И как можно убить запрос в кластере ? Не смог разобраться/понять зачем initial_query_id, получается это ID запроса в ноде которая породила запросы в кластер ?
Комментарий в начало запроса подставлять безопасно. Также у нас была старая не реализованная идея - сделать в HTTP запросе параметр comment, который пробрасывался бы в processlist и в query_log. В master ветке ClickHouse и в следующем релизе есть запрос KILL QUERY специально для остановки запросов. Он убивает запрос, в том числе, и на всём кластере - достаточно задать на инициирующем сервере. initial_query_id - идентификатор запроса на инициирующем сервере. Предназначен для трассировки распределённых запросов, чтобы SELECT-ом из распределённого query_log-а можно было получить дерево запрсов на всех серверах.

Slach
11.02.2017
04:50:33
https://github.com/coreos/zetcd

Если и кто то заведет это для кликхаус дайте знать?

Dmitry
11.02.2017
06:48:52
а на скока я понимаю, нет пока дб провайдера для .net?

Anatoly
11.02.2017
06:50:36
а на скока я понимаю, нет пока дб провайдера для .net?
там есть odbc. там http протокол не сложный. можно сесть и написать :)

Dmitry
11.02.2017
06:57:54
так вот как раз - утро, суббота, думаю чем бы заняться))

Google
Dmitry
11.02.2017
06:57:54
там есть odbc. там http протокол не сложный. можно сесть и написать :)

Alexey
11.02.2017
08:24:18
https://github.com/coreos/zetcd
Спасибо, не знал что такое существует. Будет удивительно, если оно работает без особых проблем.

Konstantin
11.02.2017
09:03:58
Да, интересная ссылка, надо бы попробовать

Я не помню, здесь или живьём где-то рассказывал, что Zookeeper невозможно собрать только из исходников, без блобов (или хотя бы только с блобами-сборщиками типа maven, grable и тп).

Это к вопросу понимания того, что используешь

Там есть две крайне старые библиотеки, исходные коды которых существуют только в виде форков, найти из именно тот код, из которого были собраны jar во всяких репах — получается, невозможно

В одной из них, кстати, на сколько я понял, реализован свой SSL (зачем?-то) образца нескольколетней давности С sslv3. Не знаю, уж можно ли в зукипере каким-нибудь коннекшином инициировать уязвимое соединение или нет, но всё равно, это очень грустно

Alibek
11.02.2017
09:21:30
Konstantin
11.02.2017
09:34:18
Ну и если вынуждены использовать java, особенно в крупных компаниях, не качайте бинарники от оракла https://m.theregister.co.uk/2016/12/16/oracle_targets_java_users_non_compliance/

Slach
11.02.2017
10:28:00
я правильно опнимаю что UUID лучше всего хранить в FixedString(16) через UUIDStringToNum ??

substring(s, offset, length) Возвращает подстроку, начиная с байта по индексу offset, длины length байт. Индексация символов - начиная с единицы (как в стандартном SQL). Аргументы offset и length должны быть константами. хм.... это значит что нельзя динамически вычислить чтото ???

лучше пользовать extract ??

Andrey
11.02.2017
11:24:34
Не совсем в тему, года 2 назад у Яндекса был доклад про Кафку, они на её основе сделали надстройку и хотели выложить в опенсорс. Не знаете есть какие подвижки в этом?

Alexey
11.02.2017
11:26:49
Надстройка (которая называется LogBroker) существует, используется. А вот про актуальность планов про open-source сказать не могу. Может быть Алексей Башкеев (он есть в этом чате) подскажет.

Daniel
11.02.2017
11:28:30
тогда вопрос еще в чем отличие от кафки

Alexey
11.02.2017
11:30:28
Я не смогу ответить на это вопрос достаточно полно. Посмотрите, тут кое-что есть, наверное: https://habrahabr.ru/company/yandex/blog/239823/

Daniel
11.02.2017
11:30:53
Спасибо!

Andrey
11.02.2017
11:36:20
https://m.youtube.com/watch?v=nzEwTsbJvTo

Google
Slach
11.02.2017
11:43:22
Да, поддерживаются только константные offset, length. extract использовать можно.
то есть вот так лучше не делать? screen_resolution String, dvce_screenwidth ALIAS substring(screen_resolution, 1, CAST((screen_resolution, 'x') - 1) AS UInt16), dvce_screenheight ALIAS ыubstring(screen_resolution, CAST(position(screen_resolution,'x')+1 AS UInt16), CAST(length(screen_resolution) - position(screen_resolution,'x') AS UInt16)), ??? работать не будет?

Alexey
11.02.2017
11:44:22
Не будет из-за неконстантного offset. Я рекомендую сделать два столбца: ResolutionWidth UInt16, ResolutionHeight UInt16.

Maksim
11.02.2017
11:47:01
я правильно опнимаю что UUID лучше всего хранить в FixedString(16) через UUIDStringToNum ??
Да, и пользуйся этими функциями. Я тут писал что поменял регексп на спецфункции и в 20 раз все быстрее стало

Slach
11.02.2017
11:50:26
я не уверен что мне как раз нужны будут для анализа размеры а не оригинальное 1024x786 ок. спасибо пока попробую extract

Alexey
11.02.2017
11:51:12
Если есть два отдельных столбца, то нет проблем использовать для анализа оба одновременно.

Alexey
11.02.2017
12:51:02
тогда вопрос еще в чем отличие от кафки
Ну Кафка не exactly once. Наша настройка как раз это делает, и апи при этом другое. В оупенсорс пока не планируем, не понятно куда сама Кафка в этом смысле идёт - может из коробки уметь будет. А вот трудности испытываем. На наших объемах не то чтобы все хорошо, планы что с этим делать тоже - но это уже тема целого доклада

Alexey
11.02.2017
13:00:55
Видели, смотрим куда это приведёт. Но сама Кафка на 100+ серверах это уже сама по себе экзотика. Может быть мы её заменим, но т.к. основное апи над ней у нас внутри своё, пользователи могут и не заметить :)

Daniel
11.02.2017
13:08:04
у вас есть уже какие-то идеи куда бы вы могли двигаться? для меня выглядит магически exactly once, это же по сути задача о двух генералах а на большем числе серверов так и количество согласований растет сильно в итоге наверняка придется же делать какие-то допущения и чем-то жертвовать?

Alexey
11.02.2017
13:38:08
Это тема отдельного большого разговора, припасу её до следующего ивента, например. Но по нашему текущему плану можно без жертв, практически :)

Andrey
11.02.2017
13:50:36
Отказываться от Кафки ? А вместо неё что? Что-то своё или ?

Alexey
11.02.2017
14:05:41
Своё

Alexander
11.02.2017
16:10:03
Мы внимательно смотрели в сторону Кафки, но она не вытягивает по производительности на наших объемах, в частности из-за плохой компрессии потока.

Alexey
11.02.2017
16:40:55
и на чем остановились, если не секрет?

тож что-то свое?

Alexander
11.02.2017
18:48:32
У нас свое, сделанное почти 10 лет назад. Чем-то похоже на Apache Flume

Evgeniy
12.02.2017
02:58:32
exactly once возможен, но смотря насколько end-to-end рассматривать

Fike
12.02.2017
02:59:04
поподробнее, пожалуйста

Evgeniy
12.02.2017
03:13:40
ну если у тебя есть например кафка с этлист ванс, ты хранишь стейт в консюмере потом он пишет например в базу и там тоже можно прикапывать офсет мутации, но не всегда а потом у тебя еще есть ебанина которая из бд читает

Google
Evgeniy
12.02.2017
03:13:44
на так далее

насколько в цепочке ты хочешь exactly once

Fike
12.02.2017
03:14:31
во всей, конечно

Evgeniy
12.02.2017
03:14:55
ну вот в абстрактной всей цепочке это невозможно)

Fike
12.02.2017
03:15:14
но это тоже не exactly-once, это обход через at-least-once с идемпотентной операцией (записью в базу)

Evgeniy
12.02.2017
03:16:04
слава богу что мы живем в мире "и так сойдет"

Daniel
12.02.2017
08:50:28
Иван
12.02.2017
10:08:14
Всем доброго времени суток! Рубрика: "вопросы от дилетантов". Для таблиц mergeTree необходим столбец типа date. Но у меня csv файлы с фактами формируются с типом datetime. Поток данных настолько велик, что нет никакой возможности осущетсвлять предобработку и выделять отдельно дату. Есть ли какая-нибудь возможность вычислять значения столбца с датой во время загрузки csv файла?

Slach
12.02.2017
10:09:08
tstamp_sent UInt32, date_sent MATERIALIZED toDate(tstamp_sent),

вот так можно

ну или там tstamp datetime, date MATERIALIZED toDate(tstamp) и вставлять только tstamp

Иван
12.02.2017
10:12:09
Есчо вопрос, можно ли как-то мэпить структуру загружаеммых файлов, чтобы например какие-либо столбцы csv файлов игнорировались при загрузке?

Yury
12.02.2017
11:00:39
Можно загнать это в табличку на движке Log, предварительно её пересоздать, полученный результат уже в кх загнать в целевую на движке MergeThree

Sergey
12.02.2017
12:14:22
После optimize таблица размер данных на диске вырос на 7 ГБ, прошло уже больше часа, а место высвобождение не было. С чем это может быть связано?

Как получить размеры всех таблиц в Бд? Только через сумму активных частей в system.parts?

Dmitry
12.02.2017
12:23:36
что-то не могу найти в документации, как получить тип UInt64. использую dictGetT, где третий аргумент должен быть типа UInt64 dictGetString('dict_name', 'name', 394) получаю ошибку: Code: 43. DB::Exception: Received from xxx.xxx.xxx.xxx:9000. DB::Exception: Illegal type UInt16 of third argument of function dictGetString, must be UInt64 or tuple(...)..

Alex
12.02.2017
12:33:57
toUInt64(394)

Dmitry
12.02.2017
12:34:34
toUInt64(394)
спасибо

f1yegor
12.02.2017
17:44:37
Добрый вечер, друзья. Я очень долго не мог перевести ответ @milovidov_an про composite primary key, но наконец-то это сделал. Если найдутся желающие прочитать черновик до публикации - будет замечательно https://medium.com/@f1yegor/clickhouse-primary-keys-2cf2a45d7324

Google
Alexey
12.02.2017
18:50:17
Спасибо, всё отлично :) Есть только мелкие недочёты. Milovidov(creator columns(for SummingMergeTree) values(until full - нет пробела. Также нет пробелов вокруг тире. mark ranges [0, 3) и [6, 8). - не переведено "и" allows to skip part of data). - закрывающая скобка без открывающей. missing values of all columns will be replaced with default values(until full support of NULL values) - технически с поддержкой NULL ничего не меняется, так как для Nullable столбцов по-умолчанию DEFAULT - это NULL. Как будто есть шероховатости с английским языком. Но не уверен, так как сам плохо пишу. Data is sorted by primary key. That way they are more compressable. Number of columns into primary key that’s why a bit of additional column

papa
12.02.2017
18:55:18
посчитанный через parts размер не учитывает таблицы, движки которых не имеют parts.

Alexey
12.02.2017
18:55:25
После optimize таблица размер данных на диске вырос на 7 ГБ, прошло уже больше часа, а место высвобождение не было. С чем это может быть связано?
Интересно, какой это процент от всех данных. Также посмотрите в system.parts, правда ли это активные куски. Есть два варианта: 1. Ранее были добавлены новые столбцы. Сразу при добавлении, значения по-умолчанию для них физически не записываются, но при слиянии они записываются. Это вряд ли приводит к большому расходу места, так как обычно значения по-умолчанию - константы, и они очень хорошо сжимаются. 2. Первичный ключ может быть выбран так, что при сортировке по нему, данные сжимаются хуже. Это тоже маловероятно, но бывает.

Shine
12.02.2017
19:15:33
Увидел, что починили сортировку нуллов. Подскажите, а nulls last/first пока не поддерживается ?

Alexey
12.02.2017
19:16:33
Пока нет. Будем добавлять в ближайшее время. PS. Замечу, сортировку починили буквально только что. Она войдёт не в следующий stable пакет, а через один.

Shine
12.02.2017
19:16:53
ага, отлично! Спасибо

Рулон
13.02.2017
06:29:47
Доброе утро! Минимальный набор символов, которых вам необходимо экранировать в строковых литералах: ' and \.

А есть полный список?

Vladimir
13.02.2017
10:49:49
Добрый день, вот такая задачка В таблице хранятся A, B и C. И есть еще динамическое D, которое зависит от A и B и известно только во время запроса. Запрос выглядит таким образом: SELECT A, B, countIf(C <= hereWeSomehowGetDfromAandB(A, B)) FROM mytable какой самый православный способ это делать? пробовал положить A, B, D во временную табличку через external data, но почему-то такой запрос не работает: SELECT A, B, countIf(C <= (SELECT D FROM tempTable WHERE tempA = A AND tempB = B)) FROM myTable при этом такой работает: SELECT A, B, countIf(C <= (SELECT D FROM tempTable WHERE tempA = 1 AND tempB = 1)) FROM myTable что делаю не так? куда копать?

papa
13.02.2017
10:56:34
а Д - это функция от А Б которую можно задать кликхаусным выражением, или А,Б,Д можно считать еще одной таблицей и ничего кроме попадания в эту таблицу их не объединяет?

коррелированные подзапросы не работают, возможно вам нужен джойн using(a,b)

Vladimir
13.02.2017
10:59:43
D нельзя представить как функцию от A и B. но можно их всех положить в еще одну временную таблицу

похоже получилось, всем спасибо

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