• 01 December 2016 (78 messages)
  • https://t.me/clickhouse_ru
    @etkee #2332 08:18 AM, 01 Dec 2016
    Кроме ликвибейза есть еще куча вариантов, практически у каждого языка есть свой фаворит. Тащить джаву на сервак php-приложений не очень хорошо.
  • https://t.me/clickhouse_ru
    @the_real_jkee #2333 08:19 AM, 01 Dec 2016
    zk всё равно на java, мне этот аргумент кажется несколько странным
  • https://t.me/clickhouse_ru
    @sudohalt #2334 08:25 AM, 01 Dec 2016
    Joined.
  • https://t.me/clickhouse_ru
    @Civiloid #2335 09:09 AM, 01 Dec 2016
    Разобрался с rollup'ами - я сам накосячил в конфиге и incl не include'ил делая пустую секцию с роллапами
  • https://t.me/clickhouse_ru
    @Civiloid #2336 09:09 AM, 01 Dec 2016
    но теперь другие вопросы
  • https://t.me/clickhouse_ru
    @Civiloid #2337 09:12 AM, 01 Dec 2016
    ибо я вот подождал 12 часов при той же схеме (age=0, precision=1 -> age=3600, precision=60)
  • https://t.me/clickhouse_ru
    @Civiloid #2338 09:17 AM, 01 Dec 2016
    делаю селект:
    echo "select Time from graphite where Path='haggar1.agent.0.metrics.0' and Time < toUInt32(now()-3*3600) order by Time limit 5" | clickhouse-client

    ожидаю увидеть уже пороллапленные значения, а получаю посекундные. Методом тыка смог найти 2-3 интервала где они поролаплены
  • https://t.me/clickhouse_ru
    @AndreevDm #2340 10:07 AM, 01 Dec 2016
    Ролап происходит при мерже. Мерж происходит в фоне
  • https://t.me/clickhouse_ru
    @AndreevDm #2341 10:08 AM, 01 Dec 2016
    И вызывается по обычным правилам
  • https://t.me/clickhouse_ru
    @AndreevDm #2342 10:08 AM, 01 Dec 2016
    С optimize final можно вызвать принудительно
  • https://t.me/clickhouse_ru
    @Civiloid #2343 11:39 AM, 01 Dec 2016
    ок, поставил делаться OPTIMIZE TABLE graphite_local PARTITION 201611 FINAL
  • https://t.me/clickhouse_ru
    @Civiloid #2344 11:39 AM, 01 Dec 2016
    посмотрим что станет
  • https://t.me/clickhouse_ru
    @AndreevDm #2345 11:40 AM, 01 Dec 2016
    ага. FINAL нужен для того, что бы КХ переобрабатывал уже существующие партиции
  • https://t.me/clickhouse_ru
    @Civiloid #2346 11:40 AM, 01 Dec 2016
    но его как я понимаю имеет смысл выполнять только на что-то старше месяца?
  • https://t.me/clickhouse_ru
    @AndreevDm #2347 11:51 AM, 01 Dec 2016
    Зависит от настроек ролапа
  • @iamigor #2348 12:02 PM, 01 Dec 2016
    а url unescape функции в КХ нету?
  • @iamigor #2349 12:02 PM, 01 Dec 2016
    а то вот extractURLParameter отображает плюсики вместо пробелов :(((
  • https://t.me/clickhouse_ru
    @aensidhe #2350 12:06 PM, 01 Dec 2016
    это не эксейпинг, afair
  • @iamigor #2351 12:25 PM, 01 Dec 2016
    ну, да, чаще url encode / decode называют
  • @milovidov_an #2352 12:44 PM, 01 Dec 2016
    url unescape нет. Можно добавить в список мелких фич.

    extractURLParameter не разбирает %-encoding и плюсики.

    Это сделано потому что в Метрике URL-ы записываются в базу частично раскодированными (раскодированы все символы кроме отдельных). А это сделано, в свою очередь, по двум причинам: - чтобы удобнее отображать данные и искать в данных; - потому что из браузеров приходят URL-ы зачастую в неизвестной, в неправильной, в испорченной кодировке, в дважды испорченной кодировке и т. п., и приходится делать много работы, чтобы привести их к человеческому виду.
  • @iamigor #2353 12:51 PM, 01 Dec 2016
    угу, я отправил фичреквест)
    да я согласен, что он и не должен разбирать, просто впервые пришлось воспользоваться, чтобы получить человекопонятные параметры
  • @iamigor #2354 12:51 PM, 01 Dec 2016
    спасибо!
  • @f1yegor #2355 01:07 PM, 01 Dec 2016
    у меня очень мощный вопрос: почему ReplacingMergeTree не был задокументирован? это непроверенный engine который никогда-никогда не должен использоваться, или я просто должен создать пулл реквест с документацией?
  • @iamigor #2356 01:08 PM, 01 Dec 2016
    ыыыы! да! тоже сильно удивился в свое время
  • @Komzpa #2357 01:09 PM, 01 Dec 2016
    просто создай пулл-реквест с документацией
  • @Komzpa #2358 01:09 PM, 01 Dec 2016
    тогда его начнут проверять :)
  • @f1yegor #2359 01:10 PM, 01 Dec 2016
    ну может это страшная тайна которая должна умереть
  • https://t.me/clickhouse_ru
    @Civiloid #2360 01:10 PM, 01 Dec 2016
    Если я правильно понимаю, то ReplacingMergeTree основа для GraphiteMergeTree
  • https://t.me/clickhouse_ru
    @Civiloid #2361 01:10 PM, 01 Dec 2016
    который тоже не задокументирован
  • @iamigor #2362 01:10 PM, 01 Dec 2016
    > We have not done these optimizations, because we don't use FINAL for production queries in serious load, only for rare queries or for small load.
    > Even ReplacingMergeTree was developed by request of another department, who convinced me, that they will use it in small workload.
  • @iamigor #2363 01:11 PM, 01 Dec 2016
    ( https://groups.google.com/forum/#!topic/clickhouse/jYwoyPblsk8 )

    т.е. похоже, что он не используется в, собственно, метрике; и работает медленнее, чем мог бы
  • https://t.me/clickhouse_ru
    @AndreevDm #2364 01:13 PM, 01 Dec 2016
    Медленно, если использовать select final (не рекомендуется)
  • https://t.me/clickhouse_ru
    @AndreevDm #2365 01:13 PM, 01 Dec 2016
    Правильно писать все запросы с расчетом на то, что данные могут быть ещё не схлопнуты
  • https://t.me/clickhouse_ru
    @AndreevDm #2366 01:13 PM, 01 Dec 2016
    т.е. например argMax() по версии использовать
  • https://t.me/clickhouse_ru
    @Civiloid #2367 01:15 PM, 01 Dec 2016
    кстати, а нет способа селектить из GraphiteMergeTree сразу накладывая правила агрегации как заданы в конфиге?
  • https://t.me/clickhouse_ru
    @AndreevDm #2368 01:46 PM, 01 Dec 2016
    select final, но будет медленее
  • https://t.me/clickhouse_ru
    @rlomonosov #2369 01:47 PM, 01 Dec 2016
    final не работает на GraphiteMergeTree
  • @milovidov_an #2370 02:43 PM, 01 Dec 2016
    Можно сделать, чтобы работал, но будет действительно медленно.
  • @f1yegor #2371 04:12 PM, 01 Dec 2016
    когда я копирую данные из одной таблицы в другую insert from select, какой формат передачи данных? я копирую из таблицы 240гб данных на примерно 60гб. Progress: 183.94 million rows, 267.35 GB. какие накладные расходы на копирование? потому что я ожидал что количество прочитанных данных будет ~60гб, или по крайней мере ~120гб(в два раза больше)
  • @f1yegor #2372 04:13 PM, 01 Dec 2016
    т.е. я копирую только часть данных, которая по моим оценкам 60гб
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #2370 #2373 04:14 PM, 01 Dec 2016
    А как вы сами обходите то что графитные данные нужно выавнивать и пр.
  • https://t.me/clickhouse_ru
    Видимо, запрос не использует индекс
  • https://t.me/clickhouse_ru
    @AndreevDm ↶ Reply to #2373 #2375 04:21 PM, 01 Dec 2016
    Что ты имеешь ввиду под выравнивать?
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #2375 #2376 04:21 PM, 01 Dec 2016
    графит ожидает данные выравненные по precision
  • https://t.me/clickhouse_ru
    @Civiloid #2377 04:21 PM, 01 Dec 2016
    timestamp-timestamp%precision
  • https://t.me/clickhouse_ru
    @Civiloid #2378 04:21 PM, 01 Dec 2016
    фактически
  • https://t.me/clickhouse_ru
    @Civiloid #2379 04:22 PM, 01 Dec 2016
    равными кусками
  • https://t.me/clickhouse_ru
    @Civiloid #2380 04:22 PM, 01 Dec 2016
    черер precision промежутки
  • https://t.me/clickhouse_ru
    @tiendi #2381 04:56 PM, 01 Dec 2016
    Joined.
  • https://t.me/clickhouse_ru
    @rlomonosov #2382 05:03 PM, 01 Dec 2016
    Даже если бы был final, то это не помогло бы. Запрос на большой интервал может покрыть несколько маленьких с разным precision
  • https://t.me/clickhouse_ru
    @AndreevDm #2383 05:10 PM, 01 Dec 2016
    Мы сейчас эту часть допиливаем, расскажу как будет. При формирование запроса мы выбираем один presision и запросом в КХ доагрегируем до него. Presision выбирается наиболее крупный из периода куда попадает запрос. Например если у нас минутная метрика и мы хотим данные за 10 последних дней, а начиная с недели происходит угрубление до 5ти минут мы весь запрос угрубляем до 5ти минут
  • https://t.me/clickhouse_ru
    @svalishev #2384 05:18 PM, 01 Dec 2016
    Joined.
  • Округляем время путём intDiv на константу и домножения обратно в SELECT.
  • https://t.me/clickhouse_ru
    @rlomonosov #2386 06:14 PM, 01 Dec 2016
    Т.е. схема все равно у вас хранится и в клиенте тоже? Чтобы он константу мог выбрать
  • @milovidov_an #2387 06:20 PM, 01 Dec 2016
    Да. Но сейчас есть FR, чтобы можно было смотреть схему в системной таблице в ClickHouse.
  • https://t.me/clickhouse_ru
    @rlomonosov #2388 06:22 PM, 01 Dec 2016
    Вот мне тоже хочется такого - хотябы прямо в виде xml. Только не очень понятно что делать, если клиента натравят на distributed или merge таблицу
  • https://t.me/clickhouse_ru
    @AndreevDm #2389 06:26 PM, 01 Dec 2016
    А в чем проблема?
  • https://t.me/clickhouse_ru
    @rlomonosov #2390 06:31 PM, 01 Dec 2016
    Смержить правила из разных таблиц может оказаться нетривиальным занятием. Они могут оказаться противоречивыми. Но наверно вы это все уже продумали
  • https://t.me/clickhouse_ru
    @AndreevDm #2391 06:33 PM, 01 Dec 2016
    Имхо это вообще не надо делать. Правила должны быть одинаковые
  • https://t.me/clickhouse_ru
    @a_astakhoff #2392 06:36 PM, 01 Dec 2016
    Joined.
  • @f1yegor ↶ Reply to #2374 #2393 06:43 PM, 01 Dec 2016
    запрос вида "все данные старее этой даты". дата в primary key есть
  • @f1yegor #2394 06:46 PM, 01 Dec 2016
    в прогресс баре используются объемы которые лежат на диске, или которые получатся если это данные разжать?
  • https://t.me/clickhouse_ru
    @the_real_jkee #2395 06:48 PM, 01 Dec 2016
    вроде разжатые, но я не уверен
  • @f1yegor #2396 06:50 PM, 01 Dec 2016
    понятно, тогда остается только понять почему данный запрос не использует индекс. хотя возможно что планировщик решил что full scan будет быстрее
  • https://t.me/clickhouse_ru
    @the_real_jkee #2397 06:54 PM, 01 Dec 2016
    Нет, так не бывает
  • https://t.me/clickhouse_ru
    @the_real_jkee #2398 06:54 PM, 01 Dec 2016
    Если фильтр такой есть, должно работать
  • @f1yegor #2399 06:56 PM, 01 Dec 2016
    ReplicatedMergeTree(\'/clickhouse/tables/{shard}/typed_events\', \'{replica}\', date, sipHash64(eventId), (domainId, eventType, itemId, eventId, date, sipHash64(eventId)), 8192)
  • @f1yegor #2400 06:57 PM, 01 Dec 2016
    insert into temp select * from typed_events where date > '2016-11-20'
  • @f1yegor #2401 06:58 PM, 01 Dec 2016
    хотя если считаются разжатые данные, то может столько и будет, т.е. сжатие ~7-8 раз
  • https://t.me/clickhouse_ru
    @orantius #2402 07:04 PM, 01 Dec 2016
    а count() сколько, с фильтром и без фильтра?
  • @f1yegor #2403 07:05 PM, 01 Dec 2016
    с фильтром ~200млн, всего ~900млн
  • https://t.me/clickhouse_ru
    @orantius #2404 07:05 PM, 01 Dec 2016
    значит читает с использованием фильтра, а байты китайские.
  • @f1yegor #2405 07:07 PM, 01 Dec 2016
    я верю что все данные - asci
  • @promaker #2406 07:32 PM, 01 Dec 2016
    Joined.
  • https://t.me/clickhouse_ru
    @mbaran0v #2407 07:43 PM, 01 Dec 2016
    Joined.
  • https://t.me/clickhouse_ru
    @yurikosan #2408 09:14 PM, 01 Dec 2016
    Joined.
  • https://t.me/clickhouse_ru
    @yurikosan #2409 09:14 PM, 01 Dec 2016
    при большой нагрузке CPU usage 300% максимум.
    как заюзать больше ядер?
  • https://t.me/clickhouse_ru
    @the_real_jkee #2410 09:18 PM, 01 Dec 2016
    В диск упирается наверное
  • 02 December 2016 (82 messages)
  • https://t.me/clickhouse_ru
    @mbaran0v ↶ Reply to #2409 #2411 04:54 AM, 02 Dec 2016
    Доброе утро! Я продолжу тему - больше 300% не ест, ио по нулям - файлы на ссд. Во что может упираться? Или ему нагрузки не приходит больше?
  • https://t.me/clickhouse_ru
    @the_real_jkee #2412 07:05 AM, 02 Dec 2016
    max_threads можно увеличить
  • https://t.me/clickhouse_ru
    @the_real_jkee #2413 07:05 AM, 02 Dec 2016
    Какой движок таблицы?
  • https://t.me/clickhouse_ru
    @mbaran0v #2414 07:05 AM, 02 Dec 2016
    MergedTree
  • https://t.me/clickhouse_ru
    @the_real_jkee #2415 07:05 AM, 02 Dec 2016
    io по нулям по данным чего?
  • https://t.me/clickhouse_ru
    @the_real_jkee #2416 07:06 AM, 02 Dec 2016
    Ну и что за запрос
  • https://t.me/clickhouse_ru
    @mbaran0v #2417 07:06 AM, 02 Dec 2016
    top, htop
  • https://t.me/clickhouse_ru
    @mbaran0v #2418 07:06 AM, 02 Dec 2016
    куча запросов в большей массе - select
  • https://t.me/clickhouse_ru
    @the_real_jkee #2419 07:07 AM, 02 Dec 2016
    Ну это понятно. Какой паттерн запроса
  • https://t.me/clickhouse_ru
    @the_real_jkee #2420 07:07 AM, 02 Dec 2016
    И io лучше по iotop, я вообще не припомню чтобы top давал in
  • https://t.me/clickhouse_ru
    @the_real_jkee #2421 07:08 AM, 02 Dec 2016
    Io
  • https://t.me/clickhouse_ru
    @mbaran0v #2422 07:10 AM, 02 Dec 2016
    iotop тоже нули показывает, write на уровне 100-200K/s
  • https://t.me/clickhouse_ru
    @vasya_toropov #2423 08:13 AM, 02 Dec 2016
    Joined.
  • https://t.me/clickhouse_ru
    @vasya_toropov #2424 08:18 AM, 02 Dec 2016
    Привет. Подскажите пожалуйста, умеет ли кликхаус делать cumulative sum? То есть допустим есть табличка со строками (1,2,3) а хочется получить (1, 3, 6). На каком-нибудь MS SQL я бы сделал джойн таблички с самой собой по t1.id >= t2.id и просуммировал. Но CH так не умеет.
  • @Komzpa #2425 08:27 AM, 02 Dec 2016
    window functions!
  • https://t.me/clickhouse_ru
    @the_real_jkee #2426 08:31 AM, 02 Dec 2016
    Не умеет пока что
  • https://t.me/clickhouse_ru
    @SLASH_CyberPunk #2427 08:31 AM, 02 Dec 2016
    но оконные функции это не отменяет...
  • https://t.me/clickhouse_ru
    @vasya_toropov #2428 08:35 AM, 02 Dec 2016
    Понял. Спасибо. Жаль.
  • https://t.me/clickhouse_ru
    @the_real_jkee #2429 08:38 AM, 02 Dec 2016
    Найдите таск на гитхабе и поставьте лайк, например
  • https://t.me/clickhouse_ru
    @miptgirl #2430 08:43 AM, 02 Dec 2016
    В принципе, в CH тоже можно посчитать cumulative sum - не очень красиво, но вроде работает
    CREATE TABLE test ENGINE = Log AS SELECT arrayJoin([1, 2, 3]) as value

    SELECT
    value1 as value,
    sum(value2) as cumsum
    FROM
    (SELECT
    value as value1,
    1 as fake
    FROM test
    )
    ALL INNER JOIN
    (SELECT
    value as value2,
    1 as fake
    FROM test
    )
    USING fake
    WHERE value1 >= value2
    GROUP BY value1
  • https://t.me/clickhouse_ru
    @Maxim_Lepikhov #2431 10:07 AM, 02 Dec 2016
    Joined.
  • https://t.me/clickhouse_ru
    @Civiloid #2432 10:07 AM, 02 Dec 2016
    а есть какой-нибудь способ ускорить чтение данных? Тестирую опять же на графитной нагрузке
  • https://t.me/clickhouse_ru
    @Civiloid #2433 10:07 AM, 02 Dec 2016
    делаю запрос типа:
    SELECT Path, Time, Value, Timestamp FROM graphite WHERE (Path IN ({74 метрики})) AND ((Date >='2016-12-02' AND Date <= '2016-12-02' AND Time >= 1480650830 AND Time <= 1480672430)) FORMAT RowBinary
  • https://t.me/clickhouse_ru
    @Civiloid #2434 10:07 AM, 02 Dec 2016
    и аналогичный в графит
  • https://t.me/clickhouse_ru
    @Civiloid #2435 10:07 AM, 02 Dec 2016
    графит отвечает за 70мс
  • https://t.me/clickhouse_ru
    @Civiloid #2436 10:07 AM, 02 Dec 2016
    кликхаус за 120
  • @iamigor #2437 10:09 AM, 02 Dec 2016
    а че если фильтр по Date в WHERE перенести в самое начало? Какие индексы стоят?
  • https://t.me/clickhouse_ru
    @Civiloid #2438 10:10 AM, 02 Dec 2016
    CREATE TABLE default.graphite ( Path String, Value Float64, Time UInt32, Date Date, Timestamp UInt32) ENGINE = Distributed(graphite, 'default', 'graphite_local', sipHash64(Path))
  • https://t.me/clickhouse_ru
    @Civiloid #2439 10:10 AM, 02 Dec 2016
    CREATE TABLE default.graphite_local ( Path String, Value Float64, Time UInt32, Date Date, Timestamp UInt32) ENGINE = GraphiteMergeTree(Date, (Path, Time), 8192, 'graphite_rollup')
  • @iamigor #2440 10:10 AM, 02 Dec 2016
    или Path IN в PREWHERE запихнуть (но здесь я не уверен, могу фигню сказать, до сих пор не знаю, как он работает, блин)
  • https://t.me/clickhouse_ru
    @AndreevDm #2441 10:11 AM, 02 Dec 2016
    Лучше всё условие в prewere
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #2437 #2442 10:11 AM, 02 Dec 2016
    дает +10мс
  • https://t.me/clickhouse_ru
    @Civiloid #2443 10:11 AM, 02 Dec 2016
    в смысле становится вместо 120 - 110
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #2441 #2444 10:11 AM, 02 Dec 2016
    а это как именно?
  • https://t.me/clickhouse_ru
    @Civiloid #2445 10:11 AM, 02 Dec 2016
    можно пример?
  • @iamigor #2446 10:11 AM, 02 Dec 2016
    да вместо WHERE пишешь PREWHERE и все
  • https://t.me/clickhouse_ru
    @Civiloid #2447 10:11 AM, 02 Dec 2016
    хм, да, так веселее
  • https://t.me/clickhouse_ru
    @Civiloid #2448 10:12 AM, 02 Dec 2016
    да, теперь одинаково стало )
  • https://t.me/clickhouse_ru
    @Civiloid #2449 10:12 AM, 02 Dec 2016
    интересно, а можно еще лучше?
  • @iamigor #2450 10:12 AM, 02 Dec 2016
    date = '2016-12-02'?
  • https://t.me/clickhouse_ru
    @SLASH_CyberPunk #2451 10:13 AM, 02 Dec 2016
    а почему в Time прописан Timestamp и для чего тогда date?
  • @iamigor #2452 10:13 AM, 02 Dec 2016
    Date для индекса, ибо это MergeTree все-таки
  • https://t.me/clickhouse_ru
    @SLASH_CyberPunk #2453 10:14 AM, 02 Dec 2016
    ппц кастыли
  • @iamigor #2454 10:15 AM, 02 Dec 2016
    а timestamp видимо еще какое-то время из себя представляет
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #2450 #2455 10:15 AM, 02 Dec 2016
    ну в примере запроса да
  • https://t.me/clickhouse_ru
    @Civiloid #2456 10:15 AM, 02 Dec 2016
    я за сегодня спрашивал
  • https://t.me/clickhouse_ru
    @Civiloid #2457 10:15 AM, 02 Dec 2016
    там нет разницы <= AND >=
  • https://t.me/clickhouse_ru
    @Civiloid #2458 10:15 AM, 02 Dec 2016
    или просто =
  • @iamigor #2459 10:15 AM, 02 Dec 2016
    ок(
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #2451 #2460 10:15 AM, 02 Dec 2016
    Timestamp это версия данных
  • https://t.me/clickhouse_ru
    @Civiloid #2461 10:15 AM, 02 Dec 2016
    Time - свойство данных
  • https://t.me/clickhouse_ru
    @dvolodin #2462 10:16 AM, 02 Dec 2016
    А date, надо думать, оно вообще не хранит
  • https://t.me/clickhouse_ru
    @Civiloid #2463 10:16 AM, 02 Dec 2016
    @SLASH_CyberPunk потому что в графите нужно их уметь обновлять в прошлое, есть еще версия.
  • https://t.me/clickhouse_ru
    @dvolodin #2464 10:16 AM, 02 Dec 2016
    ибо это - метаданные
  • https://t.me/clickhouse_ru
    @Civiloid #2465 10:16 AM, 02 Dec 2016
    а Time это таймстамп который пришел вместе с чиселкой
  • https://t.me/clickhouse_ru
    @SLASH_CyberPunk #2466 10:17 AM, 02 Dec 2016
    я все равно не понял
  • https://t.me/clickhouse_ru
    @SLASH_CyberPunk #2467 10:18 AM, 02 Dec 2016
    по условию вижу, что они равнозначны, только типом данных отличаются...
  • https://t.me/clickhouse_ru
    @SLASH_CyberPunk #2468 10:18 AM, 02 Dec 2016
    то что дата нужна для индекса - это я понял
  • https://t.me/clickhouse_ru
    @SLASH_CyberPunk #2469 10:19 AM, 02 Dec 2016
    получается, если гоняешь данные со временем, то извращайся такой схемой, хотя более логично было бы что-то подобие trunc делать
  • https://t.me/clickhouse_ru
    @AndreevDm #2470 10:19 AM, 02 Dec 2016
    Не для индекса. Для партиционирования
  • https://t.me/clickhouse_ru
    @SLASH_CyberPunk #2471 10:20 AM, 02 Dec 2016
    в данном контексте не суть важно
  • На самом деле есть. Функция runningAccumulate. Подробности потом.
  • Порядок в WHERE ни на что не влияет. AND-ы жадные (не short-curcuit).
  • https://t.me/clickhouse_ru
    @kirill_bushev #2474 01:44 PM, 02 Dec 2016
    Joined.
  • https://t.me/clickhouse_ru
    @Sablast #2475 01:45 PM, 02 Dec 2016
    Привет. Подскажите как можно импортировать данные таблицу с движком MergeTree если отсутствует столбец с датой? (есть только DateTime)
  • https://t.me/clickhouse_ru
    @SLASH_CyberPunk #2476 01:48 PM, 02 Dec 2016
    Сделать еще столбец с датой
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #2475 #2477 01:49 PM, 02 Dec 2016
    Высчитать date из date time?
  • https://t.me/clickhouse_ru
    @Sablast #2478 01:49 PM, 02 Dec 2016
    мм.... пробовал сделать поле date DEFAULT toDate(timestamp), а как тогда вставить в таблицу CSV с меньшим количеством столбцов?
  • https://t.me/clickhouse_ru
    @SLASH_CyberPunk #2479 01:50 PM, 02 Dec 2016
    Сделать свой ETL наверно
  • https://t.me/clickhouse_ru
    @SLASH_CyberPunk #2480 01:52 PM, 02 Dec 2016
    Либо лепить через временные
  • @garikanet ↶ Reply to #2478 #2481 01:58 PM, 02 Dec 2016
    перечислить колонки в запросе insert которые есть csv , на которые не указаны сработает default
  • https://t.me/clickhouse_ru
    @Sablast ↶ Reply to #2481 #2482 02:00 PM, 02 Dec 2016
    а какой в данном случае будет синтаксис? сейчас импортирую просто:
    cat tes2.csv | clickhouse-client —query="INSERT INTO test FORMAT CSV";
  • @garikanet #2483 02:00 PM, 02 Dec 2016
    В статье описывал
    https://habrahabr.ru/company/smi2/blog/314558/
    Как запустить ClickHouse своими силами и выиграть джекпот

    Мы решили описать простой и проверенный путь для тех, кто хочет внедрить аналитическую СУБД ClickHouse своими силами или просто испробовать ClickHouse на собстве...

  • https://t.me/clickhouse_ru
    @Sablast #2484 02:01 PM, 02 Dec 2016
    понял, сейчас перечитаю внимательней, спасибо =)
  • @garikanet #2485 02:02 PM, 02 Dec 2016
    А для консоли INSERT INTO test (col,col2) FORMAT
  • https://t.me/clickhouse_ru
    @SLASH_CyberPunk #2486 02:21 PM, 02 Dec 2016
    Так если при импорте запрос, прям в запросе и сделайте колонку
  • https://t.me/clickhouse_ru
    @SLASH_CyberPunk #2487 02:21 PM, 02 Dec 2016
    INSERT INTO test (col,trunk(col2),col2) FORMAT
  • https://t.me/clickhouse_ru
    @SLASH_CyberPunk #2488 02:22 PM, 02 Dec 2016
    Или транк в кх не завезли? 😬
  • https://t.me/clickhouse_ru
    @the_real_jkee #2489 02:33 PM, 02 Dec 2016
    trunc это функция из oracle, с чего бы ей быть в clickhouse
  • https://t.me/clickhouse_ru
    @the_real_jkee #2490 02:34 PM, 02 Dec 2016
    Для этого есть toDate
  • https://t.me/clickhouse_ru
    @Sablast ↶ Reply to #2485 #2491 02:45 PM, 02 Dec 2016
    именно то что нужно!
  • https://t.me/clickhouse_ru
    Не только оракл...
  • 04 December 2016 (14 messages)
  • https://t.me/clickhouse_ru
    @BloodJazMan #2493 08:28 AM, 04 Dec 2016
    а имена типов а-ля String, Int (строго с большой буквы) это специально так задумано? или случайно получилось? ;)
  • @milovidov_an #2494 05:29 PM, 04 Dec 2016
    Так изначально задумано.

    Скорее всего, мы сделаем также алиасы для типов из SQL (типа varchar), имена которых будут не регистрозависимыми. Но при этом придётся сохранить некоторые технические отличия в реализации (пример: отсутствие проверки на переполнение для int-ов).
  • https://t.me/clickhouse_ru
    @nikitosiusis #2495 05:33 PM, 04 Dec 2016
    хорошо не Stroka
  • https://t.me/clickhouse_ru
    @the_real_jkee #2496 06:09 PM, 04 Dec 2016
    Трололо :)
  • https://t.me/clickhouse_ru
    @the_real_jkee #2497 06:09 PM, 04 Dec 2016
    В коде кликхауса нет Stroka
  • @iamigor #2498 06:10 PM, 04 Dec 2016
    и мата нету :(
  • https://t.me/clickhouse_ru
    @nikitosiusis #2499 06:15 PM, 04 Dec 2016
    ./ClickHouse/doc/developers/style_ru.md: ~~Stroka~~

    :-[
  • https://t.me/clickhouse_ru
    @nikitosiusis #2500 06:16 PM, 04 Dec 2016
    есть запрет на Строку )
  • @shinebell #2501 07:25 PM, 04 Dec 2016
    ребят, привет. Подскажите, в кликхаусе есть возможность делать ограничение на уникальность поля ? можно ли составной индекс (в mergetree) сделать уникальным ?
  • @milovidov_an #2502 07:27 PM, 04 Dec 2016
    Привет. Нет, уникальный индекс сделать нельзя.
    Особенность работы, коротко можно сформулировать так: "при вставке данных, ничего не читаем".
  • @shinebell #2503 07:28 PM, 04 Dec 2016
    понял, в планах соответственно такого тоже нет и не будет ?
  • @milovidov_an #2504 07:28 PM, 04 Dec 2016
    Есть варианты, которые станут возможными после реализации UPDATE.
  • @shinebell #2505 07:30 PM, 04 Dec 2016
    а апдейт в q3, насколько помню планируется ?
  • @milovidov_an #2506 11:14 PM, 04 Dec 2016
    Да.
  • 05 December 2016 (285 messages)
  • https://t.me/clickhouse_ru
    @dm_zaytsev #2507 06:41 AM, 05 Dec 2016
    Привет, ребят , незнаю в тему ли, но хочу спросить. Есть ли смысл оборачивать Clickhouse чем нибудь вроде Hive/Impala/Drill . Цель сделать минимизировать переделки со стороны SQL
  • https://t.me/clickhouse_ru
    @dm_zaytsev #2508 06:52 AM, 05 Dec 2016
    Есть ли какой-то опыт или объяснения почему не стоит так делать?
  • https://t.me/clickhouse_ru
    @BloodJazMan #2509 06:53 AM, 05 Dec 2016
    а не проще SQL переписать?
  • https://t.me/clickhouse_ru
    @BloodJazMan #2510 06:53 AM, 05 Dec 2016
    ну просто Clickhouse это именно что наружу полноценный SQL диалект предоставляет
  • https://t.me/clickhouse_ru
    @BloodJazMan #2511 06:54 AM, 05 Dec 2016
    и всякие особенности с Dcit'ами надо учитывать при разработке
  • https://t.me/clickhouse_ru
    Не предоставляет он
  • https://t.me/clickhouse_ru
    @SLASH_CyberPunk #2513 06:58 AM, 05 Dec 2016
    На текущий момент, у кликхаус очень слабый диалект и сильно отличается от стандарта
  • @iamigor #2514 06:59 AM, 05 Dec 2016
    ой, а нас здесь уже 2^8 человек
  • https://t.me/clickhouse_ru
    и??? вы хотите натянуть ужа на ежа и "привести к стандартному диалекту"? зачем?
    IMHO затея достойная лучшего применения энергии...
  • https://t.me/clickhouse_ru
    Я не хочу... 🙈
  • @filonov_ae #2517 07:11 AM, 05 Dec 2016
    А в чем слабость диалекта, собственно?
  • https://t.me/clickhouse_ru
    @SLASH_CyberPunk #2518 07:13 AM, 05 Dec 2016
    Специфика базы: работать в основном с одной таблицей с неадекватными джойнами. Специфика самого SQL: часть вещей не по стандарту, очень много отсутствует моментов.
  • @filonov_ae #2519 07:15 AM, 05 Dec 2016
    Ну таки имхо как раз в стандарте отсутствует очень много моментов. Тех же CountIf/SumIf мне очень сильно не хватает
  • https://t.me/clickhouse_ru
    @aensidhe ↶ Reply to #2518 #2520 07:15 AM, 05 Dec 2016
    аналитика - это чаще всего звезда. просто так случилось в мире
  • https://t.me/clickhouse_ru
    @BloodJazMan #2521 07:16 AM, 05 Dec 2016
    зато очень много присутсвует других моментов и положительных плюшек =) давайте признаем уже, ClickHouse очень быстрый, но ОЧЕНЬ специфический молоток и надо с помощью него решать именно те задачи под котоорые он заточен и именно теми способами которые он предоставляет из коробки
  • https://t.me/clickhouse_ru
    Я в курсе, только чтобы звезду сделать, вам здесь ответят, лейте кх в одну таблицу, а для звезды справочники подключайте на стороне
  • https://t.me/clickhouse_ru
    Пока плюс один, халява
  • https://t.me/clickhouse_ru
    @aensidhe ↶ Reply to #2522 #2524 07:17 AM, 05 Dec 2016
    да, потому что справочники работают эффективнее джойнов у товарищей. мне не сложно.
  • https://t.me/clickhouse_ru
    @SLASH_CyberPunk #2525 07:17 AM, 05 Dec 2016
    На данных до 1 тб я бы лично рекомендовал вертику бесплатную, шустрости не меньше, но полноценный SQL
  • @filonov_ae #2526 07:17 AM, 05 Dec 2016
    У меня к справочникам ровно одна претензия - синтаксис довольно монструозный получается
  • https://t.me/clickhouse_ru
    @BloodJazMan #2527 07:17 AM, 05 Dec 2016
    ну вот смотрите, в Вертике есть projections
    в каком стандарте они описаны?
  • https://t.me/clickhouse_ru
    @aensidhe ↶ Reply to #2525 #2528 07:18 AM, 05 Dec 2016
    до 1 Тб можно и на mysql + 1 сервер посидеть.
  • https://t.me/clickhouse_ru
    @BloodJazMan #2529 07:18 AM, 05 Dec 2016
    =)) ага, а потом ценник 70k баксов за второй терабайт и блять нормальных реселлеров в россии тупо нет... плавали знаем
  • https://t.me/clickhouse_ru
    Можно и Машку за ляшку
  • @iamigor ↶ Reply to #2530 #2531 07:18 AM, 05 Dec 2016
    спасибо, пойду переслушаю
  • https://t.me/clickhouse_ru
    Причем здесь стандарт и проекции?
  • https://t.me/clickhouse_ru
    ну я правильно понял что вы как бы говорите "ай ай вот в вертике все по стандарту, полноценный SQL" а я вот говорю что Вертика хороша, бесспорно, но в ней тоже ДОФИГА специфических вещей которыми тоже как в ClickHouse надо учиться пользоваться ;)
  • https://t.me/clickhouse_ru
    @BloodJazMan #2534 07:23 AM, 05 Dec 2016
    понимаете =) ClcikHouse сейчас это как nginx для аналитики, nginx вначале тоже умел с гулькин нос, реверс прокси с keep alive и хорошую раздачу статики
    а теперь на нем чуть ли не полноценные приложения начали писать =) и заметье, никто не бузил по поводу "ой у них конфиг не Апачевый, а какой то свой"
  • https://t.me/clickhouse_ru
    @dvolodin #2535 07:23 AM, 05 Dec 2016
    mysql тоже нужно учиться пользоваться
  • https://t.me/clickhouse_ru
    @dvolodin #2536 07:23 AM, 05 Dec 2016
    :)
  • @filonov_ae #2537 07:23 AM, 05 Dec 2016
    Скорее нужно учить им не пользоваться :(
  • https://t.me/clickhouse_ru
    @aensidhe ↶ Reply to #2537 #2538 07:25 AM, 05 Dec 2016
    фейсбук сидит на mysql и у них всё хорошо. это всего лишь один из инструментов.
  • @filonov_ae #2539 07:25 AM, 05 Dec 2016
    угу. 100 миллиардов мух не могут ошибаться...
  • https://t.me/clickhouse_ru
    да ладно, в web OLTP нагрузках с кучей мелких транзакций - MySQL себя прекрасно показал для своего времени =) и заставил тот же Pg подтянуться до нормального уровня (хотя и через костыли типа pgbouncer ;)
  • https://t.me/clickhouse_ru
    @dvolodin #2541 07:25 AM, 05 Dec 2016
    много кто сидит
  • https://t.me/clickhouse_ru
    @dvolodin #2542 07:26 AM, 05 Dec 2016
    кстати такое вот направление движения для CH рассматривали
  • https://t.me/clickhouse_ru
    @dvolodin #2543 07:26 AM, 05 Dec 2016
    отдельно - storage
  • https://t.me/clickhouse_ru
    @dvolodin #2544 07:26 AM, 05 Dec 2016
    поверх него - SQL?
  • https://t.me/clickhouse_ru
    @aensidhe ↶ Reply to #2539 #2545 07:26 AM, 05 Dec 2016
    да, я думаю ведущие специалисты по СУБД мира конечно могут ошибаться, но не десять лет подряд
  • https://t.me/clickhouse_ru
    @dvolodin #2546 07:28 AM, 05 Dec 2016
    скажем, как у того же mysql - ISAM и Inno
  • @filonov_ae ↶ Reply to #2545 #2547 07:28 AM, 05 Dec 2016
    с тех пор уже больше 10 лет прошло.
  • https://t.me/clickhouse_ru
    @dvolodin #2548 07:28 AM, 05 Dec 2016
    или у монги WT
  • https://t.me/clickhouse_ru
    @dvolodin #2549 07:28 AM, 05 Dec 2016
    и вообще работу в embedded режиме
  • https://t.me/clickhouse_ru
    @dvolodin #2550 07:29 AM, 05 Dec 2016
    Тот же графит ощутимо бы выиграл
  • https://t.me/clickhouse_ru
    @aensidhe ↶ Reply to #2547 #2551 07:30 AM, 05 Dec 2016
    с тех пор - с каких? они с InnoDb на RocksDb мигрировали вот в прошлом году. вместо того, чтобы выкинуть mysql и заюзать что-то более подходящее. Что как бы намекает.
  • https://t.me/clickhouse_ru
    Вы путаете стандарт диалекта
  • https://t.me/clickhouse_ru
    =)) простите, я не знаю что такое "стандарт диалекта", для меня это ортогональные понятия
  • @filonov_ae ↶ Reply to #2551 #2554 07:33 AM, 05 Dec 2016
    Это намекает, что за ошибки в выборе базы, приходится расплачиваться пристраиванием костылей.
  • https://t.me/clickhouse_ru
    Тогда и спор ни о чем
  • https://t.me/clickhouse_ru
    @dvolodin #2556 07:34 AM, 05 Dec 2016
    И какие у них ошибки были?
  • https://t.me/clickhouse_ru
    @dvolodin #2557 07:34 AM, 05 Dec 2016
    выбор между тормознутым на то время pg и глючным mysql?
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #2550 #2558 07:34 AM, 05 Dec 2016
    Да в общем не факт что SQL дает такой значимый overhead
  • https://t.me/clickhouse_ru
    @dvolodin #2559 07:35 AM, 05 Dec 2016
    дает
  • https://t.me/clickhouse_ru
    @dvolodin #2560 07:35 AM, 05 Dec 2016
    если много запросов
  • @pg_vadim ↶ Reply to #2551 #2561 07:36 AM, 05 Dec 2016
    намекает это только на одно - они вынуждены жить с выбранной СУБД на старте проекта, так как затраты на переезд в другую БД и разработку под нее будет огромны. Вопрос чисто финансовый) Дешевле лепить костыли)
  • https://t.me/clickhouse_ru
    @dvolodin #2562 07:37 AM, 05 Dec 2016
    С учетом их бюджетов им проще просто развивать выбранную субд
  • https://t.me/clickhouse_ru
    @dvolodin #2563 07:37 AM, 05 Dec 2016
    в ту сторону, куда им нужно
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #2560 #2564 07:37 AM, 05 Dec 2016
    Вопрос в том насколько станет быстрее
  • https://t.me/clickhouse_ru
    @dvolodin #2565 07:38 AM, 05 Dec 2016
    вопрос в том, что SQL как API для работы с данными достаточно паршив
  • https://t.me/clickhouse_ru
    @SLASH_CyberPunk #2566 07:39 AM, 05 Dec 2016
    Вот это новость 😳
  • https://t.me/clickhouse_ru
    @SLASH_CyberPunk #2567 07:39 AM, 05 Dec 2016
    А что же удобно? 😬
  • https://t.me/clickhouse_ru
    @dm_zaytsev #2568 07:40 AM, 05 Dec 2016
    Вобщем оргументов не увидел в этой тераде... Пока со своей стороны вижу плюсы в значительно улучшении качества языка запросов, и минусы в потере каких либо фич связанных с группировками. Собственно минусов никто не назвал
  • @filonov_ae ↶ Reply to #2567 #2569 07:40 AM, 05 Dec 2016
    Был с месяц назад в одной конторе, которая до сих пор тянет FoxPro...
  • https://t.me/clickhouse_ru
    @dvolodin #2570 07:41 AM, 05 Dec 2016
    ну если кому-то нормально, что машина с машиной пытается общаться на пинжин-инглише каком-то, то да
  • https://t.me/clickhouse_ru
    @dvolodin #2571 07:41 AM, 05 Dec 2016
    SQL - удобный API для бухгалтеров
  • https://t.me/clickhouse_ru
    @dvolodin #2572 07:41 AM, 05 Dec 2016
    :)
  • https://t.me/clickhouse_ru
    @dvolodin #2573 07:42 AM, 05 Dec 2016
    ну, например, монговский язык запросов чем плох?
  • https://t.me/clickhouse_ru
    @dvolodin #2574 07:42 AM, 05 Dec 2016
    :)
  • https://t.me/clickhouse_ru
    @dvolodin #2575 07:42 AM, 05 Dec 2016
    обычный JSON
  • https://t.me/clickhouse_ru
    @aensidhe ↶ Reply to #2554 #2576 07:42 AM, 05 Dec 2016
    интересно, в чём костыль-то? почему, если мы ошиблись, мы тратим время на написание нового движка для стораджа, а не меняем БД полностью
  • https://t.me/clickhouse_ru
    @aensidhe ↶ Reply to #2575 #2577 07:42 AM, 05 Dec 2016
    этим и плох.
  • https://t.me/clickhouse_ru
    Тем, что он без структуры
  • https://t.me/clickhouse_ru
    @dvolodin #2579 07:43 AM, 05 Dec 2016
    это как без структуры?
  • https://t.me/clickhouse_ru
    @aensidhe #2580 07:43 AM, 05 Dec 2016
    json не читабелен человеком, куча лишних кавычек везде просто
  • https://t.me/clickhouse_ru
    @dvolodin #2581 07:43 AM, 05 Dec 2016
    а нафиг его читать человеку?
  • https://t.me/clickhouse_ru
    @dvolodin #2582 07:43 AM, 05 Dec 2016
    SQL тоже хреново читаем, когда в экран не влезает
  • https://t.me/clickhouse_ru
    @dvolodin #2583 07:43 AM, 05 Dec 2016
    :)
  • @iamigor #2584 07:43 AM, 05 Dec 2016
    ну это как регулярки. кто-то один написал, а потом все используют
  • https://t.me/clickhouse_ru
    @aensidhe ↶ Reply to #2581 #2585 07:43 AM, 05 Dec 2016
    потому что разработкой занимаются люди.
  • https://t.me/clickhouse_ru
    @aensidhe #2586 07:43 AM, 05 Dec 2016
    пока ещё.
  • https://t.me/clickhouse_ru
    @dvolodin #2587 07:43 AM, 05 Dec 2016
    это еще один вариант
  • @iamigor #2588 07:43 AM, 05 Dec 2016
    надо что-то поменять - и чума
  • https://t.me/clickhouse_ru
    У меня на работе тоже пишут очередной Г биллинг на оракле 9, это не значит,, то все в восторге
  • https://t.me/clickhouse_ru
    @dvolodin #2590 07:44 AM, 05 Dec 2016
    если ты SQL генеришь по частям
  • https://t.me/clickhouse_ru
    @aensidhe ↶ Reply to #2587 #2591 07:44 AM, 05 Dec 2016
    был бы yml - те же яйца, только без кавычек по поводу и без, можно было бы поговорить
  • https://t.me/clickhouse_ru
    @aensidhe ↶ Reply to #2590 #2592 07:44 AM, 05 Dec 2016
    то в профайлере будет полный запрос.
  • https://t.me/clickhouse_ru
    Читаемость спорный момент, разбивать на куски запрос никто не отменял
  • https://t.me/clickhouse_ru
    @dvolodin #2594 07:44 AM, 05 Dec 2016
    в зависимости от фильтров -- у тебя тоже нечитаемая мешанина будет
  • https://t.me/clickhouse_ru
    @dvolodin #2595 07:44 AM, 05 Dec 2016
    sql = "SELECT " + ....
  • https://t.me/clickhouse_ru
    @dvolodin #2596 07:44 AM, 05 Dec 2016
    это еще прочтешь
  • https://t.me/clickhouse_ru
    @dvolodin #2597 07:44 AM, 05 Dec 2016
    ну и JSON на куски бей
  • https://t.me/clickhouse_ru
    @dvolodin #2598 07:45 AM, 05 Dec 2016
    кто мешает?
  • https://t.me/clickhouse_ru
    @aensidhe #2599 07:45 AM, 05 Dec 2016
    когда я пишу генераторы sql, они генерируют читаемый sql
  • https://t.me/clickhouse_ru
    @aensidhe #2600 07:45 AM, 05 Dec 2016
    потому что я его потом буду читать
  • https://t.me/clickhouse_ru
    @SLASH_CyberPunk #2601 07:45 AM, 05 Dec 2016
    Это вообще из серии разработки софта, а не работы с БД
  • https://t.me/clickhouse_ru
    @dvolodin #2602 07:45 AM, 05 Dec 2016
    отлично
  • https://t.me/clickhouse_ru
    @aensidhe ↶ Reply to #2601 #2603 07:45 AM, 05 Dec 2016
    тут соглашусь. если от пользователя БД спрятана за ГУИ и он никогда не пишет запросы, можно хоть msgpack сделать языком запросов
  • https://t.me/clickhouse_ru
    @dvolodin #2604 07:46 AM, 05 Dec 2016
    я про это и говорю
  • https://t.me/clickhouse_ru
    @dvolodin #2605 07:46 AM, 05 Dec 2016
    в отдельных случаях
  • https://t.me/clickhouse_ru
    @dvolodin #2606 07:46 AM, 05 Dec 2016
    когда запрос генерится по каким-то внешним фильтрам
  • https://t.me/clickhouse_ru
    @dvolodin #2607 07:46 AM, 05 Dec 2016
    SQL просто банально неудобен
  • https://t.me/clickhouse_ru
    @aensidhe #2608 07:46 AM, 05 Dec 2016
    удобен.
  • @iamigor #2609 07:46 AM, 05 Dec 2016
    неудобен - возможно, но он уже слишком популярен везде
  • https://t.me/clickhouse_ru
    @dvolodin #2610 07:46 AM, 05 Dec 2016
    Ежику и кактус вкусен
  • https://t.me/clickhouse_ru
    @dvolodin #2611 07:46 AM, 05 Dec 2016
    о чем спорить
  • https://t.me/clickhouse_ru
    @aensidhe ↶ Reply to #2604 #2612 07:47 AM, 05 Dec 2016
    только разработчики потом будут вынуждены научиться читать мсгпак и всё.
  • https://t.me/clickhouse_ru
    @dvolodin #2613 07:47 AM, 05 Dec 2016
    разработчики чего?
  • https://t.me/clickhouse_ru
    @dvolodin #2614 07:47 AM, 05 Dec 2016
    монга, кстати, не заставляет BSON читать
  • https://t.me/clickhouse_ru
    @dm_zaytsev #2615 07:47 AM, 05 Dec 2016
    Вопрос изначально был отм что нужен SQL . тк работать будут люди. они набирают пальцами SQL который знают. JSON это способ описания объекта а не запроса
  • https://t.me/clickhouse_ru
    @dvolodin #2616 07:47 AM, 05 Dec 2016
    эээ
  • https://t.me/clickhouse_ru
    @dvolodin #2617 07:47 AM, 05 Dec 2016
    SQL конвертируется в AST
  • https://t.me/clickhouse_ru
    @dvolodin #2618 07:48 AM, 05 Dec 2016
    так или иначе
  • https://t.me/clickhouse_ru
    @aensidhe ↶ Reply to #2613 #2619 07:48 AM, 05 Dec 2016
    того, кто будет прятать от юзера язык запросов. вообще, мне непонятно, почему вы считаете, что надо прятать SQL от аналитиков
  • https://t.me/clickhouse_ru
    @dvolodin #2620 07:48 AM, 05 Dec 2016
    по нему строится план
  • https://t.me/clickhouse_ru
    @aensidhe #2621 07:48 AM, 05 Dec 2016
    они обычно его знают
  • https://t.me/clickhouse_ru
    @dvolodin #2622 07:48 AM, 05 Dec 2016
    JSON точно так же конвертируется в AST
  • https://t.me/clickhouse_ru
    @dvolodin #2623 07:48 AM, 05 Dec 2016
    и по нему строится план
  • https://t.me/clickhouse_ru
    @dvolodin #2624 07:48 AM, 05 Dec 2016
    только JSON сам по себе уже дерево
  • https://t.me/clickhouse_ru
    @aensidhe ↶ Reply to #2624 #2625 07:49 AM, 05 Dec 2016
    ещё раз. был бы yml - было бы дерево
  • https://t.me/clickhouse_ru
    @aensidhe #2626 07:49 AM, 05 Dec 2016
    а так - скобочки в кавычках
  • https://t.me/clickhouse_ru
    @dvolodin #2627 07:49 AM, 05 Dec 2016
    yml - надмножество json
  • https://t.me/clickhouse_ru
    @dvolodin #2628 07:49 AM, 05 Dec 2016
    какая разница?
  • https://t.me/clickhouse_ru
    @aensidhe #2629 07:49 AM, 05 Dec 2016
    только более читабельное. я в курсе.
  • https://t.me/clickhouse_ru
    @aensidhe #2630 07:49 AM, 05 Dec 2016
    кавычек и скобок с запятыми нет.
  • https://t.me/clickhouse_ru
    @dvolodin #2631 07:49 AM, 05 Dec 2016
    я не про json говорю
  • https://t.me/clickhouse_ru
    @dvolodin #2632 07:50 AM, 05 Dec 2016
    а про то, когда ты точно знаешь, что тебе нужно, удобнее скормить в запросе само дерево
  • https://t.me/clickhouse_ru
    @dvolodin #2633 07:50 AM, 05 Dec 2016
    чем из дерева генератором делать SQL
  • https://t.me/clickhouse_ru
    @aensidhe #2634 07:50 AM, 05 Dec 2016
    юзер делает запрос руками в текстбоксе иногда
  • https://t.me/clickhouse_ru
    @dvolodin #2635 07:51 AM, 05 Dec 2016
    мы начали про графит
  • https://t.me/clickhouse_ru
    @aensidhe ↶ Reply to #2632 #2636 07:51 AM, 05 Dec 2016
    однофигственно, кмк. ладно, чат не про это - интересно продолжить, го в личку
  • @filonov_ae ↶ Reply to #2629 #2637 07:51 AM, 05 Dec 2016
    читабельность - штука относительная. непечатный синтаксис далеко не всегда способствует читабельности
  • https://t.me/clickhouse_ru
    @dvolodin #2638 07:51 AM, 05 Dec 2016
    юзер в графане мышкой мышит
  • https://t.me/clickhouse_ru
    @dvolodin #2639 07:51 AM, 05 Dec 2016
    ага
  • https://t.me/clickhouse_ru
    @dvolodin #2640 07:51 AM, 05 Dec 2016
    вы еще про оракловых гуру расскажите, которые по SQL план запроса по запаху определяют
  • https://t.me/clickhouse_ru
    @aensidhe ↶ Reply to #2638 #2641 07:51 AM, 05 Dec 2016
    я там запросы ручками писал. я днище, видимо :)
  • https://t.me/clickhouse_ru
    @BloodJazMan #2642 07:51 AM, 05 Dec 2016
    кстати для grafana никто clickhouse адаптера еще не сделал?
  • @iamigor #2643 07:52 AM, 05 Dec 2016
    https://grafana.net/dashboards/869
    https://grafana.net/dashboards/882
    не то?
    ClickHouse overview dashboard for Grafana - Grafana.net

    ClickHouse Database dashboard based on Prometheus

  • https://t.me/clickhouse_ru
    @dvolodin #2644 07:52 AM, 05 Dec 2016
    на самом деле одно другому не мешает
  • https://t.me/clickhouse_ru
    @dvolodin #2645 07:52 AM, 05 Dec 2016
    я про то, что для доступа к данным в разные моменты может быть удобным разный API
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #2643 #2646 07:53 AM, 05 Dec 2016
    Адаптер это штука позволяющая брать кликхаус как датасорс
  • @iamigor #2647 07:53 AM, 05 Dec 2016
    сорри )
  • https://t.me/clickhouse_ru
    @dvolodin #2648 07:53 AM, 05 Dec 2016
    да, если бы был такой - выкинули бы influx нафиг
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #2638 #2649 07:54 AM, 05 Dec 2016
    Ну оно четко все преобразуется в select ... Where Path in ... And Time > ...
  • https://t.me/clickhouse_ru
    @dvolodin #2650 07:54 AM, 05 Dec 2016
    ну или {"path": {"$in": [....]} .....
  • https://t.me/clickhouse_ru
    @Civiloid #2651 07:54 AM, 05 Dec 2016
    Я не думаю что если бы тут был json то было бы сильно лучше
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #2648 #2652 07:55 AM, 05 Dec 2016
    Ну можно через прослойки к обычному граыиту прикрутить
  • https://t.me/clickhouse_ru
    @Civiloid #2653 07:55 AM, 05 Dec 2016
    Даже работает
  • https://t.me/clickhouse_ru
    @dvolodin #2654 07:55 AM, 05 Dec 2016
    а нужны ли они?
  • https://t.me/clickhouse_ru
    @dvolodin #2655 07:55 AM, 05 Dec 2016
    из инфлюкса графана забирает напрямую
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #2654 #2656 07:55 AM, 05 Dec 2016
    Легаси нельзя раз и заменить
  • https://t.me/clickhouse_ru
    @dvolodin #2657 07:56 AM, 05 Dec 2016
    если графит есть, то да
  • https://t.me/clickhouse_ru
    @dvolodin #2658 07:56 AM, 05 Dec 2016
    я даже вот про что
  • https://t.me/clickhouse_ru
    @dvolodin #2659 07:56 AM, 05 Dec 2016
    у influx'а достаточно удобно работать с тегами
  • https://t.me/clickhouse_ru
    @dvolodin #2660 07:56 AM, 05 Dec 2016
    в плане того, что пишется -- тип метрики и соответсвующие ей теги
  • https://t.me/clickhouse_ru
    @dvolodin #2661 07:56 AM, 05 Dec 2016
    CH колоночный
  • https://t.me/clickhouse_ru
    @dvolodin #2662 07:57 AM, 05 Dec 2016
    в нем можно было попробовать теги положить в виде колонок
  • https://t.me/clickhouse_ru
    @dvolodin #2663 07:57 AM, 05 Dec 2016
    скажем загрузку интерфейсов пишем как Interface | Load | In, object=<железка>, interface=<порт>
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #2662 #2664 07:57 AM, 05 Dec 2016
    Можно, я думаю маленький конвертер сделать попробовать даже под наши задачи
  • https://t.me/clickhouse_ru
    @dvolodin #2665 07:58 AM, 05 Dec 2016
    в таблице метрик сделать при этом колонки object и interface
  • https://t.me/clickhouse_ru
    @dvolodin #2666 07:58 AM, 05 Dec 2016
    тогда ряд ненужных костылей вроде interface.load.in.<object>.* уйдет
  • https://t.me/clickhouse_ru
    @dvolodin #2667 07:59 AM, 05 Dec 2016
    и семантика запроса нормальная будет
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #2665 #2668 07:59 AM, 05 Dec 2016
    Я больше думаю про отдельную таблицу с текущими тэгами, без истории
  • https://t.me/clickhouse_ru
    @BloodJazMan #2669 07:59 AM, 05 Dec 2016
    https://github.com/lomik/carbon-clickhouse вот тут можно было бы как то парсить метрики в нормальные колонки =)
    GitHub - lomik/carbon-clickhouse: Graphite metrics receiver with ClickHouse as storage

    Graphite metrics receiver with ClickHouse as storage - GitHub - lomik/carbon-clickhouse: Graphite metrics receiver with ClickHouse as storage

  • https://t.me/clickhouse_ru
    @dvolodin #2670 07:59 AM, 05 Dec 2016
    у influx эта таблица - самое слабое место
  • https://t.me/clickhouse_ru
    @dvolodin #2671 07:59 AM, 05 Dec 2016
    к ней постоянно lookup'ы идут
  • https://t.me/clickhouse_ru
    @dvolodin #2672 07:59 AM, 05 Dec 2016
    она в памяти должна быть
  • https://t.me/clickhouse_ru
    @dvolodin #2673 07:59 AM, 05 Dec 2016
    и пока не прососется - он просто писать не может
  • https://t.me/clickhouse_ru
    @dvolodin #2674 08:00 AM, 05 Dec 2016
    по сетевой части тегов относительно немного
  • https://t.me/clickhouse_ru
    @dvolodin #2675 08:00 AM, 05 Dec 2016
    несколько десятков от силы
  • https://t.me/clickhouse_ru
    @rlomonosov #2676 08:02 AM, 05 Dec 2016
    > @BloodJazMan
    https://github.com/lomik/carbon-clickhouse вот тут можно было бы как то парсить метрики в нормальные колонки =)

    Есть такое желание. Только пока непонятно как это вписать в протокол графита и поддержать во всей цепочке доставки (carbon-c-relay etc)
    GitHub - lomik/carbon-clickhouse: Graphite metrics receiver with ClickHouse as storage

    Graphite metrics receiver with ClickHouse as storage - GitHub - lomik/carbon-clickhouse: Graphite metrics receiver with ClickHouse as storage

  • https://t.me/clickhouse_ru
    @BloodJazMan #2677 08:05 AM, 05 Dec 2016
    О! Роман! и вы тут
  • https://t.me/clickhouse_ru
    @BloodJazMan #2678 08:05 AM, 05 Dec 2016
    Огромное вам спасибо за go-carbon
  • https://t.me/clickhouse_ru
    @BloodJazMan #2679 08:05 AM, 05 Dec 2016
    вы мне прямо сильно жизнь облегчили в свое время
  • https://t.me/clickhouse_ru
    @BloodJazMan #2680 08:06 AM, 05 Dec 2016
    =) Ну собственно я могу issue на github открыть
    мне видится это дело как набор параметризованных regexp которые просто экстрактят значение атрибута из названия метрики и все
  • https://t.me/clickhouse_ru
    @BloodJazMan #2681 08:07 AM, 05 Dec 2016
    т..е. эти данные только в конфиге carbon-clickhouse оставиться и все можно будет пробрасывать стандартным образом
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #2680 #2682 08:10 AM, 05 Dec 2016
    Оно по скорости вставки вдарит
  • https://t.me/clickhouse_ru
    используйте ORM
  • https://t.me/clickhouse_ru
    @BloodJazMan #2684 08:16 AM, 05 Dec 2016
    ну тогда не regexp, а wildcards
    что нибудь типа такого

    [attributes:diamond-cpu]
    data-attibuted-table = graphite_attiributed_diamond_cpu
    attibute-wildcards= "servers.{host}.cpu.{cpu_name}.{metric_name}"
  • https://t.me/clickhouse_ru
    @SLASH_CyberPunk #2685 08:17 AM, 05 Dec 2016
    Вот все те, кто говорит, что SQL не удобен, вы кроме как с колокльни разработки кастылей и велосипедов в своем софте вообще расматриваете использование БД?
  • https://t.me/clickhouse_ru
    @dvolodin #2686 08:18 AM, 05 Dec 2016
    нет, не рассматриваем
  • https://t.me/clickhouse_ru
    @dvolodin #2687 08:18 AM, 05 Dec 2016
    для нас СУБД - элемент решения
  • https://t.me/clickhouse_ru
    @dvolodin #2688 08:18 AM, 05 Dec 2016
    в идеале - невидимый юзеру
  • https://t.me/clickhouse_ru
    @etkee #2689 08:19 AM, 05 Dec 2016
    ребят, может хватит про SQL?
  • https://t.me/clickhouse_ru
    @BloodJazMan #2690 08:19 AM, 05 Dec 2016
    вот да
  • https://t.me/clickhouse_ru
    @dvolodin #2691 08:19 AM, 05 Dec 2016
    вернемся к моему вопросу
  • https://t.me/clickhouse_ru
    @BloodJazMan #2692 08:19 AM, 05 Dec 2016
    в этом чатике давайте про кликхаус и все что с ним связано
  • https://t.me/clickhouse_ru
    @dvolodin #2693 08:19 AM, 05 Dec 2016
    возможно ли отделить storage отдельно?
  • https://t.me/clickhouse_ru
    @dvolodin #2694 08:20 AM, 05 Dec 2016
    по примеру WT, Inno и Rocks?
  • https://t.me/clickhouse_ru
    @BloodJazMan #2695 08:22 AM, 05 Dec 2016
    yandex/ClickHouse

    ClickHouse is a free analytic DBMS for big data.

  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #2684 #2696 08:24 AM, 05 Dec 2016
    да все равно довольно дорого, т.к. проверку "парсился ли" нужно делать на каждую метрику )
  • https://t.me/clickhouse_ru
    @Civiloid #2697 08:24 AM, 05 Dec 2016
    и немного вообще странно, т.к. проще делать колонку host, колонку cpu_name и забить на совместимость с графитом
  • https://t.me/clickhouse_ru
    @dvolodin #2698 08:25 AM, 05 Dec 2016
    да, спасибо
  • https://t.me/clickhouse_ru
    @dvolodin ↶ Reply to #2696 #2699 08:26 AM, 05 Dec 2016
    да, я по это и говорю. если нет необходимости тянуть совместимость, с колонками работать гораздо удобнее
  • https://t.me/clickhouse_ru
    @BloodJazMan #2700 08:26 AM, 05 Dec 2016
    ну, почему??? графит как тащил через полную metric_name так и тащит... а кому захочется параметризации нормальной, надо делать адаптер для графаны и смотреть уже в графане
  • https://t.me/clickhouse_ru
    @dvolodin #2701 08:26 AM, 05 Dec 2016
    как ее сделать нормальной?
  • https://t.me/clickhouse_ru
    @dvolodin #2702 08:27 AM, 05 Dec 2016
    если у разных путей в одно и том же месте совсем разные параметры
  • https://t.me/clickhouse_ru
    @dvolodin #2703 08:27 AM, 05 Dec 2016
    где-то порт, где-то процессор
  • https://t.me/clickhouse_ru
    @Civiloid #2704 08:28 AM, 05 Dec 2016
    оно очень сложно описывается в общем случаи, да. На малых инсталяциях работать будет, на мало-мальски крупных будет все плохо с неконсистентностью именования метрик
  • https://t.me/clickhouse_ru
    @BloodJazMan #2705 08:28 AM, 05 Dec 2016
    ну экстрактить заданные колонки
    для каждого вида путей...
    через конфиг

    http://metrics20.org/spec/
    вот может быть сразу такой ресивер реализовать?
  • @lexa_work #2706 08:30 AM, 05 Dec 2016
    Вот прям сейчас начали процесс деплоя связки CH+graphite-clickhouse(и прочее)+grafana
  • @lexa_work #2707 08:30 AM, 05 Dec 2016
    у меня возник такой вопрос
  • @lexa_work #2708 08:32 AM, 05 Dec 2016
    на сколько graphite-clickhouse дает полный набор функций graphite?
    Можно там суммировать разные метрики например?
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #2705 #2709 08:32 AM, 05 Dec 2016
    Экстрактить колонки на каждую метрику это очень и очень дорого с точки зрения ресурсов. Хочется колонки - нужен другой протокол. Metircs 2.0 конечно прекрасная инициатива, но она тоже со своими минусами - например очень многословна и сложна в парсинге (точно также).
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #2708 #2710 08:32 AM, 05 Dec 2016
    не дает вообще никаких, нужно брать graphite-api/graphite-web/carbonapi и использовать их
  • https://t.me/clickhouse_ru
    @Civiloid #2711 08:32 AM, 05 Dec 2016
    graphite-clickhouse реализует сабсет API который может использовать graphite-web в виде CLUSTER_SERVERS или carbonapi
  • https://t.me/clickhouse_ru
    @Civiloid #2712 08:33 AM, 05 Dec 2016
    более того, насколько я помню сейчас ты даже json данных получить не можешь
  • https://t.me/clickhouse_ru
    @Civiloid #2713 08:33 AM, 05 Dec 2016
    @rlomonosov или ты в итоге json уже реализовал?
  • @lexa_work #2714 08:33 AM, 05 Dec 2016
    а, ну т.е. если graphite-clickhouse+graphite-web 0.9.15, то все будет красиво и полно?
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #2714 #2715 08:33 AM, 05 Dec 2016
    да
  • @lexa_work #2716 08:33 AM, 05 Dec 2016
    отлично!
  • @lexa_work #2717 08:34 AM, 05 Dec 2016
    а горизонтально это все масштабируется?
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #2714 #2718 08:34 AM, 05 Dec 2016
    ну учти что оно в статусе что-то уровня pre-alpha
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #2717 #2719 08:34 AM, 05 Dec 2016
    никто не проверял
  • @lexa_work #2720 08:34 AM, 05 Dec 2016
    ну вот мы потестируем, дадим фидбэк
  • https://t.me/clickhouse_ru
    @Civiloid #2721 08:34 AM, 05 Dec 2016
    оно в статусе "вроде кажется работает если вгетом пнуть"
  • @lexa_work #2722 08:35 AM, 05 Dec 2016
    можно несколько экземпляров (graphite-clickhouse+graphite-web) развернуть для распределения нагрузки
  • @lexa_work #2723 08:35 AM, 05 Dec 2016
    они stateless?
  • https://t.me/clickhouse_ru
    @Civiloid #2724 08:35 AM, 05 Dec 2016
    @lexa_work я с carbonapi его интегрировал, с ним работает /render но были какие-то проблемы с /metrics/find
  • https://t.me/clickhouse_ru
    @Civiloid #2725 08:35 AM, 05 Dec 2016
    но графана могла данные даже показать
  • @lexa_work #2726 08:35 AM, 05 Dec 2016
    ну будем посмотреть
  • https://t.me/clickhouse_ru
    @Civiloid #2727 08:36 AM, 05 Dec 2016
    Еще сейчас graphite-clickhouse по времени запроса дает такой же оверхед как чтение данных
  • @lexa_work #2728 08:37 AM, 05 Dec 2016
    вот это не очень понял
  • @lexa_work #2729 08:38 AM, 05 Dec 2016
    про оверхэд, что там не так?
  • https://t.me/clickhouse_ru
    @rlomonosov #2730 08:40 AM, 05 Dec 2016
    Можно пооптимизировать код. Наверно
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #2729 #2731 08:41 AM, 05 Dec 2016
    Выборка данных из кх - допустим 100мс. Потом оно еще 100 проведет делая доп работу
  • https://t.me/clickhouse_ru
    @Civiloid #2732 08:41 AM, 05 Dec 2016
    Вероятно это можно ускорить ощутимо
  • @lexa_work #2733 08:43 AM, 05 Dec 2016
    там никакого pushdown агрегаций в CH не делается?
  • @lexa_work #2734 08:43 AM, 05 Dec 2016
    выгребаются все данные и обрабатываются в graphite-clickhouse?
  • https://t.me/clickhouse_ru
    @rlomonosov #2735 08:47 AM, 05 Dec 2016
    все сложные агрегации делаются вообще на стороне graphite-web. в graphite-clickhouse выгребаются данные и доделывается rollup (домердживает то, что КХ еще не успел). ну еще логика поиска метрик (ракрытие звездочек)
  • @lexa_work #2736 08:48 AM, 05 Dec 2016
    понятно, спасибо за консультации
    я с graphite как-то не очень работал
  • @lexa_work #2737 08:49 AM, 05 Dec 2016
    все же питал надежды решениям в стиле metrics2.0 обойтись
  • @lexa_work #2738 08:50 AM, 05 Dec 2016
    но сейчас понадобилась функция в которой пользователи моглибы сами форировать некие производные метрики (KPI) на базе основных/базовых счетчиков
  • @lexa_work #2739 08:50 AM, 05 Dec 2016
    а такое, хоть в каком-то виде, поддерживается только в graphite (ну и grafana как UI)
  • https://t.me/clickhouse_ru
    @belomore #2740 10:32 AM, 05 Dec 2016
    А агрегатные функции в условиях это вообще валидный фичреквест? Кажется, было бы удобно.

    :) select job_id from rt_details where sum(reqps)=0 group by job_id;

    DB::Exception: Aggregate function sum(reqps) is found in WHERE or PREWHERE in query.
  • https://t.me/clickhouse_ru
    @orantius #2741 10:35 AM, 05 Dec 2016
    having
  • https://t.me/clickhouse_ru
    @BloodJazMan #2742 10:35 AM, 05 Dec 2016
    +1 к having
  • https://t.me/clickhouse_ru
    @belomore #2743 10:40 AM, 05 Dec 2016
    О, точняк! спс
  • https://t.me/clickhouse_ru
    @belomore #2744 10:46 AM, 05 Dec 2016
    затупил
  • https://t.me/clickhouse_ru
    @belomore #2745 10:46 AM, 05 Dec 2016
  • https://t.me/clickhouse_ru
    @lbohdan #2746 10:50 AM, 05 Dec 2016
  • https://t.me/clickhouse_ru
    @flrnull #2747 10:53 AM, 05 Dec 2016
    А есть те, кто все еще для мониторинга использует православный munin?
    Если есть, то возможно плагин будет полезен: https://github.com/roistat/clickhouse-munin
    roistat/clickhouse-munin

    Munin plugin for ClickHouse. Contribute to roistat/clickhouse-munin development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    @winogradoff #2748 11:11 AM, 05 Dec 2016
    ru.yandex.clickhouse.except.ClickHouseUnknownException: ClickHouse exception, code: 1002, port: 8123; Xc ��y u}n � v �QCode: 27, e.displayText() = DB::Exception: Cannot parse input: expected \t before: NULL\t1\tNULL q10.0\t1
  • https://t.me/clickhouse_ru
    @winogradoff #2749 11:11 AM, 05 Dec 2016
    Почему ругается на jdbc setNull?
  • https://t.me/clickhouse_ru
    @etkee #2751 11:12 AM, 05 Dec 2016
    6. SQL support.

    If you are familiar with standard SQL, we can't really talk about SQL support.
    NULLs are not supported.
  • https://t.me/clickhouse_ru
    @winogradoff #2752 11:12 AM, 05 Dec 2016
    Так в jdbc драувере он есть
  • https://t.me/clickhouse_ru
    @etkee #2753 11:13 AM, 05 Dec 2016
    ClickHouse Documentation | ClickHouse Documentation

    ClickHouse is a fast open-source column-oriented database management system that allows generating analytical data reports in real-time using SQL queries

  • https://t.me/clickhouse_ru
    @etkee #2754 11:13 AM, 05 Dec 2016
    jdbc - это стандарт,я так понимаю, там нельзя было не имплементировать метод, обозначенный интерфейсом
  • https://t.me/clickhouse_ru
    @winogradoff #2755 11:14 AM, 05 Dec 2016
    Т.е. для каждого типа какие-то дефолтные пустые значения вставлять?
  • https://t.me/clickhouse_ru
    @winogradoff #2756 11:14 AM, 05 Dec 2016
    Там не имлементированные методы исключения брасают
  • https://t.me/clickhouse_ru
    @winogradoff #2757 11:14 AM, 05 Dec 2016
    А этот нет
  • https://t.me/clickhouse_ru
    @dm_zaytsev #2758 11:17 AM, 05 Dec 2016
    Получается нужно какие-то данные додумывать при загрузке
  • @iamigor #2759 11:29 AM, 05 Dec 2016
    разве надо додумывать?
    если пустая строка в tsv - кликхаус сам запихнет дефолтное значение
  • @iamigor #2760 11:33 AM, 05 Dec 2016
    ну, в смысле,
    INSERT INTO t1 FORMAT TabSeparated, где (x String, y String, z String) и tsv-файлик с содержимым x\t\tz вставит x='x', y='' и z='z'
  • https://t.me/clickhouse_ru
    @dm_zaytsev #2761 11:35 AM, 05 Dec 2016
    А если длинное целое? 0 ?
  • @iamigor #2762 11:36 AM, 05 Dec 2016
    ага
  • @iamigor #2763 11:36 AM, 05 Dec 2016
    Документация ClickHouse | Документация ClickHouse

    ClickHouse is a fast open-source column-oriented database management system that allows generating analytical data reports in real-time using SQL queries

  • @iamigor #2764 11:37 AM, 05 Dec 2016
    > Если выражение для значения по умолчанию не указано, то в качестве значений по умолчанию будут использоваться нули для чисел, пустые строки для строк, пустые массивы для массивов, а также 0000-00-00 для дат и 0000-00-00 00:00:00 для дат с временем. NULL-ы не поддерживаются.
  • @iamigor #2765 11:38 AM, 05 Dec 2016
    ну, если кастомное DEFAULT выражение не указывали, конечно. если указывали, то оно
  • https://t.me/clickhouse_ru
    @etkee ↶ Reply to #2757 #2766 11:38 AM, 05 Dec 2016
    возможно, мейнтейнер просто сам об этом не знал, либо ожидается сделать поддержку нуллов в будущем. в любом случае иначе никак :\
  • https://t.me/clickhouse_ru
    @AndreevDm ↶ Reply to #1320 #2767 11:39 AM, 05 Dec 2016
    Null уже в этом году
  • https://t.me/clickhouse_ru
    @winogradoff #2768 11:40 AM, 05 Dec 2016
    На каждый запрос создавать prepatedstatement только с ненулевыми колонками?
  • https://t.me/clickhouse_ru
    @dm_zaytsev #2769 11:44 AM, 05 Dec 2016
    Анализируем все значения котрые хотим вставить, отбираем те которые не содержат пустых значений и перечисляем в insert только те колонки котрые отбрали....
  • @atokarchuk #2770 12:33 PM, 05 Dec 2016
    Я правильно понимаю, что сейчас, если все реплики шарда distributed-таблицы недоступны, то запись в таблицу продолжает идти, но та часть данных, которая должна была попасть на этот шард, просто теряется, при этом insert не возвращает ошибку?
  • @atokarchuk #2771 12:36 PM, 05 Dec 2016
    Может есть какой-то механизм fall-back на этот случай?
  • @f1yegor #2772 03:46 PM, 05 Dec 2016
    >>из документации
  • @f1yegor #2773 03:46 PM, 05 Dec 2016
    The sampling expression (optional) can be any expression. It must also be present in the primary key. The example uses a hash of user IDs to pseudo-randomly disperse data in the table for each CounterID and EventDate. In other words, when using the SAMPLE clause in a query, you get an evenly pseudo-random sample of data for a subset of users.
  • @f1yegor #2774 03:47 PM, 05 Dec 2016
    проверил - могу создать семплирующую таблицу без выражения сэмпла в primary key
  • @f1yegor #2775 03:57 PM, 05 Dec 2016
    ок, для работы выборки действительно надо. может тогда ругаться при создании таблицы?
  • @f1yegor #2776 04:00 PM, 05 Dec 2016
    какой primary key я должен выбрать для таблицы, сейчса это MergeTree(date, sipHash64(sessionId), (domainId, eventType, ts, itemId, eventId, sipHash64(sessionId)), 8192). во всех запросах используется domainId, eventType, ts. в части используется itemId.
  • @iamigor #2777 04:01 PM, 05 Dec 2016
    по-моему date не хватает в самом начале (перед domainId). ты же не будешь по всему промежутку данные гонять?
  • @f1yegor #2778 04:02 PM, 05 Dec 2016
    т.е. date всегда лучше ставить первым?
  • @iamigor #2779 04:04 PM, 05 Dec 2016
    ну, не факт, зависит от запросов. если не будешь фильтровать по дате 100% запросов, то может и не надо первым ставить

    просто пока partition'ы делятся по месяцам, имхо, эффективнее будет сначала индексировать по дате, но я могу ошибаться
  • @f1yegor #2780 04:04 PM, 05 Dec 2016
    я думал если в запросе фильтр по domainId = AND eventType = то потом как раз timestamp должен быть в индексе
  • @iamigor #2781 04:05 PM, 05 Dec 2016
    если так, то наверное да, domainId, eventType, date/ts
  • @f1yegor #2782 04:06 PM, 05 Dec 2016
    но вот ts timestamp если есть в ключе, после него же уже бесполезно по чему-то сортировать. надо тогда его в конец ключа сдвигать?
  • При вставке в Distributed-таблицу, данные пишутся в файловую систему на локальном сервере, а затем вставляются асинхронно. В случае недоступности реплик, данные будут вставлены позже, когда хотя бы одна реплика станет доступна.
    Для большего контроля, следует вставлять данные напрямую в шарды, не в Distributed таблицу.
  • Ключ сэмплирования имеет смысл только если до него, для каждого значения префикса первичного ключа, есть достаточно большое количество строк.

    Для примера, ставить ключ сэмплирования после ts (timestamp с точностью до секунд) не имеет смысла, так как для каждой одной секунды есть мало данных.

    При выборе первичного ключа следует иметь ввиду, что он не обязан быть уникальным. То есть, itemId, eventId на конце, скорее всего, бесполезны.

    Да, по ссылке на Google Groups нормальное описание.
  • @f1yegor #2787 05:29 PM, 05 Dec 2016
    я использую ReplacingMergeTree, поэтому своя уникальность нужна.
  • В кодовой базе хранение и обработка запросов уже отделены. Например, мы недавно сделали (как обещали) программу clickhouse-local, которая позволяет гонять кликхаусный SQL по обычным файлам.

    Есть и другие варианты - например, можно поддержать Parquet в качестве формата данных, или наоборот, сделать, чтобы данные из ClickHouse можно было получить в виде RDD для Spark. Не знаю, кто и зачем будет это делать.

    Но как отдельная библиотека, хранение не оформлено.
  • Тогда ключ сэмплирование перенесите поближе к началу. Например, между eventType и ts. Сэмплирование с sipHash может не особо хорошо работать, так как этот sipHash надо вычислять для выполнения запроса.

    А вообще, SAMPLE 0.1 - это синтаксический сахар для условия, примерно такого:
    ... AND sample_key < uint_max * 0.1
    в WHERE.
  • @f1yegor #2790 05:35 PM, 05 Dec 2016
    а если делать hash как колонку в базе, возможно будет лучше
  • @milovidov_an #2791 05:40 PM, 05 Dec 2016
    Да.
  • https://t.me/clickhouse_ru
    @dvolodin ↶ Reply to #2788 #2792 06:23 PM, 05 Dec 2016
    Спасибо
  • 06 December 2016 (138 messages)
  • https://t.me/clickhouse_ru
    @Civiloid #2793 11:10 AM, 06 Dec 2016
    Хм, а у кликхауса есть ограничение на размер принимаеого POST запроса?
  • @filonov_ae #2794 11:12 AM, 06 Dec 2016
    нет
  • https://t.me/clickhouse_ru
    @Sablast #2795 11:12 AM, 06 Dec 2016
    вопрос: из-за чего может input csv-файла производиться не целиком? csv файлы делались экспортом из mysql, предыдущие файлы втягивались нормально, а последний из 4 миллионов записей вставляет только 40 тысяч.
  • @filonov_ae #2796 11:13 AM, 06 Dec 2016
    ограничения есть у типичных отсылальщиков POST
  • https://t.me/clickhouse_ru
    @THE_KETHER_CORTEX #2797 11:13 AM, 06 Dec 2016
    Joined.
  • @filonov_ae ↶ Reply to #2795 #2798 11:13 AM, 06 Dec 2016
    а ты как импортируешь?
  • https://t.me/clickhouse_ru
    @Sablast ↶ Reply to #2798 #2799 11:14 AM, 06 Dec 2016
    cat test.csv | clickhouse-client —query="INSERT INTO test(col1, col2, col...) FORMAT CSV";
  • @filonov_ae #2800 11:16 AM, 06 Dec 2016
    а там нигде лишнего неэкранированного разделителя нету случайно?
  • @iamigor #2801 11:16 AM, 06 Dec 2016
    а если --stacktrace
  • https://t.me/clickhouse_ru
    @Sablast #2802 11:20 AM, 06 Dec 2016
    разделителю вроде неоткуда взяться =/
  • @filonov_ae #2803 11:22 AM, 06 Dec 2016
    надо смотреть - что в файле в том месте, где была последняя вставленная запись. Для начала
  • @bangbac #2804 11:22 AM, 06 Dec 2016
    Joined.
  • https://t.me/clickhouse_ru
    @Sablast #2805 11:27 AM, 06 Dec 2016
    stacktrace ничего не выдает
  • @iamigor #2806 11:28 AM, 06 Dec 2016
    КХ всегда ругается на некорректные данные
  • @iamigor #2807 11:28 AM, 06 Dec 2016
    по крайней мере, по http
  • https://t.me/clickhouse_ru
    @Sablast #2808 11:31 AM, 06 Dec 2016
    работаем через клиент командной строки
  • @iamigor #2809 11:32 AM, 06 Dec 2016
    хотя даже если без --stacktrace..

    ❯ clickhouse-client -q "CREATE TABLE test (s String, i Int64) ENGINE = Memory;"

    ❯ echo -e '"hello",1\n"invalid csv' | clickhouse-client -q 'INSERT INTO test FORMAT CSV'
    Code: 27. DB::Exception: Cannot parse input: expected , at end of stream.:
    Could not print diagnostic info because two last rows aren't in buffer (rare case)
    : (at row 2)
  • https://t.me/clickhouse_ru
    @Sablast #2810 11:34 AM, 06 Dec 2016
    так вся прелесть в том, что он файл обрабатывает, выбирает из него какоето количество записей, делает их insert
  • https://t.me/clickhouse_ru
    @Sablast #2811 11:34 AM, 06 Dec 2016
    и никаких ошибок
  • @iamigor #2812 11:36 AM, 06 Dec 2016
    мм, а count() по этой таблице возвращает верное кол-во данных?
    если вообще без фильтров
  • https://t.me/clickhouse_ru
    @Sablast #2813 11:37 AM, 06 Dec 2016
    вот как раз нет, он выдает ~50к записей, а в csv их 1кк
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #2794 #2814 11:44 AM, 06 Dec 2016
    есть по max query size
  • https://t.me/clickhouse_ru
    @Civiloid #2815 11:44 AM, 06 Dec 2016
    и оно влияет в том числе на то как парсится запрос отправленный по пост и выдает немного странную ошибку
  • https://t.me/clickhouse_ru
    @Civiloid #2816 11:44 AM, 06 Dec 2016
    поднял юзеру - заработало
  • @filonov_ae #2817 11:54 AM, 06 Dec 2016
    Так это не лимит POST-а, а лимит парсера SQL. Что как-бы разные вещи. POST-ом я гигабайты заливал
  • @filonov_ae #2818 11:55 AM, 06 Dec 2016
    и мне таки интересно - что у клиента за запросы, если ему 64К на SQL не хватило
  • @f1yegor #2820 01:05 PM, 06 Dec 2016
    привет. когда я делаю RENAME таблицы, будет ли он заблокирован SELECT query из этой же таблицы?
  • @f1yegor #2821 01:11 PM, 06 Dec 2016
    после перезагрузки сервера новый RENAME все так же продолжает висеть.
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #2817 #2822 01:24 PM, 06 Dec 2016
    ну в общем да, просто ошибка неинформативная
  • https://t.me/clickhouse_ru
    @Civiloid #2823 01:24 PM, 06 Dec 2016
    и по ней казалось словно есть лимит на вставку
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #2818 #2824 01:27 PM, 06 Dec 2016
    очень большой селект, примерно на 1.6МБ
  • @filonov_ae ↶ Reply to #2824 #2825 01:29 PM, 06 Dec 2016
    http://filonov.livejournal.com/11140.html типа такого? 😊
    Да ужжжж

    Интересно, что именно в php вызывает повреждения мозга у тех, кто на нем пишет? SELECT .... WHERE (xxx BETWEEN start_ip AND end_ip) OR(yyy BETWEEN start_ip AND end_ip) ... и так примерно 5 тысяч раз.

  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #2825 #2826 01:29 PM, 06 Dec 2016
    не, нормальный, просто автоматически сгенерированный графаной
  • https://t.me/clickhouse_ru
    @Civiloid #2827 01:30 PM, 06 Dec 2016
    SELECT Path, Value, Time, Timestamp where PATH IN ( список из 80 тысяч path'ов)
  • https://t.me/clickhouse_ru
    @Civiloid #2828 01:30 PM, 06 Dec 2016
    потому что так * раскрылась
  • @filonov_ae #2829 01:36 PM, 06 Dec 2016
    😊
  • @filonov_ae #2830 01:37 PM, 06 Dec 2016
    С лимитом POST-запросов чаще натыкаешься с клиентской стороны. Потому как не только лишь все могу отослать 10G POST, мало кто может это сделать.
  • https://t.me/clickhouse_ru
    @Civiloid #2831 01:49 PM, 06 Dec 2016
    Хм, интересная штука
  • https://t.me/clickhouse_ru
    @Civiloid #2832 01:49 PM, 06 Dec 2016
    мелкие запросы с PREWHERE выполняюстя в разы быстрее
  • https://t.me/clickhouse_ru
    @Civiloid #2833 01:49 PM, 06 Dec 2016
    в 2 раза где-то
  • https://t.me/clickhouse_ru
    @Civiloid #2834 01:49 PM, 06 Dec 2016
    а тяжелые наоборот, раз в 6 медленее
  • https://t.me/clickhouse_ru
    @Civiloid #2835 01:49 PM, 06 Dec 2016
    в чем причина?
  • @filonov_ae #2836 01:49 PM, 06 Dec 2016
    На моих запросах разницы вообще не было
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #2836 #2837 01:50 PM, 06 Dec 2016
    у меня на легких запросах prewhere - 80ms, where - 200ms
  • https://t.me/clickhouse_ru
    @Civiloid #2838 01:50 PM, 06 Dec 2016
    на тяжелых prewhere - 15sec, where - 3sec
  • @filonov_ae #2839 01:51 PM, 06 Dec 2016
    Мои "легкие" в минутах измеряются :)
  • https://t.me/clickhouse_ru
    @Civiloid #2840 01:51 PM, 06 Dec 2016
    ну у меня это графит
  • @filonov_ae #2841 01:53 PM, 06 Dec 2016
    У меня - много миллиардов строк статистики
  • @nordicdyno #2842 01:55 PM, 06 Dec 2016
    Joined.
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #2841 #2843 02:06 PM, 06 Dec 2016
    ну у меня пока графит на пол млн метрик и примерно 50 млрд точек
  • https://t.me/clickhouse_ru
    @Civiloid #2844 02:07 PM, 06 Dec 2016
    структура поэтому простая
  • https://t.me/clickhouse_ru
    @orantius ↶ Reply to #2835 #2845 02:29 PM, 06 Dec 2016
    зависит от селективности условий и распределения данных по блокам. если про какие-то блоки можно быстро понять, что их читать не надо, то запрос ускоряется, если нет, то данные прочитаюся два раза. почему стало медленней в целых 5 раз - это интересно, но без деталей это вряд ли получится определить.
  • https://t.me/clickhouse_ru
    @winogradoff #2846 02:50 PM, 06 Dec 2016
    help

    "ReplicatedMergeTree('/clickhouse/tables/{layer}-{shard}/hits', '{replica}', EventDate, intHash32(UserID), (CounterID, EventDate, intHash32(UserID), EventTime), 8192)
    Путь к таблице в ZooKeeper должен быть разным для каждой реплицируемой таблицы. В том числе, для таблиц на разных шардах, должны быть разные пути.

    Что здесь значит "разным для каждой реплицируемой таблицы"?
  • @shinebell #2847 03:29 PM, 06 Dec 2016
    ребят, а удаленно можно загузить csv-ник через курл в кликхаус ?
  • @iamigor #2848 03:30 PM, 06 Dec 2016
    в документации же есть примеры
  • @iamigor #2849 03:34 PM, 06 Dec 2016
    cat example.csv | curl 'http://localhost:8123/?query=INSERT+INTO+test+FORMAT+CSV' --data-binary @-
  • @shinebell #2850 03:34 PM, 06 Dec 2016
    ага, спасибо!
  • @shinebell #2851 03:34 PM, 06 Dec 2016
    просмотрел
  • @shinebell #2852 03:34 PM, 06 Dec 2016
    :(
  • @iamigor #2853 03:34 PM, 06 Dec 2016
    ну не прям такой
  • @iamigor #2854 03:34 PM, 06 Dec 2016
    echo -ne '10\n11\n12\n' | POST 'http://localhost:8123/?query=INSERT INTO t FORMAT TabSeparated'

    но под curl несложно переделать
  • https://t.me/clickhouse_ru
    @luc1ph3r #2855 04:20 PM, 06 Dec 2016
    Joined.
  • @bangbac #2856 05:01 PM, 06 Dec 2016
    Joined.
  • @bangbac #2857 05:01 PM, 06 Dec 2016
    Ппр
  • @bangbac #2858 05:02 PM, 06 Dec 2016
    кто то юзал блого движок Эгея?
  • @bangbac #2859 05:18 PM, 06 Dec 2016
    Всем любителям фильмов советую отличный чатик @chatanonhownow
  • @roman_kolchin #2860 05:19 PM, 06 Dec 2016
    Вы зашли в канал чисто поспамить?
  • @bangbac #2861 05:19 PM, 06 Dec 2016
    Не
  • @roman_kolchin #2862 05:19 PM, 06 Dec 2016
    А похоже.
  • @bangbac #2863 05:20 PM, 06 Dec 2016
    Что такое клик хаус яндекс?
  • @roman_kolchin #2864 05:20 PM, 06 Dec 2016
    ClickHouse DBMS

    ClickHouse is a fast open-source column-oriented database management system that allows generating analytical data reports in real-time using SQL queries

  • https://t.me/clickhouse_ru
    @the_real_jkee #2865 05:30 PM, 06 Dec 2016
    Убрал этого человека из группы.
  • https://t.me/clickhouse_ru
    @socketpair #2866 05:32 PM, 06 Dec 2016
    А есть бот которому скармливаешь чела и если много кто пожаловался то его банят вобще в телеграме ?
  • https://t.me/clickhouse_ru
    @the_real_jkee #2867 05:35 PM, 06 Dec 2016
    Не знаю.
  • @MaximusP ↶ Reply to #2866 #2868 05:36 PM, 06 Dec 2016
    Это не бот, скорее голосовалка.
    Но и какое-то подобие бота было.
  • @iamigor #2869 05:36 PM, 06 Dec 2016
    есть, называется техподдержка.+42470 телефон
  • @f1yegor ↶ Reply to #2827 #2870 05:38 PM, 06 Dec 2016
    а как кх к графане подключали?
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #2870 #2871 05:40 PM, 06 Dec 2016
    GitHub - lomik/graphite-clickhouse: Graphite cluster backend with ClickHouse support

    Graphite cluster backend with ClickHouse support. Contribute to lomik/graphite-clickhouse development by creating an account on GitHub.

  • @f1yegor #2872 05:42 PM, 06 Dec 2016
    grafana?
  • @f1yegor #2873 05:42 PM, 06 Dec 2016
    не графит
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #2872 #2874 05:49 PM, 06 Dec 2016
    Через слой совместимости с графитом
  • @f1yegor #2875 05:51 PM, 06 Dec 2016
    ок. я просто графитом не занимался совсем. а, то есть источником графаны является графит, бекендом которого является кх?
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #2875 #2876 05:51 PM, 06 Dec 2016
    Да
  • @f1yegor #2877 05:52 PM, 06 Dec 2016
    а на прямую графану с кх никто не связывал?
  • https://t.me/clickhouse_ru
    @Civiloid #2878 06:01 PM, 06 Dec 2016
    Нужно плагин писать под графану
  • @f1yegor #2879 06:02 PM, 06 Dec 2016
    да, я знаю, смотрел уже некоторые примеры, только руки не доходят
  • @f1yegor #2880 06:02 PM, 06 Dec 2016
    да и на работе под это времени нет
  • https://t.me/clickhouse_ru
    @Civiloid #2881 06:20 PM, 06 Dec 2016
    Ну у меня задачи мониторинговые сейчас.
  • Данные два раза не читаются.
  • Первый параметр должен быть разным для каждого шарда. При этом он один для разных реплик одного шарда.
  • https://t.me/clickhouse_ru
    @winogradoff #2884 07:35 PM, 06 Dec 2016
    Спасибо
  • https://t.me/clickhouse_ru
    @winogradoff #2885 07:41 PM, 06 Dec 2016
    А как используется имя реплики? То есть для чего?
  • https://t.me/clickhouse_ru
    @rlomonosov #2886 07:42 PM, 06 Dec 2016
    Для самоидентификации видимо. Чтоб с себя не качать
  • @f1yegor #2887 07:43 PM, 06 Dec 2016
    я не разработчик, но отвечу. это будет использоваться в узлах zookeeper для поддержания кластера
  • @f1yegor #2888 07:43 PM, 06 Dec 2016
    select * from system.zookeeper;
  • @Valeriy_Bykov #2889 07:51 PM, 06 Dec 2016
    Меня мучает вопрос. Спать не могу. Почему репликация не используется для ускорения выполнения запросов? Грубо говоря, при двух репликах разбить все данные на два куска, на одной реплике обработать один, на другой - другой, результаты смерджить. Как это работает при шардировании, но только без шардирования.
  • @iamigor #2890 07:53 PM, 06 Dec 2016
    может, потому что данные до реплики могли еще не дойти, например?
  • https://t.me/clickhouse_ru
    @netneladno #2891 07:53 PM, 06 Dec 2016
    ну тут можно понять дошли или не дошли
  • https://t.me/clickhouse_ru
    @netneladno #2892 07:53 PM, 06 Dec 2016
    прогромировать надо просто
  • https://t.me/clickhouse_ru
    @netneladno #2893 07:53 PM, 06 Dec 2016
    и кост модель делать
  • https://t.me/clickhouse_ru
    @netneladno #2894 07:54 PM, 06 Dec 2016
    а какие тут кост модели щас
  • @f1yegor #2895 07:54 PM, 06 Dec 2016
    т.е. запись в два шарда идет синхронная?
  • https://t.me/clickhouse_ru
    @netneladno #2896 07:54 PM, 06 Dec 2016
    нет, ты же можешь спросить запрос про старые уже данные
  • Мне в любом случае не повезет тогда, если запрос целиком выполнится на отставшей реплике. Но вообще да, это наверное можно проверить, распределяя, на какой реплике что обработается.
  • Есть настройка max_parallel_replicas. Делает как раз то, что нужно.
    Но для консистентности (чтобы получить разные части одного и того же разбиения), эта опция работает только при заданном ключе сэмплирования.
  • https://t.me/clickhouse_ru
    @netneladno #2899 07:57 PM, 06 Dec 2016
    можно добавить в синтаксис по-тупому фразу аля "at epoch 5 minutes ago"
  • https://t.me/clickhouse_ru
    @netneladno #2900 07:58 PM, 06 Dec 2016
    или как там в вертике сделали
  • @iamigor #2901 07:58 PM, 06 Dec 2016
    типа human-readable relative time?
  • Ух ты, класс! Чтобы это попало в документацию надо мердж-реквест делать? ) И да - отставание реплик при этом не контролируется?
  • @iamigor #2903 07:59 PM, 06 Dec 2016
    я хочу еще один мерж реквест запилить с исправлениями доки, могу добавить недостающие опции
  • @iamigor #2904 07:59 PM, 06 Dec 2016
    если в коде где-то есть еще и описание - ваще идеально
  • https://t.me/clickhouse_ru
    @rlomonosov #2905 08:00 PM, 06 Dec 2016
    Это наверно опция distributed и кластера. оно вроде как про отставания ниче не знает. хотя может я и не прав
  • @milovidov_an #2906 08:00 PM, 06 Dec 2016
    Отставание не контролируется. В документацию не спешили писать в виду ограниченности возможности. Она ускоряет далеко не все запросы. Но если будет pull request, то появится.
  • Это не только в опциях надо описывать, а еще и в описании Distributed, где сказано, что запрос идет на одну реплику шарда.
  • @iamigor ↶ Reply to #2907 #2908 08:01 PM, 06 Dec 2016
    оке, там тоже упомяну
  • @Valeriy_Bykov #2909 08:01 PM, 06 Dec 2016
    Спасибо, я могу спать спокойно )
  • @milovidov_an #2910 08:02 PM, 06 Dec 2016
    В коде слабое описание:
    /** Максимальное количество используемых реплик каждого шарда при выполнении запроса */
  • @iamigor #2911 08:02 PM, 06 Dec 2016
    а как-нибудь можно решить ситуацию, когда есть таблица логов с timestamp'ами, и надо сделать запрос, где для каждой строки считается дельта от timestamp'а предыдущей строки?
  • https://t.me/clickhouse_ru
    @netneladno #2912 08:03 PM, 06 Dec 2016
    конечно, взять базу которая виндоу умеет
  • @iamigor #2913 08:04 PM, 06 Dec 2016
    )) спасибо
  • @f1yegor #2914 08:05 PM, 06 Dec 2016
    runningDifference
  • https://t.me/clickhouse_ru
    @netneladno #2915 08:05 PM, 06 Dec 2016
    я можно вопрос разработчикам? когда ожидается виндоу?
  • @iamigor ↶ Reply to #2914 #2916 08:06 PM, 06 Dec 2016
    о_О кажется, на днях про нее читал что-то, что «секретная» и все такое, успела вылететь из головы уже
  • @f1yegor #2917 08:06 PM, 06 Dec 2016
    есть такая функция, говорят если делать с order by, то будет работать нормально. сам не проверял корректность работы, но что-то выводит
  • @f1yegor #2918 08:06 PM, 06 Dec 2016
    у меня видно память лучше)
  • Сейчас вне планов.
  • https://t.me/clickhouse_ru
    @netneladno #2920 08:06 PM, 06 Dec 2016
    как же вы ранки считаете
  • @f1yegor #2921 08:07 PM, 06 Dec 2016
    я упорядычеваю выдачу, а ранки в коде потом добавляю
  • @f1yegor #2922 08:09 PM, 06 Dec 2016
    а под window имеется в виду partition by, или running average, например?
  • https://t.me/clickhouse_ru
    @netneladno #2923 08:10 PM, 06 Dec 2016
    мне больше раннинг штуки нужны
  • https://t.me/clickhouse_ru
    @netneladno #2924 08:10 PM, 06 Dec 2016
    но партишонг бай ортогонально важно
  • @iamigor #2925 08:33 PM, 06 Dec 2016
    а добавлять в доку runningdifference не стоит даже с рекомендациями/предупреждениями, что она может нестабильно рбаотать?
  • Можно добавлять с предупреждениями. Там всё стабильно, но зависит от разбиения данных на блоки, которые пользователь не контролирует.
  • @iamigor #2927 08:36 PM, 06 Dec 2016
    большое спасибо!
  • @garikanet #2928 09:39 PM, 06 Dec 2016
    У всех заранее сорри, тема "чуть" оф топ, но писать в личку я не решился ;)
    Подскажите, а когда стоит ожидать исправление фичи/бага в LogsApi YAM , когда referer в дампе содержит перенос строк ( %0A ) , и получается что dump не валиден для загрузки в CH.
    Как я понимаю это из за того что в Yam хранит уже обработанный Referer в CH.

    Просто это задерживает публикацию моей следующей статьи о CH, т.к примеры кода в ней будет не рабочим , а на статью о collapse я "забил" )
  • https://t.me/clickhouse_ru
    @132765536 #2929 10:00 PM, 06 Dec 2016
    Joined.
  • @shinebell #2930 11:23 PM, 06 Dec 2016
    Алексей, подскажите, а несколько джойнов в одном запросе не поддерживаются ?
  • @milovidov_an #2931 11:23 PM, 06 Dec 2016
    Напрямую нет, но можно через вложенные подзапросы.
  • 07 December 2016 (112 messages)
  • @shirolimit #2932 08:38 AM, 07 Dec 2016
    Joined.
  • https://t.me/clickhouse_ru
    @karlovnv #2933 08:41 AM, 07 Dec 2016
    коллеги, привет. У наших админов возник вопрос - является ли хорошей практикой запускать кликхаус в докере?
  • https://t.me/clickhouse_ru
    @aensidhe #2934 08:42 AM, 07 Dec 2016
    Мы не можем рекомендовать, потому что сами не используем так. Но и противопоказаний у нас тоже нет.
  • https://t.me/clickhouse_ru
    @karlovnv #2935 08:44 AM, 07 Dec 2016
    спасибо, будем пробовать.
  • https://t.me/clickhouse_ru
    @aensidhe #2936 08:44 AM, 07 Dec 2016
    хм. на форвард нельзя ткнуть, чтобы увидеть откуда
  • https://t.me/clickhouse_ru
    @aensidhe #2937 08:45 AM, 07 Dec 2016
    в общем, это в этом же канале выше. поиском можно найти по моему вопросу про докер :)
  • https://t.me/clickhouse_ru
    @karlovnv #2938 08:51 AM, 07 Dec 2016
    ага, нашел. Спасибо. А вам лично удалось запустить кликхаус в докере?
  • https://t.me/clickhouse_ru
    @dvolodin #2939 08:52 AM, 07 Dec 2016
    я тестовый запускал
  • https://t.me/clickhouse_ru
    @dvolodin #2940 08:52 AM, 07 Dec 2016
    работает
  • @iamigor #2941 08:52 AM, 07 Dec 2016
    мне лично удавалось (не продакшн, естестна)
  • @filonov_ae ↶ Reply to #2933 #2942 08:53 AM, 07 Dec 2016
    Но зачем?
  • https://t.me/clickhouse_ru
    @Civiloid #2943 08:54 AM, 07 Dec 2016
    Базы вообще не очень хорошо ложатся на концепцию докера
  • https://t.me/clickhouse_ru
    @aensidhe ↶ Reply to #2938 #2944 08:56 AM, 07 Dec 2016
    пока нет, потому что другие задачи.
  • https://t.me/clickhouse_ru
    @aensidhe ↶ Reply to #2942 #2945 08:57 AM, 07 Dec 2016
    доставлять бинари на сервер удобнее. в плане docker image использовать.
  • Почему, кстати?
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #2946 #2947 08:58 AM, 07 Dec 2016
    Базы - stateful, а докер как концепция сделан под stateless
  • https://t.me/clickhouse_ru
    @aensidhe ↶ Reply to #2946 #2948 08:58 AM, 07 Dec 2016
    потому что к данным привязка. пока у вас контейнер без состояния, всё красиво.
  • @filonov_ae #2949 08:59 AM, 07 Dec 2016
    а кликхаус становится осмысленен когда данных мнооооого
  • https://t.me/clickhouse_ru
    @Civiloid #2950 08:59 AM, 07 Dec 2016
    Иначе это получается бинарные пакеты работы с которыми дает 3% оверхед минимум :)
  • https://t.me/clickhouse_ru
    @aensidhe ↶ Reply to #2947 #2951 08:59 AM, 07 Dec 2016
    на самом деле, сам запускальщик runc, не завязан ни на что. под стейтлесс сделаны оркестраторы вокруг докера
  • https://t.me/clickhouse_ru
    @aensidhe #2952 08:59 AM, 07 Dec 2016
    например, можно взять porto вместо runc.
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #2951 #2953 08:59 AM, 07 Dec 2016
    Ну да, докер это тоже не только запускальщик, это вся экосистема
  • https://t.me/clickhouse_ru
    @aensidhe ↶ Reply to #2953 #2954 09:00 AM, 07 Dec 2016
    ну, людям это непонятно может быть. поэтому лучше говорить, что оркестраторы точат обычно в стейтлесс. а сам docker engine - более менее. Docker swarm - треш, никто в проде не используйте.
  • https://t.me/clickhouse_ru
    @aensidhe #2955 09:01 AM, 07 Dec 2016
    даже не пытайтесь. ни то, что до 1.12 было, ни 1.12 версию.
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #2954 #2956 09:01 AM, 07 Dec 2016
    А сам документ о - непонятно зачем когда у любого дистра есть пакеты
  • https://t.me/clickhouse_ru
    @aensidhe ↶ Reply to #2956 #2957 09:02 AM, 07 Dec 2016
    пакеты обычно outdated. это верно, например, для ubuntu.
  • https://t.me/clickhouse_ru
    @aensidhe #2958 09:02 AM, 07 Dec 2016
    поставить две версии пакета обычно нельзя.
  • https://t.me/clickhouse_ru
    @aensidhe #2959 09:02 AM, 07 Dec 2016
    или я пока не знаю как. а иногда надо.
  • @filonov_ae #2960 09:03 AM, 07 Dec 2016
    можно. Но зачем?
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #2957 #2961 09:03 AM, 07 Dec 2016
    Весь самосбор в /opt
  • https://t.me/clickhouse_ru
    @Civiloid #2962 09:03 AM, 07 Dec 2016
    И давать префиксы
  • https://t.me/clickhouse_ru
    @Civiloid #2963 09:03 AM, 07 Dec 2016
    Все равно тебе этот софт надо откуда то брать
  • https://t.me/clickhouse_ru
    @aensidhe ↶ Reply to #2960 #2964 09:03 AM, 07 Dec 2016
    толстая нода. крутится стейдж и прод. в проде БД 2.0, не в проде БД 5.0
  • https://t.me/clickhouse_ru
    @aensidhe ↶ Reply to #2961 #2965 09:04 AM, 07 Dec 2016
    да, и вот это всё даёт мне docker image.
  • https://t.me/clickhouse_ru
    @aensidhe #2966 09:04 AM, 07 Dec 2016
    без заморочек
  • https://t.me/clickhouse_ru
    @Civiloid #2967 09:04 AM, 07 Dec 2016
    Как будто пакеты собрать сложно
  • https://t.me/clickhouse_ru
    @aensidhe #2968 09:04 AM, 07 Dec 2016
    при этом совершенно необязательно использовать оркестраторы.
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #2968 #2969 09:06 AM, 07 Dec 2016
    Я без оркестраторов не вижу преимуществ докера перед пакетами
  • https://t.me/clickhouse_ru
    @aensidhe ↶ Reply to #2967 #2970 09:06 AM, 07 Dec 2016
    на ассемблере тоже не очень сложно писать. я с универа помню. в общем, это вопрос религии. Если у вас все разработчики умеют собирать нужные пакеты под нужные дистрибутивы и так, чтобы они зависимостями не подрались, то замечательно.
  • https://t.me/clickhouse_ru
    @aensidhe #2971 09:06 AM, 07 Dec 2016
    для нашей команды это утверждение неверно. учить этому бессмысленно, т.к. есть инструмент, который проще, а делает тоже самое.
  • https://t.me/clickhouse_ru
    @aensidhe #2972 09:07 AM, 07 Dec 2016
    https://www.youtube.com/watch?v=XHvh2z0B3JE&t=0s - собственно, посмотрите. В Яндексе +- тоже самое делают. Только porto вместо runc и свой оркестратор. СУБД пока не умеют эффективно, но работают над этим.
  • https://t.me/clickhouse_ru
    @dvolodin #2973 09:12 AM, 07 Dec 2016
    под базы есть volume в докере
  • https://t.me/clickhouse_ru
    @aensidhe ↶ Reply to #2973 #2974 09:14 AM, 07 Dec 2016
    Проблема в оркестрации. Например, у вас аппа без состояния. Контейнер сдох, сервер сдох - новый контейнер спокойно можно запустить на другом сервере. Надо поскейлить - запустите ещё N инстансов.
    С СУБД так нельзя. Поэтому это представляет сложность.
  • https://t.me/clickhouse_ru
    @Civiloid #2975 09:15 AM, 07 Dec 2016
    А зачастую всякие SAN'ы под СУБД не очень хорошо подходят
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #2971 #2976 09:17 AM, 07 Dec 2016
    я бы не сказал что проще - во всех случаях ты описываешь что поставить и как собрать.
  • https://t.me/clickhouse_ru
    @aensidhe ↶ Reply to #2976 #2977 09:18 AM, 07 Dec 2016
    проще. Потому что девелопить можно на любимом макбуке.
  • https://t.me/clickhouse_ru
    @dvolodin #2978 09:18 AM, 07 Dec 2016
    для субд для надежности нужно shared storage
  • https://t.me/clickhouse_ru
    @dvolodin #2979 09:19 AM, 07 Dec 2016
    iscsi, nfs
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #2978 #2980 09:19 AM, 07 Dec 2016
    а для скорости локальные ссдшки )
  • https://t.me/clickhouse_ru
    @dvolodin #2981 09:19 AM, 07 Dec 2016
    нет
  • https://t.me/clickhouse_ru
    @Civiloid #2982 09:19 AM, 07 Dec 2016
    и iscsi/nfs не надежны сами по себе
  • https://t.me/clickhouse_ru
    @dvolodin #2983 09:19 AM, 07 Dec 2016
    ну сказки не рассказывай
  • https://t.me/clickhouse_ru
    @Civiloid #2984 09:19 AM, 07 Dec 2016
    надежность тебе даст то что за ними
  • https://t.me/clickhouse_ru
    @dvolodin #2985 09:19 AM, 07 Dec 2016
    с другого конца, скажем, nutanix посадить
  • https://t.me/clickhouse_ru
    @dvolodin #2986 09:19 AM, 07 Dec 2016
    и нормально будет с базой
  • https://t.me/clickhouse_ru
    @dvolodin #2987 09:20 AM, 07 Dec 2016
    сдохнет нода - встанет на другой
  • https://t.me/clickhouse_ru
    @aensidhe ↶ Reply to #2977 #2988 09:20 AM, 07 Dec 2016
    ну и не надо заморачиваться про две версии одного пакета в системе.
  • https://t.me/clickhouse_ru
    @aensidhe ↶ Reply to #2987 #2989 09:20 AM, 07 Dec 2016
    3 петабайта, ага.
  • https://t.me/clickhouse_ru
    @dvolodin #2990 09:20 AM, 07 Dec 2016
    встанет
  • https://t.me/clickhouse_ru
    @Civiloid #2991 09:21 AM, 07 Dec 2016
    @dvolodin у каждого решения свои предположения и допущения лежат в основе.
  • https://t.me/clickhouse_ru
    @aensidhe ↶ Reply to #2990 #2992 09:21 AM, 07 Dec 2016
    а если это был мастер с асинхронной репликацией?
  • https://t.me/clickhouse_ru
    @dvolodin #2993 09:21 AM, 07 Dec 2016
    у тебя же не WAL на 3Pb
  • https://t.me/clickhouse_ru
    @Civiloid #2994 09:21 AM, 07 Dec 2016
    Если бы все было так просто как ты пишешь, то у всех бы все было одинаковым в плане как минимум физики
  • https://t.me/clickhouse_ru
    @dvolodin #2995 09:21 AM, 07 Dec 2016
    ну отлично
  • https://t.me/clickhouse_ru
    @dvolodin #2996 09:21 AM, 07 Dec 2016
    у тебя сдох сервер
  • https://t.me/clickhouse_ru
    @dvolodin #2997 09:21 AM, 07 Dec 2016
    чем отличается?
  • https://t.me/clickhouse_ru
    @dvolodin #2998 09:21 AM, 07 Dec 2016
    та же самая ситуевина
  • https://t.me/clickhouse_ru
    @dvolodin #2999 09:22 AM, 07 Dec 2016
    пытаешься запустить на другом с тем же состоянием
  • https://t.me/clickhouse_ru
    @aensidhe ↶ Reply to #2997 #3000 09:22 AM, 07 Dec 2016
    если у меня нет нутаникса, то нет, другая.
  • https://t.me/clickhouse_ru
    @dvolodin #3001 09:22 AM, 07 Dec 2016
    я как пример привел
  • https://t.me/clickhouse_ru
    @dvolodin #3002 09:22 AM, 07 Dec 2016
    что в виртуалках, что в докере -- состояние базы надо скидывать на shared storage
  • https://t.me/clickhouse_ru
    @aensidhe #3003 09:22 AM, 07 Dec 2016
    1. если репликация не синхронная, автоматом перезапускать нельзя. Потому что ты кладёшь на оркестратор бизнес-решение - ок или не ок потерять данные
  • https://t.me/clickhouse_ru
    @dvolodin #3004 09:22 AM, 07 Dec 2016
    тут не в докере дело
  • https://t.me/clickhouse_ru
    @aensidhe ↶ Reply to #3002 #3005 09:22 AM, 07 Dec 2016
    нет, про докер точно неверное утверждение.
  • https://t.me/clickhouse_ru
    @dvolodin #3006 09:23 AM, 07 Dec 2016
    для докера volume - внешнее состояние
  • https://t.me/clickhouse_ru
    @aensidhe ↶ Reply to #3004 #3007 09:23 AM, 07 Dec 2016
    да, дело в оркестраторе.
  • https://t.me/clickhouse_ru
    @dvolodin #3008 09:24 AM, 07 Dec 2016
    тогда при чем тут докер
  • https://t.me/clickhouse_ru
    @dvolodin #3009 09:24 AM, 07 Dec 2016
    :)
  • https://t.me/clickhouse_ru
    @dvolodin #3010 09:24 AM, 07 Dec 2016
    этак и ESXi может сдуру на другой хост все потянуть
  • https://t.me/clickhouse_ru
    @aensidhe ↶ Reply to #3008 #3011 09:25 AM, 07 Dec 2016
    ну, если читать всю дискуссию, то есть мнение (не моё), что докер без оркестраторов не нужен. И, в принципе, оно не то, чтобы безосновательное
  • https://t.me/clickhouse_ru
    @dvolodin #3012 09:25 AM, 07 Dec 2016
    пакетный менеджер - тоже не нужен
  • @filonov_ae #3013 09:37 AM, 07 Dec 2016
    Вот что точно не нужно - так это использование докера как пакетного менеджера
  • https://t.me/clickhouse_ru
    @dvolodin #3014 09:38 AM, 07 Dec 2016
    пакет - более мелкий элемент
  • https://t.me/clickhouse_ru
    @dvolodin #3015 09:39 AM, 07 Dec 2016
    вот не хочется право же с ним работать
  • https://t.me/clickhouse_ru
    @dvolodin #3016 09:39 AM, 07 Dec 2016
    иначе потом для инсталляции приходится адские playbook'и городить
  • https://t.me/clickhouse_ru
    @dvolodin #3017 09:39 AM, 07 Dec 2016
    когда своих сервисов с пару десятков, и еще чужих десяток нужен
  • https://t.me/clickhouse_ru
    @dvolodin #3018 09:40 AM, 07 Dec 2016
    и все это должно работать на основных дистрах линукса и на фре до кучи
  • https://t.me/clickhouse_ru
    @dvolodin #3019 09:41 AM, 07 Dec 2016
    docker image можно собирать из пакетов, если хочется
  • https://t.me/clickhouse_ru
    @Civiloid #3020 09:47 AM, 07 Dec 2016
    фрю в 2016 году пора бы уже закопать
  • https://t.me/clickhouse_ru
    @freeseacher #3021 09:47 AM, 07 Dec 2016
    пользователям это раскажите :)
  • https://t.me/clickhouse_ru
    @dvolodin #3022 09:48 AM, 07 Dec 2016
    пакетные менеджеры пора бы закопать
  • https://t.me/clickhouse_ru
    @dvolodin #3023 09:48 AM, 07 Dec 2016
    во всем их многообразии
  • @filonov_ae #3024 09:49 AM, 07 Dec 2016
    Будущее - за менеджерами пакетов контейнеров
  • https://t.me/clickhouse_ru
    @Sablast #3025 11:29 AM, 07 Dec 2016
    подскажите, почему count может вызывать ошибку?
    SELECT COUNT(date) FROM test
    Received exception from server:
    Code: 42. DB::Exception: Received from localhost:9000, 127.0.0.1. DB::Exception: Passed 1 arguments to nullary aggregate function count.
  • @iamigor #3026 11:30 AM, 07 Dec 2016
    count() вызывается без аргументов
  • @iamigor #3027 11:31 AM, 07 Dec 2016
    если надо посчитать уникальное кол-во дат, есть, например, uniqExact(date) и более быстрая/менее точная uniq(date)
  • https://t.me/clickhouse_ru
    @BloodJazMan #3028 11:31 AM, 07 Dec 2016
    а чего? есть в чатеге те кто юзают nutanix активно?
  • https://t.me/clickhouse_ru
    @Sablast ↶ Reply to #3026 #3029 11:32 AM, 07 Dec 2016
    ясно, спасибо
  • @iamigor #3030 11:33 AM, 07 Dec 2016
    кстати, интересно, а после того, как добавят NULLы, появится count(expr)?
  • @iamigor #3031 11:34 AM, 07 Dec 2016
    наверное, оно не надо, если все равно есть countIf()
  • https://t.me/clickhouse_ru
    @theDevilYouKnow #3032 01:07 PM, 07 Dec 2016
    Joined.
  • @atokarchuk #3033 02:28 PM, 07 Dec 2016
    А есть какой-нибудь механизм сделать бекап на уровне бд аналогично alter table freeze partition, но чтобы в одном каталоге в shadow получить бекап всех таблиц сразу, а не по одной на каталог?
  • @milovidov_an #3034 04:45 PM, 07 Dec 2016
    Для всех таблиц сразу такого нет.
  • @f1yegor #3035 04:47 PM, 07 Dec 2016
    Мы уже месяцев 5 используем без проблем
  • @f1yegor #3036 04:47 PM, 07 Dec 2016
    коллеги, привет. У наших админов возник вопрос - является ли хорошей практикой запускать кликхаус в докере?
  • @f1yegor #3037 04:48 PM, 07 Dec 2016
    Это было про докер
  • @et_ya #3038 08:38 PM, 07 Dec 2016
    Joined.
  • @renatko #3039 08:48 PM, 07 Dec 2016
    кто-нибудь юзает кликхауз на google cloud?
    я тут делаю бенчмарк и получаю странные результаты:
    селекты с сервера, на который не идут инсерты - X queries per second
    селекты с сервера, на который идут инсерты пачками по 5к строк (3-4 в секунду) - X + 20% queries per second

    с чем это может быть связанно?
  • @iamigor #3040 08:51 PM, 07 Dec 2016
    c удачными последовательными чтением-записью на жесткий диск?
  • @renatko #3041 08:55 PM, 07 Dec 2016
    но ведь логично предположить, что сервер, на который нет записи будет выдавать как минимум ту же производительность?
  • @renatko #3042 08:56 PM, 07 Dec 2016
    ох, сории
    > селекты с сервера, на который идут селекты пачками по 5к строк (3-4 в секунду) - X + 20% queries per second

    *на который идут инсерты
  • @renatko #3043 08:58 PM, 07 Dec 2016
    тот же самый бенчмарк на выделенном сервере дает ожидаемый результат - производительность селектов при инсертах падает
  • 08 December 2016 (149 messages)
  • @filonov_ae #3044 07:56 AM, 08 Dec 2016
    Там есть задержка во времени между сбросом данных на диск и последующей их компрессией - возможно в этом все дело. Если лить гигабайты и следить за объемом базы - это очень хорошо заметно.
  • @64934315 #3045 12:02 PM, 08 Dec 2016
    Joined.
  • https://t.me/clickhouse_ru
    @rattrog #3046 12:11 PM, 08 Dec 2016
    Joined.
  • https://t.me/clickhouse_ru
    @Manatskov #3047 01:52 PM, 08 Dec 2016
    А скажите, есть ли в CH возможность делать массивы, например, Array(String) внутри Nested-структур?
  • @iamigor #3048 01:58 PM, 08 Dec 2016
    :) CREATE TABLE arrstr (arrays Nested(s1 Array(String), s2 Array(FixedString(8)))) ENGINE = Memory;

    Ok. 0 rows in set. Elapsed: 0.114 sec.

    :) INSERT INTO arrstr (arrays.s1, arrays.s2) VALUES ([['s1n11', 's1n12'], ['s1n21', 's1n22']], [['s2n11', 's2n12'], [
    's2n21', 's2n22']]);

    Ok. 0 rows in set. Elapsed: 0.007 sec.

    :) SELECT * FROM arrstr;

    ┌─arrays.s1─────────────────────────────┬─arrays.s2─────────────────────────────────────────────────────┐
    │ [['s1n11','s1n12'],['s1n21','s1n22']] │ [['s2n11\0\0\0','s2n12\0\0\0'],['s2n21\0\0\0','s2n22\0\0\0']] │
    └───────────────────────────────────────┴───────────────────────────────────────────────────────────────┘

    Ok. 1 row in set. Elapsed: 0.009 sec.
  • https://t.me/clickhouse_ru
    @orantius #3049 01:59 PM, 08 Dec 2016
    memory не всегда работает так же, как Log/Merge*
  • https://t.me/clickhouse_ru
    @Manatskov #3050 02:00 PM, 08 Dec 2016
    Кажется, что да. Но в моём лично кейсе вставка завершается успешно, и всё дальше хорошо, пока не пытаешься сделать select этого поля со вложенным массивом. Вот тогда сервер падает
  • https://t.me/clickhouse_ru
    @Manatskov #3051 02:00 PM, 08 Dec 2016
    Я использую CollapsingMergeTree
  • https://t.me/clickhouse_ru
    @Manatskov #3052 02:00 PM, 08 Dec 2016
    *сделать select этого поля
  • @iamigor #3053 02:00 PM, 08 Dec 2016
    и правда. на mergetree воспроизводится.
    прии селекте эксепшн
    Received exception from server:
    Cannot read all marks from file /local/clickhouse/data/default/arrstr/19700101_19700101_2_2_0/arrays.size1.mrk
  • https://t.me/clickhouse_ru
    @Manatskov #3054 02:01 PM, 08 Dec 2016
    ЮХУ!
  • https://t.me/clickhouse_ru
    @Manatskov #3055 02:01 PM, 08 Dec 2016
    Только у меня он просто подвисает, а потом падает, без таких трейсов
  • @iamigor #3056 02:02 PM, 08 Dec 2016
    а, я дурак, date забыл вставить
  • https://t.me/clickhouse_ru
    @Manatskov #3057 02:02 PM, 08 Dec 2016
    Короче, инсерт успешный, а селект из этого поля рушит сервер
  • @AndreyPanasyuk #3058 02:05 PM, 08 Dec 2016
    Joined.
  • @iamigor #3059 02:05 PM, 08 Dec 2016
    где-то в доке было написано, что вложенные массивы работают только в Memory
  • @iamigor #3060 02:05 PM, 08 Dec 2016
    может nested работает так же, как массив
  • https://t.me/clickhouse_ru
    @Manatskov #3061 02:12 PM, 08 Dec 2016
    А у вас воспроизводится на не-in-memory таблице?
  • @iamigor #3062 02:14 PM, 08 Dec 2016
    у меня только эксепшн выше вопроизводится
  • @iamigor #3063 03:33 PM, 08 Dec 2016
    а можно как-нибудь bar'у скормить максимальное значение через агрегатную функцию max() хотя бы через подзапрос?

    SELECT date, type, count() cnt, bar(cnt, 0, max(cnt), 50) FROM event GROUP BY date, type;

    думал как-то через массивы сделать, но туплю что-то

    а, нет, похоже нельзя, раз оно константное должно быть :(
  • @et_ya #3064 05:30 PM, 08 Dec 2016
    никто еще не делал сравнения с эластиком случайно? интересно скорость и объемы сравнить
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #3064 #3065 05:33 PM, 08 Dec 2016
    Ниши кликхауса и эластика практически не пересекаются. Это как сравнивать яблоко и чай
  • @et_ya #3066 05:33 PM, 08 Dec 2016
    мы делаем аналитику по кликам на еластике щас
  • @et_ya #3067 05:33 PM, 08 Dec 2016
    вполне себе очень хорошо
  • @et_ya #3068 05:34 PM, 08 Dec 2016
    объемы ~ярд за месяц
  • @roman_kolchin #3069 05:39 PM, 08 Dec 2016
    Разработчикам КХ на заметку — пора уже использовать в качестве основной характеристики их продукта "цену запроса", имеется в виду цену в $$$ :) Потому что про "scales to petabytes" и про "queries in milliseconds" пишет разработчик любой современной базы и поискового движка. Поэтому выбирать наверное уже нужно не просто по производительности, а по цене которой эта производительность достигается.
  • @roman_kolchin #3070 05:41 PM, 08 Dec 2016
    Кстати, из чистого любопытства — этого зверька кто-нибудь пробовал https://eventql.io/?
    EventQL - The database for large-scale event analytics

    EventQL is a distributed, column-oriented database built for large-scale data collection and analytics. It runs super-fast SQL and MapReduce queries.

  • @roman_kolchin #3071 05:42 PM, 08 Dec 2016
    Скрин из их рекламки
  • @roman_kolchin #3072 05:51 PM, 08 Dec 2016
    Иллюзий про его надежность особых нет (см скрин), но мб кто интересовался продуктом.
  • https://t.me/clickhouse_ru
    @Civiloid #3073 05:52 PM, 08 Dec 2016
    @roman_kolchin я думаю посмотреть на него если кликхаус под графит будет слишком сложен.
  • https://t.me/clickhouse_ru
    @Civiloid #3074 05:52 PM, 08 Dec 2016
    но под графит
  • https://t.me/clickhouse_ru
    @Civiloid #3075 05:52 PM, 08 Dec 2016
    меня смущает в первую очередь что у них нет биндингов для бинарного протокола под какие либо языки
  • https://t.me/clickhouse_ru
    @Civiloid #3076 05:52 PM, 08 Dec 2016
    только описалово
  • https://t.me/clickhouse_ru
    @Civiloid #3077 05:53 PM, 08 Dec 2016
    и протокол сложнее чем у кликхауса
  • @roman_kolchin #3078 05:53 PM, 08 Dec 2016
    Интересно на ком ребята его обкатывали или обкатывают.
  • https://t.me/clickhouse_ru
    @Manatskov #3079 05:53 PM, 08 Dec 2016
    А насколько надежен сам КХ и стабилен по сравнению с тем же эвент кью эль?
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #3079 #3080 05:53 PM, 08 Dec 2016
    ну кликхаус в продакшене в метрике яндексовой с 2013 года что ли
  • https://t.me/clickhouse_ru
    @Civiloid #3081 05:54 PM, 08 Dec 2016
    то есть тот сабсет что используется в метрике очень стабилен должен быть
  • О! А это вторая киллер фича, которую нужно максимальным кеглем прибить на лендинг — со слов Виктора Тарнавского, КХ у них уже несколько лет в аптайме с каким-то диким кол-вом девяток.
  • @lexa_work #3083 05:54 PM, 08 Dec 2016
    а если вернуться к CH и TSDB. Кто какую схему бы можно было замутить в CH для того, чтоб хранить там метрики в стиле http://metrics20.org/?
  • @yamlcoder ↶ Reply to #3073 #3084 05:55 PM, 08 Dec 2016
    у вас настолько большой графит?
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #3084 #3085 05:55 PM, 08 Dec 2016
    2 с лишним миллиона метрик в секунду и 130ТБ виспер файликов без учета отказоустойчивости
  • @lexa_work #3086 05:56 PM, 08 Dec 2016
    что-то вроде Nested в Array обернуть? Как хорошо в этом случае будет фильтрация и поиск осуществляться?
  • https://t.me/clickhouse_ru
    @nikitosiusis #3087 05:56 PM, 08 Dec 2016
    а вы их умышленно в секунды перевели или вы правда их раз в секунду шлете?
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #3087 #3088 05:56 PM, 08 Dec 2016
    это усредненно конечно
  • https://t.me/clickhouse_ru
    @Civiloid #3089 05:56 PM, 08 Dec 2016
    потому что я не представляю как посчитать отдельно по каждому ретеншену
  • @yamlcoder ↶ Reply to #3085 #3090 05:57 PM, 08 Dec 2016
    у вас очень большой графит :)
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #3090 #3091 05:57 PM, 08 Dec 2016
    возможно у кого-то есть больше, но они не признаются (есть подозрение что такого же масштаба в mail.ru и у гитхаба)
  • @yamlcoder #3092 05:58 PM, 08 Dec 2016
    мы пишем 2 миллиона в _минуту_ на ноду, но оно в page cache сыплется, так что это мухлеж
  • @lexa_work #3093 05:58 PM, 08 Dec 2016
    а в виспере с какой детализацией храниться? секунда?
  • @lexa_work #3094 05:58 PM, 08 Dec 2016
    и на каком кластере у вас такое крутится?
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #3093 #3095 05:59 PM, 08 Dec 2016
    разной. Есть посекундные, по 10сек, по 60сек, по 5 минут, по 10, по часу, по дню
  • @yamlcoder #3096 05:59 PM, 08 Dec 2016
    если виспер подкрутить чтобы оно не читал хидер перед каджой записью - вообще хорошо жить можно
  • @yamlcoder #3097 05:59 PM, 08 Dec 2016
    но не на 2М в секунду :)
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #3094 #3098 06:00 PM, 08 Dec 2016
    м... ну мы написали маленькую софтинку на Го которая файлики читает и отает по протобуфу, еще одну софтинку на Го, которая спрашивает сервера и склеивает метрики со всех серверов в один ответ и еще на Го есть переписанный graphite-api
  • @yamlcoder #3099 06:00 PM, 08 Dec 2016
    а сколько метрик примерно?
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #3099 #3100 06:00 PM, 08 Dec 2016
    когда последний раз считал 56млн уникальных названий
  • @lexa_work #3101 06:00 PM, 08 Dec 2016
    солидно
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #3097 #3102 06:00 PM, 08 Dec 2016
    секрет в том что это примерно 45 серверов без учета репликаций
  • https://t.me/clickhouse_ru
    @Civiloid #3103 06:01 PM, 08 Dec 2016
    и под 200 с учетом (4х кратная)
  • @lexa_work #3104 06:01 PM, 08 Dec 2016
    ух...
  • https://t.me/clickhouse_ru
    @Civiloid #3105 06:01 PM, 08 Dec 2016
    соответственно на бэкэнд сумарно выходит 8 с лишним млн уже
  • @lexa_work #3106 06:01 PM, 08 Dec 2016
    чтож такое вы там мониторите...
  • https://t.me/clickhouse_ru
    @Civiloid #3107 06:01 PM, 08 Dec 2016
    а фишка в том что в тесте кликхаус 2.4млн в секунду на 1 сервер может переварить и упирается в сеть
  • @yamlcoder ↶ Reply to #3105 #3108 06:01 PM, 08 Dec 2016
    на одну графит ноду 8 миллионов?
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #3108 #3109 06:01 PM, 08 Dec 2016
    нет конечно, на одну ноду больше 150 тысяч в секунду не бывает
  • https://t.me/clickhouse_ru
  • @lexa_work #3111 06:02 PM, 08 Dec 2016
    а вот это все как аркиструется при горизонтальном масштабировании?
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #3111 #3112 06:02 PM, 08 Dec 2016
    через задницу
  • @lexa_work #3113 06:02 PM, 08 Dec 2016
    крутая у вас задница
  • @lexa_work #3114 06:02 PM, 08 Dec 2016
    видать железобетонная
  • https://t.me/clickhouse_ru
    @Civiloid #3115 06:02 PM, 08 Dec 2016
    до недавнего времени - берем машин больше чем нужно и переносим данные скриптом на баше )
  • https://t.me/clickhouse_ru
    @Civiloid #3116 06:02 PM, 08 Dec 2016
    через неделю выключаем старый кластер
  • https://t.me/clickhouse_ru
  • @lexa_work #3118 06:03 PM, 08 Dec 2016
    в общем я под впечатлением...
  • https://t.me/clickhouse_ru
    @Civiloid #3119 06:03 PM, 08 Dec 2016
    сейчас через bucky tools переносятся только новые метрики на новые сервера
  • https://t.me/clickhouse_ru
    @Civiloid #3120 06:03 PM, 08 Dec 2016
    склеивание ответов - carbonzipper наш (см презенташку вверху)
  • https://t.me/clickhouse_ru
    @Civiloid #3121 06:03 PM, 08 Dec 2016
    просто оно по пределу масштабирования наверное в 3-4 раза вырасти еще может
  • https://t.me/clickhouse_ru
    @Civiloid #3122 06:03 PM, 08 Dec 2016
    потом сдохнет
  • @yamlcoder ↶ Reply to #3109 #3123 06:03 PM, 08 Dec 2016
    почему? размер блока в фс сделать 512 байт, взвинтить vm.dirty_expire_centisecs на значения в десятки минут и вуаля - по 1кб памяти на метрику расходуется
  • https://t.me/clickhouse_ru
    @Civiloid #3124 06:03 PM, 08 Dec 2016
    а кликхаус может на 1 сервер все метрики вписать
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #3123 #3125 06:04 PM, 08 Dec 2016
    потому что у нас до начала этого месяца не работал cache из карбон кэша
  • https://t.me/clickhouse_ru
    @Civiloid #3126 06:04 PM, 08 Dec 2016
    то есть мы читали то что успело записаться на диск
  • https://t.me/clickhouse_ru
    @Civiloid #3127 06:04 PM, 08 Dec 2016
    диски хоть и ссд но ограничены чем-то в районе 50к иопсов на запись
  • https://t.me/clickhouse_ru
    @Civiloid #3128 06:04 PM, 08 Dec 2016
    даже если потюнить кэши и пр., все равно не очень весело
  • @yamlcoder #3129 06:04 PM, 08 Dec 2016
    читать из пейджкэша тоже ж можно
  • https://t.me/clickhouse_ru
    @Civiloid #3130 06:05 PM, 08 Dec 2016
    можно, но сложнее
  • https://t.me/clickhouse_ru
    @Civiloid #3131 06:05 PM, 08 Dec 2016
    тюнить много
  • https://t.me/clickhouse_ru
    @Civiloid #3132 06:05 PM, 08 Dec 2016
    если сервер упал - больше восстанавливать
  • @yamlcoder #3133 06:05 PM, 08 Dec 2016
    go-carbon вот прям сейчас на убогий raid5 пишут 2М/минуту на ноду с тюнингом описаным выше и нагрузки ноль, одно ядро занято чуток
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #3133 #3134 06:06 PM, 08 Dec 2016
    у нас го-карбон только в этом месяца заменил carbon-cache :)
  • https://t.me/clickhouse_ru
    @Civiloid #3135 06:07 PM, 08 Dec 2016
    @rossmohax там проблема в том что примерно с 2013 по 2015 год никто графитом не занимался на фултайме, периодически бывали хакатоны и народ что-то подкручивал
  • https://t.me/clickhouse_ru
    @Civiloid #3136 06:07 PM, 08 Dec 2016
    в 2015 году один человек на фултайме его попиливал
  • https://t.me/clickhouse_ru
    @Civiloid #3137 06:07 PM, 08 Dec 2016
    и другой периодически советами помогал
  • https://t.me/clickhouse_ru
    @Civiloid #3138 06:07 PM, 08 Dec 2016
    а с 2016 стала полноценная команда, но изначальный автор половины кода ушел заниматься другим
  • @yamlcoder #3139 06:07 PM, 08 Dec 2016
    ну заводить КХ под это дело радикальный вариант :)
  • https://t.me/clickhouse_ru
    @Civiloid #3140 06:07 PM, 08 Dec 2016
    так что оно только сейчас начало развиваться систематически, а не стихийно
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #3139 #3141 06:08 PM, 08 Dec 2016
    это как шаг на будущее. Сейчас подчистили текущий технический долг
  • @yamlcoder #3142 06:08 PM, 08 Dec 2016
    но интересный, опишите потом опыт :)
  • https://t.me/clickhouse_ru
    @Civiloid #3143 06:08 PM, 08 Dec 2016
    и можно посмотреть чем бы компактнее хранить данные, веселее делать аналитику и т.п.
  • https://t.me/clickhouse_ru
    @Civiloid #3144 06:08 PM, 08 Dec 2016
    тем более вот тут @rlomonosov запилил клевые прокси из графита в кликхаус и из кликхауса в графит
  • https://t.me/clickhouse_ru
    @Civiloid #3145 06:09 PM, 08 Dec 2016
    одну софтину которая совместима с нашим стэком и умеет спрашивать кликхаус и другую софтину которая line protocol принимает и пишет и делает это быстро
  • @lexa_work #3146 06:09 PM, 08 Dec 2016
    но предупреждали, что там не все так радужно
  • @yamlcoder #3147 06:09 PM, 08 Dec 2016
    поидее если писать в память, то не вижу почему оно не может выжимать миллионы в секунду, все упрется в page cache
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #3146 #3148 06:09 PM, 08 Dec 2016
    везде свои проблемы, вопрос в том какие и как жить
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #3147 #3149 06:10 PM, 08 Dec 2016
    память конечная, сам виспер не очень оптимальный
  • https://t.me/clickhouse_ru
    @Civiloid #3150 06:10 PM, 08 Dec 2016
    надежность падает пропорционально
  • https://t.me/clickhouse_ru
    @Civiloid #3151 06:10 PM, 08 Dec 2016
    carbon-cache умрет быстро
  • https://t.me/clickhouse_ru
    @Civiloid #3152 06:10 PM, 08 Dec 2016
    go-carbon умрет позже, но тоже умрет в какой-то момент
  • @lexa_work #3153 06:10 PM, 08 Dec 2016
    если честно, мне подход к организации метрик в стиле graphite после openTSDB и Ko, как-то не очень приживается
  • @yamlcoder #3154 06:10 PM, 08 Dec 2016
    нее, я про go-carbon конечно. нет не умрет, у него в памяти ничего висеть не будет
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #3153 #3155 06:10 PM, 08 Dec 2016
    на OpenTSDB столкьо писать сложно
  • @lexa_work #3156 06:11 PM, 08 Dec 2016
    я вот думаю, что более прогрессивно было бы попробовать на CH что-то более нативное сделать
  • @lexa_work #3157 06:11 PM, 08 Dec 2016
    я не про сам openTSDB
  • @yamlcoder #3158 06:11 PM, 08 Dec 2016
    расход памятьи- 1кб/метрику независимо от количества обновлений
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #3157 #3159 06:11 PM, 08 Dec 2016
    у нас поверх графита есть поиск по тэгам :)
  • https://t.me/clickhouse_ru
    @Civiloid #3160 06:11 PM, 08 Dec 2016
    синтаксис только через задницу
  • @lexa_work #3161 06:11 PM, 08 Dec 2016
    а про то, как логически определены метрики
  • @lexa_work #3162 06:11 PM, 08 Dec 2016
    ну вот...
  • https://t.me/clickhouse_ru
    @Civiloid #3163 06:11 PM, 08 Dec 2016
    virt.v1.*.dc:dc1.role:graphiteFrontend.text-match:http_2xx
  • https://t.me/clickhouse_ru
    @Civiloid #3164 06:12 PM, 08 Dec 2016
    что-нибудь в таком духе пишешь и получаешь все 200-ки от nginx'а с роли и дц
  • @lexa_work #3165 06:12 PM, 08 Dec 2016
    плохо, что тут надо структуру жестко определять и документировать
  • @lexa_work #3166 06:12 PM, 08 Dec 2016
    иначе бошку сломаешь догадываться что же хотели сказать этой метрикой
  • @lexa_work #3167 06:12 PM, 08 Dec 2016
    или я пока не привык еще...
  • https://t.me/clickhouse_ru
    @Civiloid #3168 06:12 PM, 08 Dec 2016
    @lexa_work если я не ошибаюсь, у go-carbon'а парсер протокола имеет предел масштабирования в где-то 0.5М в секунду
  • https://t.me/clickhouse_ru
    @Civiloid #3169 06:13 PM, 08 Dec 2016
    то есть его надо брать и оптимизировать под такое
  • https://t.me/clickhouse_ru
    @rlomonosov #3170 06:14 PM, 08 Dec 2016
    ну я его там в бранче раскочегаривал до 1.4m/s
  • https://t.me/clickhouse_ru
    @Civiloid #3171 06:14 PM, 08 Dec 2016
    собственно автор парсер переписал и он стал уметь сильно больше )
  • https://t.me/clickhouse_ru
    @rlomonosov #3172 06:15 PM, 08 Dec 2016
    тока смысла в этом мало - все равно go-carbon упирается в виспер
  • https://t.me/clickhouse_ru
    @Civiloid #3173 06:15 PM, 08 Dec 2016
    и вообще натягивать кластеризацию на виспер это боль
  • https://t.me/clickhouse_ru
    @Civiloid #3174 06:16 PM, 08 Dec 2016
    оно работает на костылях и костылями погоняет
  • https://t.me/clickhouse_ru
    @rlomonosov #3175 06:18 PM, 08 Dec 2016
    > @rossmohax
    поидее если писать в память

    В какую память? текущие версии штук под КХ не держат в памяти вообще ничего
  • @yamlcoder ↶ Reply to #3175 #3176 06:20 PM, 08 Dec 2016
    в page cache, оно почти бесплатно получается
  • https://t.me/clickhouse_ru
    @rlomonosov #3177 06:22 PM, 08 Dec 2016
    там даже без кеша все ок - последовательная запись в файлик
  • @yamlcoder #3178 06:25 PM, 08 Dec 2016
    я КХ не смотрел, но если запись последовательная, значит чтение рандомное :) хотя учитывая что пишут сильно больше чем читают, то может оно и к лучшему
  • https://t.me/clickhouse_ru
    @rlomonosov #3179 06:28 PM, 08 Dec 2016
    чтение близко к рандомному для совсем свежих данных. чем данные становятся старше, тем послевательнее становится их чтение
  • @yamlcoder #3180 06:28 PM, 08 Dec 2016
    оно как в leveldb их перепаковывает по ключу?
  • Создавать массивы в nested-структурах нельзя. То, что CH позволяет их создавать - бага. https://github.com/yandex/ClickHouse/issues/193 и https://github.com/yandex/ClickHouse/issues/234 (вероятно, что вторая ваша и есть)
    Segmentation fault in server while executing "select * from test" (array in nested struct) · Issue #193 · yandex/ClickHouse

    Can be reproduced in docker and in standalone installation. Steps to reproduce: > docker run -d --name some-clickhouse-server --ulimit nofile=262144:262144 yandex/clickhouse-server 7770685e3eb27027...

  • https://t.me/clickhouse_ru
    @rlomonosov #3182 06:36 PM, 08 Dec 2016
    грубо говоря оно оперирует сортированными списками и периодическти мерджит несколько мелких в более крупные
  • https://t.me/clickhouse_ru
    @ihard ↶ Reply to #3098 #3183 06:37 PM, 08 Dec 2016
    А в паблике нет вашего graphite-api на go?
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #3183 #3184 06:37 PM, 08 Dec 2016
    есть, но оно на остальной наш стек завязано )
  • https://t.me/clickhouse_ru
    @Civiloid #3185 06:37 PM, 08 Dec 2016
    go-graphite/carbonapi

    carbonapi - API server for github.com/go-graphite/carbonzipper

  • https://t.me/clickhouse_ru
    @Civiloid #3186 06:38 PM, 08 Dec 2016
    в принципе там основа в виде библиотеки, так что можно в теории прикрутить к чему угодно
  • https://t.me/clickhouse_ru
    @ihard #3187 06:39 PM, 08 Dec 2016
    Спасибо, попробуем
  • @milovidov_an #3188 06:41 PM, 08 Dec 2016
    Решили сделать митап для тех, кто участвует в разработке ClickHouse или открытых проектов, которые с ним работают: https://events.yandex.ru/events/meetings/14-dec-2016/
    ClickHouse Meetup, 14 декабря 2016, Москва — События Яндекса

    События — вся информация о конференциях, школах, семинарах и других мероприятиях Яндекса — как прошедших, так и предстоящих.

  • https://t.me/clickhouse_ru
    @zulgabis #3189 06:42 PM, 08 Dec 2016
    Joined.
  • https://t.me/clickhouse_ru
    @lain0 #3190 07:31 PM, 08 Dec 2016
    Joined.
  • @oRx0r #3191 09:43 PM, 08 Dec 2016
    Joined.
  • @roman_kolchin #3192 11:56 PM, 08 Dec 2016
    Небольшой оффтопик не про КХ, но про историю инструментов BI -- научная статья, описывающая подход к анализу данных и прототип софтины, на базе который была разработана Tableau: http://graphics.stanford.edu/papers/polaris/polaris.pdf
  • 09 December 2016 (32 messages)
  • @xboston #3193 12:08 AM, 09 Dec 2016
    Joined.
  • @shinebell ↶ Reply to #3192 #3194 02:25 AM, 09 Dec 2016
    👍
  • @renatko #3195 08:54 AM, 09 Dec 2016
    А где-то публикуется changelog между версиями?
  • @iamigor #3196 08:55 AM, 09 Dec 2016
    вроде нет, список коммитов на гитхабе разве что
  • https://t.me/clickhouse_ru
  • @dr_gavrikov #3198 03:05 PM, 09 Dec 2016
    а как-нибудь можно поставить Кликхаус на Убунту 16.04
    при выполнении sudo apt-get install clickhouse-server-base
    у меня ошибка

    clickhouse-server-base : Depends: libc6 (< 2.20) but 2.23-0ubuntu5 is to be installed
    E: Unable to correct problems, you have held broken packages.
  • @dr_gavrikov #3199 03:05 PM, 09 Dec 2016
    ?
  • @dr_gavrikov #3200 03:05 PM, 09 Dec 2016
    libc6 не заменишь же
  • @filonov_ae #3201 03:06 PM, 09 Dec 2016
    собери пакет под 16.04 и будет тебе счастье
  • https://t.me/clickhouse_ru
    @nikitosiusis #3202 03:06 PM, 09 Dec 2016
    можешь поправить зависимость и рассказать нам что сломалось потом
  • @dr_gavrikov #3203 03:53 PM, 09 Dec 2016
    оказывается, в этом гайде https://clickhouse.yandex/#download надо было вместо

    deb http://repo.yandex.ru/clickhouse/trusty

    прописать deb http://repo.yandex.ru/clickhouse/xenial
    ClickHouse DBMS

    ClickHouse is a fast open-source column-oriented database management system that allows generating analytical data reports in real-time using SQL queries

  • @dr_gavrikov #3204 03:53 PM, 09 Dec 2016
    и все станет хорошо
  • @dr_gavrikov #3205 03:53 PM, 09 Dec 2016
    точнее встанет хорошо
  • @nordicdyno #3207 04:15 PM, 09 Dec 2016
    Joined.
  • @nordicdyno #3208 04:16 PM, 09 Dec 2016
    а можно в CH как-то разбить значения поля по диапазонам (размеры файлов) и затем посчитать для них статистику(это понятно что можно)? или разбивать надо руками?
  • @f1yegor #3209 04:18 PM, 09 Dec 2016
    а default expressions поддерживаются при импорте из json?
  • @f1yegor #3210 04:18 PM, 09 Dec 2016
    CREATE TABLE default.test ( id String, ts UInt64, date Date DEFAULT toDate(CAST((ts / 1000) AS UInt64))) ENGINE = MergeTree(date, (date, id), 8192);
  • @f1yegor #3211 04:18 PM, 09 Dec 2016
    insert into test (id, ts) values ('1', 1472604916259)
  • @f1yegor #3212 04:19 PM, 09 Dec 2016
    SELECT *
    FROM test

    ┌─id─┬────────────ts─┬───────date─┐
    │ 1 │ 1472604916259 │ 2016-08-31 │
    └────┴───────────────┴────────────┘
  • @nordicdyno #3213 04:20 PM, 09 Dec 2016
    как-то странно что этот чат у меня обновляется только в мобильном telegram-клиенте
  • @iamigor ↶ Reply to #3209 #3214 04:26 PM, 09 Dec 2016
    неа

    > JSONEachRow
    > При этом, в качестве значений по умолчанию используются нули, пустые строки и не поддерживаются сложные значения по умолчанию, которые могут быть заданы в таблице.
  • https://t.me/clickhouse_ru
    @orantius ↶ Reply to #3208 #3215 04:43 PM, 09 Dec 2016
    эквивалент width_bucket изображается легко, произвольную сетку через multiIf тоже можно сделать, хоть и длинновато получится. встроенных функций по-моему нет, для обоих случаев.
  • @iamigor #3216 04:45 PM, 09 Dec 2016
    я недавно нашел встроенную, которая человекопонятные размеры в байтах делает ))
  • @iamigor #3217 04:45 PM, 09 Dec 2016
    че-нибудь типа такого

    SELECT extract(formatReadableSize(size), '[a-zA-Z]+') AS size_, count() AS c, sum(size) AS s FROM files GROUP BY size_ ORDER BY size_;
  • @iamigor #3218 04:48 PM, 09 Dec 2016
    или через CASE/multiIf, да

    SELECT CASE
    WHEN size BETWEEN 0 AND 1024 THEN '0-1 KB'
    WHEN size BETWEEN 1024+1 AND 1024*10 THEN '1-10 KB'
    WHEN size BETWEEN 1024*10+1 AND 1024*100 THEN '10-100 KB'
    WHEN size BETWEEN 1024*100+1 AND 1024*200 THEN '100-200 KB'
    ELSE 'too large'
    END AS size_,
    count(),
    sum(size)
    FROM files
    GROUP BY size_
  • @Rommaniel ↶ Reply to #2519 #3219 04:50 PM, 09 Dec 2016
    count(case when f1=1 then 1 end)
  • https://t.me/clickhouse_ru
    @orantius #3220 04:52 PM, 09 Dec 2016
    выглядит как sum(f1)
  • @atokarchuk #3221 05:49 PM, 09 Dec 2016
    Вопрос к тем, кто использует кликхаус в докере, как вы решаете проблему с логами? По дефолту сервер в контейнере запускается без --daemon, которая переключает stdout на логфайлы из конфига, получается достать логи можно только через docker logs, и как организовать их ротацию и хранение непонятно. А если добавить --daemon в строчку запуска сервера, то контейнер не взлетает без каких-либо сообщений.
  • https://t.me/clickhouse_ru
    @aensidhe #3222 06:03 PM, 09 Dec 2016
    Arthur через docker log driver
  • @atokarchuk #3223 06:04 PM, 09 Dec 2016
    Спасибо, изучу вопрос)
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @Maxim_Lepikhov #3225 07:40 PM, 09 Dec 2016
    Joined.
  • 11 December 2016 (24 messages)
  • @ilyaZhitkov #3226 04:02 PM, 11 Dec 2016
    Joined.
  • @garikanet #3227 08:51 PM, 11 Dec 2016
    Благодаря сообществу, guiclickhouse.smi2.ru стал поддерживать английский язык, спасибо a5i за pull request )
  • https://t.me/clickhouse_ru
    @luc1ph3r #3228 08:52 PM, 11 Dec 2016
    Очепятка
  • @garikanet #3229 09:03 PM, 11 Dec 2016
    thx, поправил )
  • https://t.me/clickhouse_ru
    @demeliorator #3230 09:08 PM, 11 Dec 2016
    Привет
  • https://t.me/clickhouse_ru
    @luc1ph3r #3231 09:08 PM, 11 Dec 2016
    👌🏻
  • https://t.me/clickhouse_ru
    @demeliorator #3232 09:08 PM, 11 Dec 2016
    А уже есть слой совместимости кликхауса с графаной?
  • https://t.me/clickhouse_ru
    @demeliorator #3233 09:09 PM, 11 Dec 2016
    Насколько я понимаю - агрегация в бэкграунде есть
  • @iamigor #3234 09:10 PM, 11 Dec 2016
    GitHub - lomik/graphite-clickhouse: Graphite cluster backend with ClickHouse support

    Graphite cluster backend with ClickHouse support. Contribute to lomik/graphite-clickhouse development by creating an account on GitHub.

  • @iamigor #3235 09:10 PM, 11 Dec 2016
    grafana?
  • @iamigor #3236 09:10 PM, 11 Dec 2016
    не графит
  • @iamigor #3237 09:10 PM, 11 Dec 2016
    Через слой совместимости с графитом
  • @iamigor #3238 09:10 PM, 11 Dec 2016
    а на прямую графану с кх никто не связывал?
  • @iamigor #3239 09:10 PM, 11 Dec 2016
    Нужно плагин писать под графану
  • https://t.me/clickhouse_ru
    @demeliorator #3240 09:10 PM, 11 Dec 2016
    Угу, все ясно, спасибо
  • https://t.me/clickhouse_ru
    @demeliorator #3241 09:11 PM, 11 Dec 2016
    Без гоулэнга не обошлось :(
  • https://t.me/clickhouse_ru
    @pipopolam #3242 09:25 PM, 11 Dec 2016
    а ты его внезапно разлюбил?
  • https://t.me/clickhouse_ru
    @demeliorator #3243 09:25 PM, 11 Dec 2016
    Угу
  • https://t.me/clickhouse_ru
    @demeliorator #3244 09:25 PM, 11 Dec 2016
    Не то чтобы совсем внезапно, но да
  • https://t.me/clickhouse_ru
    @pipopolam #3245 09:25 PM, 11 Dec 2016
    чего так?
  • https://t.me/clickhouse_ru
    @demeliorator #3246 09:25 PM, 11 Dec 2016
    Я на нем довольно долго писал за деньги
  • https://t.me/clickhouse_ru
    @s5ucxb2N5mWztVwEpbJp #3247 09:40 PM, 11 Dec 2016
    so, what is clickhouse bad at, in which cases it's is definitely a very bad choice?
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #3241 #3248 10:18 PM, 11 Dec 2016
    Да там весь код простой довольно
  • @f1yegor #3249 10:39 PM, 11 Dec 2016
    Можно таски которые METR-* in github писать немного более развернутое описание?
  • 12 December 2016 (15 messages)
  • 1. OLTP workload.
    2. key-value workload: high amount of very simple queries.
    3. Using as document/BLOB store for unstructured data.
  • @milovidov_an #3251 09:04 AM, 12 Dec 2016
    Митап по ClickHouse уже послезавтра.
    На этот раз будем говорить про перспективы развития продукта.
    Записывайтесь, если вы уже контрибъютор или если вы хотите им стать.
    https://events.yandex.ru/events/meetings/14-dec-2016/
    ClickHouse Meetup, 14 декабря 2016, Москва — События Яндекса

    События — вся информация о конференциях, школах, семинарах и других мероприятиях Яндекса — как прошедших, так и предстоящих.

  • https://t.me/clickhouse_ru
    @asigatchov #3252 11:19 AM, 12 Dec 2016
    Видео будет с митапа?
  • @iamigor #3253 11:36 AM, 12 Dec 2016
    а это ок, что ipv6/uuid функций нет в injective_function_names?
    вообще, что обозначает injective?
    значение конвертируется еще на клиенте и сервер не тратит CPU на перекодирование?
  • https://t.me/clickhouse_ru
    @orantius #3254 11:47 AM, 12 Dec 2016
    injective означает, что функция сохраняет отличия, т.е. x!=y => f(x)!=f(y). используется для оптимзации запросов, например select f(x)... group by f(x) => select fx) ... group by x
  • @105110079 #3255 11:50 AM, 12 Dec 2016
    Hello, clickhouse join is a hash join or sort merge join? And why so?
  • @nordicdyno ↶ Reply to #3218 #3256 11:51 AM, 12 Dec 2016
    спасибо, большое. сделал ту выборку, что хотел :)
  • @iamigor ↶ Reply to #3254 #3257 11:53 AM, 12 Dec 2016
    аа, спасибо!
  • @iamigor #3258 12:21 PM, 12 Dec 2016
    а можно еще глупый вопрос по поводу работы с partition'ами?
    понадобилось исправить данные в таблице mergetree за декабрь.
    я могу сделать так, без DROP или ATTACH'а?
    ALTER TABLE corrupted_table DETACH PARTITION 201612;
    INSERT INTO corrupted_table SELECT * FROM correct_table;
    (в correct_table данные только за декабрь, конечно)
  • https://t.me/clickhouse_ru
    @the_real_jkee #3259 01:00 PM, 12 Dec 2016
    Вроде да
  • Наверное забыли добавить. Значит можно улучшить.
  • @iamigor #3261 02:55 PM, 12 Dec 2016
    ой, как раз хотел предложить синонимы для функций и типов данных )
  • @milovidov_an #3262 02:56 PM, 12 Dec 2016
    Для агрегатных функций, кстати, уже сделали.
  • Ещё вспомнил, что функции преобразования UUID, а также hex/unhex (но только для строк) являются монотонными. Это используется для анализа индекса. Если x в первичном ключе и функция f монотонна на каком-то диапазоне, то индекс может работать, даже если написать условие на f(x). См. IFunction::getMonotonicityForRange и примеры в коде... Вот простейший пример, как обозначить, что функция везде монотонна:

    Monotonicity getMonotonicityForRange(const IDataType & type, const Field & left, const Field & right) const override
    {
    return { true };
    }
  • It is hash join. Right part of join should be less than memory. Hash join is faster but require enough memory.
  • 13 December 2016 (46 messages)
  • @105110079 ↶ Reply to #3264 #3265 01:35 AM, 13 Dec 2016
    Thanks
  • https://t.me/clickhouse_ru
    @Sablast #3266 07:17 AM, 13 Dec 2016
    как можно полечить ошибку:
    "Exception on client:
    Code: 209. DB::NetException: Timeout: connect timed out: "?
    выдает ее даже по: SHOW TABLES
  • @iamigor #3267 07:25 AM, 13 Dec 2016
    аээ.. а сервер точно работает?
  • @iamigor #3268 07:25 AM, 13 Dec 2016
    если telnet my_server 9000 сделать - подключится? а по 8123?
  • https://t.me/clickhouse_ru
    @Civiloid #3269 07:26 AM, 13 Dec 2016
    я б начал с последних сообщений в логах сервера (с log level'ом trace)
  • @iamigor ↶ Reply to #3262 #3270 07:29 AM, 13 Dec 2016
    кстати, для форматов тоже алиасы было бы удобно :-[
    "TSV" вместо "TabSeparated", например
  • https://t.me/clickhouse_ru
    @Sablast #3271 07:34 AM, 13 Dec 2016
    ну как минимум происходит вот так:
    clickhouse-client —host=my_server
    ClickHouse client version 1.1.54046.
    Connecting to my_server:9000.
    Connected to ClickHouse server version 1.1.54080.

    :)
  • @iamigor #3272 07:35 AM, 13 Dec 2016
    тогда да, тогда логи.
    может он до реплик/шардов достучаться не может?
  • https://t.me/clickhouse_ru
    @Sablast #3273 07:37 AM, 13 Dec 2016
    да у нас только 1 сервер пока)
  • @nordicdyno #3274 11:05 AM, 13 Dec 2016
    Пробовал собрать clickhouse на OSX по инструкции. Наткнулся на то что на стадии cmake требуется libiconv.a, пофиксил это (пока только у себя). Но оно всё равно сломалось при сборке на iconv. Ковыряю дальше. Сейчас если не соберется, скину ошибку, ок?
  • @nordicdyno #3275 11:06 AM, 13 Dec 2016
    (libiconv.a не собирается в рекомендованной brew кеге, так что пришлось её пропатчить)
  • @iamigor #3276 11:19 AM, 13 Dec 2016
    я тоже ковырял несколько дней
  • @iamigor #3277 11:19 AM, 13 Dec 2016
    победить не получилось
  • @iamigor #3278 11:19 AM, 13 Dec 2016
    только если с USE_STATIC_LIBRARIES=0
  • @iamigor #3279 11:19 AM, 13 Dec 2016
    Build fails on OS X 10.11.5 (commit 64380109) · Issue #232 · yandex/ClickHouse

    I followed the latest build_osx.md guide. ❯ brew list --versions | egrep '(cmake|gcc|boost|icu4c|mysql|openssl|unixodbc|glib|libtool|gettext|libiconv|zlib|readline)' | sort boost 1.62.0 cmake 3.7.1...

  • @iamigor #3280 11:20 AM, 13 Dec 2016
    TLDR:

    USE_STATIC_LIBRARIES=0 cmake ..
    make -j $THREADS

    и будет счастье. главное потом ничего из зависимостей в homebrew не удалять и не обновлять %))
  • @iamigor #3281 11:20 AM, 13 Dec 2016
    а, и, возможно, я libiconv с --enable-static собирал при этом. уже не помню :(
  • @iamigor #3282 11:24 AM, 13 Dec 2016
    если чо, стабильная версия 1.1.54074 у меня в макоси вообще без проблем скомпилилась

    есть скомпиленные бинарники для нескольких версий:

    https://github.com/excitoon/ClickHouse/releases/download/1.1.54059/clickhouse-client-1.1.54059.tar.gz

    https://github.com/hatarist/homebrew-clickhouse/releases/download/1.1.54074/clickhouse-1.1.54074.tar.gz

    но если excitoon еще (вроде бы) сотрудник яндекса, то я уже нет :)
  • @nordicdyno #3284 11:32 AM, 13 Dec 2016
    ага, валится всё равно. я могу так-то и в докере запустить. спасибо за ссылки на сборки, хотя бы клиента возьму
  • @iamigor #3285 11:34 AM, 13 Dec 2016
    по второй ссылке если что универсальный бинарник, если сделать симлинк с именем clickhouse-client, то будет вести себя как клиент. или если clickhouse --client запустить
  • @nordicdyno #3286 11:42 AM, 13 Dec 2016
    так там еще и brew!
  • @nordicdyno #3287 11:51 AM, 13 Dec 2016
    поставил себе нативного клиента, спасибо
  • @iamigor #3289 12:12 PM, 13 Dec 2016
    range() как-то странно себя ведет иногда.
    я ему подаю аргументом toUInt32(max_value - min_value), а получаю ошибку
    > A call to function range would produce 413329556 array elements, which is greater than the allowed maximum of 100000000

    отследить, какое именно число заставляет его так себя вести, еще не получилось

    это можно как-нибудь исправить? (версия сервера 1.1.54083)
  • @iamigor #3290 12:13 PM, 13 Dec 2016
    при этом сделав SELECT max(max_value - min_value), получаю 16777215, оно должно в 24 бита помещаться
  • https://t.me/clickhouse_ru
    @orantius #3291 12:18 PM, 13 Dec 2016
    по-моему 100М в данном случае это максимальный разрешенный суммарный размер длин range() по всем строкам.
  • @iamigor #3292 12:21 PM, 13 Dec 2016
    аааа! да, похоже на правду
  • https://t.me/clickhouse_ru
    @165386325 #3293 12:25 PM, 13 Dec 2016
    из яндекса кто-то есть в эфире?
  • https://t.me/clickhouse_ru
    @orantius #3294 12:40 PM, 13 Dec 2016
    до некоторой степени.
  • https://t.me/clickhouse_ru
    @the_real_jkee #3295 01:05 PM, 13 Dec 2016
    Есть, да.
  • https://t.me/clickhouse_ru
    @abashkeev #3296 01:30 PM, 13 Dec 2016
    Тут есть сам Алексей :)
  • https://t.me/clickhouse_ru
    @165386325 #3297 01:43 PM, 13 Dec 2016
    У яндекса же есть какая - то поддержка стартапов? https://vc.ru/n/ya-local эти говорят, что есть. Или это ложь и промоакция?
    вопрос оффтоповый (и я прошу прощения за это), но ваш pr отдел видимо слишком сильно загружен. хз.
    «Яндекс» начал тестировать гиперлокальные приложения о районных событиях Москвы

    «Яндекс» запустил пилотный проект гиперлокальных приложений для жителей конкретных районов Москвы, пишет The Village. Первым экспериментальным сервисом стало приложение для iPhone «В Хамовниках». Аналогичный проект сейчас развивает правительство Москвы.

  • https://t.me/clickhouse_ru
    @nikitosiusis #3298 01:44 PM, 13 Dec 2016
    кто "эти"? в твоей статье ни слова об этом
  • https://t.me/clickhouse_ru
    @the_real_jkee #3299 01:47 PM, 13 Dec 2016
    Во-первых, действительно совсем не по теме
  • https://t.me/clickhouse_ru
    @the_real_jkee #3300 01:47 PM, 13 Dec 2016
    Во-вторых, в статье ничего нет про поддержку стартапов
  • https://t.me/clickhouse_ru
    @the_real_jkee #3301 01:48 PM, 13 Dec 2016
    Я ничего не знаю про поддержку стартапов Яндексом и ни разу такого не встречал, кроме Startup Camp
  • https://t.me/clickhouse_ru
    @nikitosiusis #3302 01:49 PM, 13 Dec 2016
    который закопали
  • @282576688 #3303 01:54 PM, 13 Dec 2016
    А кто-нибудь знает когда будет готов issue с решардингом? https://github.com/yandex/ClickHouse/issues/198
    Хотя б приблизительно)
    Resharding doesnt work · Issue #198 · yandex/ClickHouse

    Hi. I use clickhouse version: ii clickhouse-server-base 1.1.54022 amd64 clickhouse-server-base I want to use resharding, if i need to improve performance of my database by adding an other node in t...

  • Можешь добавить уже сейчас, см. FormatFactory.cpp.
    Только напиши в коментариях, что это синоним, чтобы потом никто не запутался.
  • Если клиент/сервер собирали сами, то может быть проблема с номером версии. Можно обновить клиент до последней версии и посмотреть, что всё будет Ок.
  • @iamigor ↶ Reply to #3304 #3306 05:29 PM, 13 Dec 2016
    супер, спасибо!
    "BlockTabSeparated" -> "BlockTSV" или "TSVBlock"?
    мне кажется, второе логичнее
  • @iamigor #3307 05:30 PM, 13 Dec 2016
    потому что уже есть TSVWithNames, TSVRaw и т.д.
  • Давай для Block - ничего не добавлять.
  • @milovidov_an #3309 06:24 PM, 13 Dec 2016
    Дело в том, что этот формат сделан давно в тестовых целях (проверить, как отличается коэффициент сжатия) и вообще всерьёз не используется.
  • @shinebell #3310 06:52 PM, 13 Dec 2016
    ребят, а у кого слайды под рукой есть с предыдущего митапа ? -) на роадмап хочется еще разок глянуть
  • https://t.me/clickhouse_ru
    @AndreevDm #3311 06:57 PM, 13 Dec 2016
    В настройках чата - Photos and Videos
  • 14 December 2016 (217 messages)
  • https://t.me/clickhouse_ru
    @winogradoff #3312 09:09 AM, 14 Dec 2016
    /stat@combot
  • https://t.me/clickhouse_ru
    @winogradoff #3313 09:11 AM, 14 Dec 2016
    =(
  • https://t.me/clickhouse_ru
    @winogradoff #3314 09:12 AM, 14 Dec 2016
    Добавьте @combot. Он статистику по сообщениям показывает)
  • @iamigor #3315 09:27 AM, 14 Dec 2016
    Подскажите пожалуйста насчет toStringCutToZero. в доке написано, что она "возвращает String, удаляя нулевые байты с конца строки."

    Но toStringCutToZero('\0test\0') возвращает в итоге пустую строку, удаляя, судя по всему, всё после первого же встретившегося NUL-байта.
    я надеялся получить '\0test' на выходе, с честным отрезанием подряд идущих \0 только с правой части строки.
  • @iamigor #3316 09:29 AM, 14 Dec 2016
    я просто заметил, что у меня некорректно работает проверка на пустой UUID, который так получилось, что начинался с '\0', а проверялся на пустоту (16 NUL-байт подряд) с помощью toStringCutToZero(uuid) = '' как раз :(
  • @iamigor #3317 09:29 AM, 14 Dec 2016
    это бага или некорректное описание в доке?
  • @filonov_ae #3318 09:30 AM, 14 Dec 2016
    Описание корректное но неполное. Концом z-строки очевидно считается первый встретившийся \0
  • @iamigor #3319 09:33 AM, 14 Dec 2016
    ну это просто странно, с учетом того, что в FixedString могут храниться бинарные данные, ipv6 или uuid тот же :\
  • @filonov_ae #3320 09:34 AM, 14 Dec 2016
    У бинарных данных обычно не требуется преобразовывать Z-string в string
  • @iamigor #3321 09:34 AM, 14 Dec 2016
    справедливо %)
  • @filonov_ae #3322 09:35 AM, 14 Dec 2016
    И если вы с бинарными данными работаете как с z-string - кто-то сам себе злобный буратино
  • @iamigor #3323 09:39 AM, 14 Dec 2016
    ОКОК, меня значит просто смутила дока фразой "с конца строки"
  • @filonov_ae #3324 09:39 AM, 14 Dec 2016
    а CutToZero не смутила? :)
  • @iamigor #3325 09:41 AM, 14 Dec 2016
    смущала первое время, да :(
  • https://t.me/clickhouse_ru
    @the_real_jkee #3326 10:27 AM, 14 Dec 2016
    Joined.
  • https://t.me/clickhouse_ru
    @the_real_jkee #3328 10:27 AM, 14 Dec 2016
    /stat@combot
  • https://t.me/clickhouse_ru
    @orantius #3330 10:31 AM, 14 Dec 2016
    интересно, что у них в качестве базы.
  • @Komzpa #3331 10:33 AM, 14 Dec 2016
    NaN%
  • https://t.me/clickhouse_ru
    @rlomonosov #3332 10:39 AM, 14 Dec 2016
    Кстати об аналитике. Тут проскакивало про поддержку clickhouse в redash. Кто-нить пробовал? Я попробовал кучу разных ревизий (после той, в которой вмерджили КХ). Везде все разломано (ошибки js, неработающий функционал и тд.). Может только у меня такие проблемы?
  • https://t.me/clickhouse_ru
    @rattrog #3333 11:57 AM, 14 Dec 2016
    Добрый день. Вопрос по INSERT (не нашёл ответа в мануле): если идёт вставка батчем и в процессе вставки происходит сбой, что произойдёт со вставляемыми данными? Вставится часть батча или ничего не вставится?
  • https://t.me/clickhouse_ru
    @BloodJazMan #3334 11:58 AM, 14 Dec 2016
    ну там всего два дня назад последник комит по кликсахус в redash был =)
    там автор пуллреквеста парень из Sports.ru
    попробуй у него спросить что и как?
  • @f1yegor #3335 11:59 AM, 14 Dec 2016
    Ничего, Андрей
  • https://t.me/clickhouse_ru
    @rattrog #3336 11:59 AM, 14 Dec 2016
    Спасибо
  • https://t.me/clickhouse_ru
    @rlomonosov #3337 12:01 PM, 14 Dec 2016
    запустил таки redash. взял последнюю стабильную версию (v0.12.0.b2449) и натянул на нее кликхаус. так работает вроде
  • @f1yegor #3338 12:04 PM, 14 Dec 2016
    redash это наподобие zeppelin?
  • https://t.me/clickhouse_ru
    @BloodJazMan #3339 12:14 PM, 14 Dec 2016
    redash это вроде aribnb superset или вроде metabase
  • @ptchol #3340 12:19 PM, 14 Dec 2016
    superset вроде только в друид ходить умеет.
  • @ptchol #3341 12:19 PM, 14 Dec 2016
    это же просто переименованный caravel ?
  • @f1yegor #3342 12:19 PM, 14 Dec 2016
    superset - переименованный caravel
  • https://t.me/clickhouse_ru
    @BloodJazMan #3343 12:20 PM, 14 Dec 2016
    он научился SQL делать а не только druid
  • @ptchol #3344 12:20 PM, 14 Dec 2016
    через presto ?
  • https://t.me/clickhouse_ru
    @rnbondarenko #3345 01:32 PM, 14 Dec 2016
    Joined.
  • @itokis #3346 01:33 PM, 14 Dec 2016
    Joined.
  • https://t.me/clickhouse_ru
    @spacentropy #3347 02:16 PM, 14 Dec 2016
    Joined.
  • https://t.me/clickhouse_ru
    @spacentropy #3348 02:16 PM, 14 Dec 2016
    друзья, привет!
  • https://t.me/clickhouse_ru
    @spacentropy #3349 02:16 PM, 14 Dec 2016
    намучались с ELK для логов и ивентов всяких. стоит пробовать кликхаус?
  • https://t.me/clickhouse_ru
    @nikitosiusis #3350 02:20 PM, 14 Dec 2016
    ага.
    а с чем намучались-то?
  • https://t.me/clickhouse_ru
    @spacentropy #3351 02:21 PM, 14 Dec 2016
    у нас пока немного данных и ивентов, но уже сейчас тяжело это всё мейнтейнить
  • https://t.me/clickhouse_ru
    @spacentropy #3352 02:21 PM, 14 Dec 2016
    ну, эластик плох как база
  • https://t.me/clickhouse_ru
    @spacentropy #3353 02:23 PM, 14 Dec 2016
    + в него не вмещается много данных, приходится удалять старые индексы, либо переносить их на другие ноды, либо просто закрывать
  • https://t.me/clickhouse_ru
    @spacentropy #3354 02:23 PM, 14 Dec 2016
    хз, может мы его готовим просто плохо, но пока что от него столько боли. И так понятно, что у больших ребят для наших целей (логи + бизнес-ивенты, которые плохо кладутся в rdbms) kafka + че-нить с хадупом или кассандрой какой
  • https://t.me/clickhouse_ru
    @spacentropy #3355 02:24 PM, 14 Dec 2016
    на хайлоаде был на докладе про кликхаус, вот думаю попробовать
  • https://t.me/clickhouse_ru
    @spacentropy #3356 02:24 PM, 14 Dec 2016
    (у меня сейчас кластер yellow просто, сил нет больше)
  • https://t.me/clickhouse_ru
    @nikitosiusis #3357 02:24 PM, 14 Dec 2016
    а какие объемы в терабайтах и записях?
  • https://t.me/clickhouse_ru
    @spacentropy #3358 02:26 PM, 14 Dec 2016
    немного совсем, мы далеко не всё собиарем, что можем. у нас нет терабайтов)
  • https://t.me/clickhouse_ru
    @spacentropy #3359 02:28 PM, 14 Dec 2016
    записей немного, 300-400 документов в секунду
  • https://t.me/clickhouse_ru
    @spacentropy #3360 02:28 PM, 14 Dec 2016
    но нам бы хотелось больше
  • @filonov_ae #3361 02:28 PM, 14 Dec 2016
    А что такое "документ" в вашем случае?
  • https://t.me/clickhouse_ru
    @spacentropy #3362 02:29 PM, 14 Dec 2016
    json документик с информацией: логом, ивентом
  • https://t.me/clickhouse_ru
    @spacentropy #3363 02:31 PM, 14 Dec 2016
    но мы быстро растем, примерно в 3 раза за год
  • https://t.me/clickhouse_ru
    @spacentropy #3364 02:31 PM, 14 Dec 2016
    ну как быстро, скорее, прогнозируемо :)
  • https://t.me/clickhouse_ru
    @spacentropy #3365 02:32 PM, 14 Dec 2016
    так же у нас в пейлоаде могут быть стектрейсы, например
  • https://t.me/clickhouse_ru
    @orantius #3366 02:32 PM, 14 Dec 2016
    кликхаус лучше себя ведет в том случае, когда этот документ имеет фиксированную типизированную структуру, которую перед заливкой распарсили и разложили в отдельные колонки.
  • @iamigor #3367 02:32 PM, 14 Dec 2016
    из кликхауса так себе документоориентированная бд )
  • @iamigor ↶ Reply to #3366 #3368 02:32 PM, 14 Dec 2016
    ну кстати парсить может даже необязательно, благо JSONEachRow есть
  • https://t.me/clickhouse_ru
    @aensidhe ↶ Reply to #3366 #3369 02:32 PM, 14 Dec 2016
    мы и в ELK так льём пока.
  • https://t.me/clickhouse_ru
    @aensidhe #3370 02:33 PM, 14 Dec 2016
    он тоже так лучше переваривает всё
  • https://t.me/clickhouse_ru
    @nikitosiusis #3371 02:33 PM, 14 Dec 2016
    а кстати к logstash никто плагин для кликхауса не пишет?
  • https://t.me/clickhouse_ru
    @spacentropy #3372 02:33 PM, 14 Dec 2016
    да, у нас есть часть строк типизированных, согласен
  • https://t.me/clickhouse_ru
    @spacentropy #3373 02:33 PM, 14 Dec 2016
    но если эксепшен, то там лютый стектрейс может быть
  • https://t.me/clickhouse_ru
    @spacentropy #3374 02:33 PM, 14 Dec 2016
    а если их много, то ухх
  • @iamigor #3375 02:33 PM, 14 Dec 2016
    ну можно его в String хранить
  • https://t.me/clickhouse_ru
    @spacentropy #3376 02:34 PM, 14 Dec 2016
    я вот думаю, может велосипед не изобретать, а просто все ивенты аккуратно класть в mysql какой-нибудь, мы пока по нагрузке точно влезем в одну машину
  • https://t.me/clickhouse_ru
    @spacentropy #3377 02:34 PM, 14 Dec 2016
    а потом в эластик забирать и там уже копать логи
  • https://t.me/clickhouse_ru
    @spacentropy #3378 02:34 PM, 14 Dec 2016
    тут вопрос в том, использовать ли mysql или сразу тяжелой артиллерией - кассандрой какой или кликхаусом
  • @filonov_ae #3379 02:35 PM, 14 Dec 2016
    А если отделить мух от котлет? логи отдельно, трейсы отдельно?
  • https://t.me/clickhouse_ru
    @spacentropy #3380 02:35 PM, 14 Dec 2016
    это надо всю систему переписать тогда. в принципе, норм идея тоже
  • https://t.me/clickhouse_ru
    @spacentropy #3381 02:36 PM, 14 Dec 2016
    еще у меня плохо сделано то, что данные льются прямо в эластик, а он крайне плох в этом плане
  • https://t.me/clickhouse_ru
    @spacentropy #3382 02:36 PM, 14 Dec 2016
    щас обновимся на es 5.1, сделаю две ingest ноды
  • https://t.me/clickhouse_ru
    @rnbondarenko #3383 02:37 PM, 14 Dec 2016
    селектов много или в основном инсерты?
  • https://t.me/clickhouse_ru
    @spacentropy #3384 02:38 PM, 14 Dec 2016
    инсерты; селекты тока от людей, их немного
  • https://t.me/clickhouse_ru
    @spacentropy #3385 02:38 PM, 14 Dec 2016
    и мониторинга
  • https://t.me/clickhouse_ru
    @rnbondarenko #3386 02:39 PM, 14 Dec 2016
    мускуль как промежуточная стораж?
  • https://t.me/clickhouse_ru
    @spacentropy #3387 02:39 PM, 14 Dec 2016
    да. просто в эластике данные хранить очень больно
  • https://t.me/clickhouse_ru
    @timurkar #3388 02:39 PM, 14 Dec 2016
    мы сейчас переходим со связки mysql + elasticsearch на clickhouse

    идея была такая-же - первичку пишем в mysql (к elasticsearch нет доверия в качетсве первичного хранилища), там селектов не делаем, только перекладываем в elastic батчами.
    а вот elastic используем только для аналитических выборок

    но даже для этого с ним возникают регулярные проблемы (сейчас статус кластера - red). причем у нас тоже не очень большие объемы (50gb данных, причем оно живет на машинке с 64 гб оперативки). возможно мы его не умеем нормально готовить, но по ощущениям - очень капризный продукт
  • https://t.me/clickhouse_ru
    @spacentropy #3389 02:39 PM, 14 Dec 2016
    о, обнимемся, друг!!
  • https://t.me/clickhouse_ru
    @spacentropy #3390 02:40 PM, 14 Dec 2016
    а 64гб как распределены? хип у эластика 31гб?
  • https://t.me/clickhouse_ru
    @spacentropy #3391 02:40 PM, 14 Dec 2016
    у вас дефолт или вы настраивали? для одной машины можно убрать реплика шарды
  • https://t.me/clickhouse_ru
    @spacentropy #3392 02:41 PM, 14 Dec 2016
    но вообще зависит от количества шардов на эти 50гб
  • https://t.me/clickhouse_ru
    @timurkar #3393 02:41 PM, 14 Dec 2016
    у нас дефолт. но там хип по-моему больше, в районе 40-50, не помню точно
  • https://t.me/clickhouse_ru
    @spacentropy #3394 02:41 PM, 14 Dec 2016
    на одной машине держать его это антипаттерн, кстати. а на трёх это БОЛЬ
  • https://t.me/clickhouse_ru
    @timurkar #3395 02:41 PM, 14 Dec 2016
    но это в общем-то неважно
    пока то что clickhouse показывает на наших данных - это просто сказка. в использовании на порядок удобнее эластика (прежде всего из-за того что sql для выборок)
  • https://t.me/clickhouse_ru
    @spacentropy #3396 02:41 PM, 14 Dec 2016
    хип нельзя ставить больше 31, иначе оно переходит на неправильные поинтеры : D
  • https://t.me/clickhouse_ru
    @timurkar #3397 02:42 PM, 14 Dec 2016
    :)) ну вот может сейчас статус тоже до yellow снизим )
  • https://t.me/clickhouse_ru
    @spacentropy #3398 02:42 PM, 14 Dec 2016
    так, отлично, вот хорошо, что я к вам пришел
  • https://t.me/clickhouse_ru
    @spacentropy #3399 02:43 PM, 14 Dec 2016
    он у вас будет yellow всегда, пока реплика шарды не будут заассайнены на другие ноды
  • https://t.me/clickhouse_ru
    @spacentropy #3400 02:43 PM, 14 Dec 2016
    на 64гб памяти можно три ноды запустить по 7гб хипа каждая
  • @itokis #3401 02:43 PM, 14 Dec 2016
    Если один шард сделать на одной ноде, то будет green :)
  • https://t.me/clickhouse_ru
    @spacentropy #3402 02:43 PM, 14 Dec 2016
    да
  • https://t.me/clickhouse_ru
    @nikitosiusis #3403 02:44 PM, 14 Dec 2016
    двух же достаточно, зачем три
  • https://t.me/clickhouse_ru
    @spacentropy #3404 02:44 PM, 14 Dec 2016
    ну да, на одной тачке сплит брейна не будет
  • https://t.me/clickhouse_ru
    @spacentropy #3405 02:44 PM, 14 Dec 2016
    тоже верно
  • https://t.me/clickhouse_ru
    @spacentropy #3406 02:45 PM, 14 Dec 2016
    так-то и одной хватит на 64гб.
  • https://t.me/clickhouse_ru
    @spacentropy #3407 02:45 PM, 14 Dec 2016
    рекомендуется запускать несколько нод на машинах там с 64гб+ памяти, например, 128 - две ноды по 31гб хипа
  • https://t.me/clickhouse_ru
    @spacentropy #3408 02:45 PM, 14 Dec 2016
    просто надо перенастроить под кластер без реплик, заодно и шардов больше влезет, кстати
  • https://t.me/clickhouse_ru
    @timurkar #3409 02:45 PM, 14 Dec 2016
    вот не хочется об этом думать ) на таких копеечных объемах данных придумывать там что-то с шардами, нодами и т.п.
  • https://t.me/clickhouse_ru
    @spacentropy #3410 02:46 PM, 14 Dec 2016
    абсолютно согласен
  • https://t.me/clickhouse_ru
    @spacentropy #3411 02:46 PM, 14 Dec 2016
    короче эластик классный поиск, но как база он ужасающ. ок, попробуем кликхаус тогда
  • https://t.me/clickhouse_ru
    @timurkar #3412 02:47 PM, 14 Dec 2016
    причем elastic у нас на селектах нормально себя показывает, в этом смысле претензий к нему не очень много
    просто неудобный в использовании и обслуживании
  • https://t.me/clickhouse_ru
    @rnbondarenko #3413 02:47 PM, 14 Dec 2016
    как будете переливать из мускуля в кликхаус?
  • https://t.me/clickhouse_ru
    @rnbondarenko #3414 02:48 PM, 14 Dec 2016
    хранить там вечно? или подчищать перенесенные данные клх?
  • https://t.me/clickhouse_ru
    @spacentropy #3415 02:48 PM, 14 Dec 2016
    а кликхаус же хорош для хранения?
  • https://t.me/clickhouse_ru
    @timurkar #3416 02:48 PM, 14 Dec 2016
    мы с этим переездом в мускуль писать перестаем
    первичные данные в виде файлов собираем, их в clickhouse, а потом в s3
  • https://t.me/clickhouse_ru
    @spacentropy #3417 02:49 PM, 14 Dec 2016
    а как кхе-кхе ETL из кликхауса в s3?
  • https://t.me/clickhouse_ru
    @spacentropy #3418 02:49 PM, 14 Dec 2016
    есть че-то готовое или тулзу писать?
  • https://t.me/clickhouse_ru
    @spacentropy #3419 02:49 PM, 14 Dec 2016
    у эластика круто сделаны снапшоты, кстати. вот этого не хватает в старых базах
  • https://t.me/clickhouse_ru
    @spacentropy #3420 02:49 PM, 14 Dec 2016
    кнопку нажал, индексы улетели на s3
  • https://t.me/clickhouse_ru
    @timurkar #3421 02:49 PM, 14 Dec 2016
    не не, не из clickhouse в s3. просто - логи в виде файлов и забекапить так чтобы если что поднять их можно было оттуда
  • https://t.me/clickhouse_ru
    @spacentropy #3422 02:50 PM, 14 Dec 2016
    запрос написал, из s3 индекс вернул
  • https://t.me/clickhouse_ru
    @spacentropy #3423 02:50 PM, 14 Dec 2016
    но там фишка в том, что в эластике нельзя данные держать, там объем ограничен
  • @garikanet #3424 02:56 PM, 14 Dec 2016
    Добрый вечер, мы подготовили вторую статью про ClickHouse для публикации на Хабре, мы еще прогоним статью через наших “орфограторов и пунктуаторов”, и попросим нашего филолога поправить русский язык, но техническую часть оформили:

    https://github.com/smi2/phpClickHouse/blob/master/doc/02_article_cluster.md

    Будем рады предварительной критике )
    smi2/phpClickHouse

    phpClickHouse - php ClickHouse wrapper

  • https://t.me/clickhouse_ru
    @spacentropy #3425 03:01 PM, 14 Dec 2016
    блин, в кликхаусе зукипер, вот это подстава
  • @iamigor #3426 03:02 PM, 14 Dec 2016
    %)))
  • https://t.me/clickhouse_ru
    @aensidhe ↶ Reply to #3425 #3427 03:02 PM, 14 Dec 2016
    😃
  • @filonov_ae ↶ Reply to #3425 #3428 03:02 PM, 14 Dec 2016
    А вам непременно кластер нужен?
  • https://t.me/clickhouse_ru
    @spacentropy #3429 03:02 PM, 14 Dec 2016
    не, думаю, одной машины хватит
  • @filonov_ae #3430 03:02 PM, 14 Dec 2016
    Тогда зукипер нинужын
  • https://t.me/clickhouse_ru
    @dvolodin #3431 03:02 PM, 14 Dec 2016
    если честно, хотелось бы альтернатив в виде consul и etcd
  • https://t.me/clickhouse_ru
    @dvolodin #3432 03:03 PM, 14 Dec 2016
    если уж припрет кластер делать
  • https://t.me/clickhouse_ru
    @dvolodin #3433 03:03 PM, 14 Dec 2016
    zk изящен, как седло на корове
  • https://t.me/clickhouse_ru
    @spacentropy #3434 03:03 PM, 14 Dec 2016
    ^
  • https://t.me/clickhouse_ru
    @spacentropy #3435 03:03 PM, 14 Dec 2016
    вот-вот, мы для сервисов консул собираемся
  • https://t.me/clickhouse_ru
    @dvolodin #3436 03:04 PM, 14 Dec 2016
    у кого чего есть
  • https://t.me/clickhouse_ru
    @dvolodin #3437 03:04 PM, 14 Dec 2016
    просто если есть консул впихивать еще zk как-то лишне
  • https://t.me/clickhouse_ru
    @spacentropy #3438 03:05 PM, 14 Dec 2016
    ну понятно почему зк, я так понял, внутри яндекса везде zk
  • https://t.me/clickhouse_ru
    @spacentropy #3439 03:05 PM, 14 Dec 2016
    так что это если только мы с вами запилим альтернативы
  • https://t.me/clickhouse_ru
    @aensidhe #3440 03:06 PM, 14 Dec 2016
    если надо хадуп кому-то, всё равно зукипер ставить, например.
  • https://t.me/clickhouse_ru
    @spacentropy #3441 03:06 PM, 14 Dec 2016
    но мы ведь ставим кликхаус чтобы не надо было
  • @filonov_ae #3442 03:07 PM, 14 Dec 2016
    Для твоей одиночной машины оно и не надо
  • https://t.me/clickhouse_ru
    @spacentropy #3443 03:07 PM, 14 Dec 2016
    а как мониторить кликхаус? есть для prometheus чо?
  • https://t.me/clickhouse_ru
    @spacentropy #3444 03:07 PM, 14 Dec 2016
    о, неплохо
  • @filonov_ae #3445 03:07 PM, 14 Dec 2016
    А в качестве хранения clickhouse - вполне себе ок. Я пробовал заливать суточный срез netflow - результаты более чем устроили.
  • https://t.me/clickhouse_ru
    @dvolodin #3446 03:09 PM, 14 Dec 2016
    ну если кому-то нужен zk, то можно zk
  • https://t.me/clickhouse_ru
    @dvolodin #3447 03:09 PM, 14 Dec 2016
    а если zk нет, то нафиг он
  • https://t.me/clickhouse_ru
    @dvolodin #3448 03:09 PM, 14 Dec 2016
    ?
  • https://t.me/clickhouse_ru
    @rlomonosov #3449 03:10 PM, 14 Dec 2016
    поидее без zk не будет работать дедупликация вставляемых данных. когда послал пачку данных, упал в процессе, послал снова
  • https://t.me/clickhouse_ru
    @dvolodin #3450 03:13 PM, 14 Dec 2016
    что CH делает с ZK?
  • https://t.me/clickhouse_ru
    @dvolodin #3451 03:13 PM, 14 Dec 2016
    key-value или что-то сложнее?
  • https://t.me/clickhouse_ru
    @salttan #3452 03:30 PM, 14 Dec 2016
    Joined.
  • https://t.me/clickhouse_ru
    @abashkeev #3453 03:31 PM, 14 Dec 2016
    Вообще, в Яндексе не только zk. Есть и решения по-лучше но они не в оупесорсе пока.
    А для своих целей zk в кликхаусе вполне норм. У вас с ним какие-то проблемы?
  • https://t.me/clickhouse_ru
    @dvolodin #3454 03:36 PM, 14 Dec 2016
    так какие цели у zk?
  • https://t.me/clickhouse_ru
    @aensidhe ↶ Reply to #3454 #3455 03:36 PM, 14 Dec 2016
    консенсус в кластере же.
  • https://t.me/clickhouse_ru
    @aensidhe #3456 03:36 PM, 14 Dec 2016
    какие ещё могут быть
  • https://t.me/clickhouse_ru
    решения получше в смысле распределенные менеджеры конфигураций?
  • @et_ya #3458 03:38 PM, 14 Dec 2016
    у нас еластик, щас правда еще разработка, но с имитацией реальной нагрузки. база с кликами, каждый клик - какие-то распарсенные данные + неиндексируемые хедеры, в сумме примерно 1 клик = 1кб, судя по объемам на винте. щас база весит 2 тб, реальная нагрузка будет 50-100\с, но для тестов делали и 2к рпс. 3 сервака под это дело, с репликацией и шардингом, пока никакой боли не видно особой
  • @et_ya #3459 03:39 PM, 14 Dec 2016
    мне бы тоже хотелось узнать про боль до выхода в прод)
  • https://t.me/clickhouse_ru
    @etkee ↶ Reply to #3393 #3460 03:41 PM, 14 Dec 2016
    за 32 гб JVM начинает декомпрессить указатели, если вы этим специально не занимались, то это может наоборот ухудшить вам производительность. Точных данных, конечно, ни у кого нет, но rule of thumb за 32 не выходить
  • https://t.me/clickhouse_ru
    @etkee #3461 03:44 PM, 14 Dec 2016
    вы маппинги индексам делаете?
  • https://t.me/clickhouse_ru
    @timurkar ↶ Reply to #3460 #3462 03:47 PM, 14 Dec 2016
    я там спутал(сейчас проверил). 57гб - это сколько сейчас elastic жрет памяти

    cat /proc/11211/status | grep VmSize
    VmSize: 56113512 kB

    хип там другой: -Xmx12Gb

    я повторюсь - скорее всего мы его плохо готовим. на селектах он проблем не вызывает, проблемы иногда возникают в обслуживании (бывало такое что он не поднимался после рестарта, или поднимался минут 20). я уверен что подкрутив параметры или как-то разнеся на ноды это может решиться. просто по впечатлениям которые получили - работать с ним сложно
  • https://t.me/clickhouse_ru
    @timurkar #3463 03:47 PM, 14 Dec 2016
    маппинги используем
  • https://t.me/clickhouse_ru
    @etkee #3464 03:47 PM, 14 Dec 2016
    короче пора elasticsearch_ru заводить
  • https://t.me/clickhouse_ru
    @timurkar #3465 03:48 PM, 14 Dec 2016
    ну и основное что напрягает - инструменты не очень удобные (когда в коде - еще ничего, но в отладке - мучаемся). запрос писать в json - то еще развлечение
  • @et_ya #3466 03:49 PM, 14 Dec 2016
    единственно что могу пока конкретное сказать про обслуживание - переезд 1тб базы с 2.4 до 5.1 проходил около 12 часов (желтый статус)
  • https://t.me/clickhouse_ru
    давай
  • https://t.me/clickhouse_ru
    @etkee #3468 03:49 PM, 14 Dec 2016
    Если вам просто собирать логи - попробуйте graylog, это обертка над elastic, которая сделает бОльшую часть за вас и позволит тупо скидывать логи в AMQP, особо не беспокоясь за время доставки. Я могу какие-то еще советы дать в личной беседе позже, но я на самом деле только теоретический сварщик; т.к. тут еще пара человек отписалась, возможно, имеет смысл действительно создать конфу.
  • https://t.me/clickhouse_ru
    @rybakit ↶ Reply to #3462 #3469 03:51 PM, 14 Dec 2016
    ElasticSearch memory problems caused by mapping issues.

    Heap usage issues with ElasticSearch caused by mapping issues caused a cluster to crash, and how we managed to fix it.

  • https://t.me/clickhouse_ru
    @etkee #3470 03:54 PM, 14 Dec 2016
    @elasticsearch_ru переезжаем
  • https://t.me/clickhouse_ru
    @rnbondarenko #3471 04:16 PM, 14 Dec 2016
    Никто с таким не сталкивался?
  • https://t.me/clickhouse_ru
    @rnbondarenko #3472 04:16 PM, 14 Dec 2016
    График Cpu utilization
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @rnbondarenko #3474 04:18 PM, 14 Dec 2016
    В CLH 6 таблиц
  • https://t.me/clickhouse_ru
    @rnbondarenko #3475 04:19 PM, 14 Dec 2016
    в две из них идет запись примерно 1600 запросов/сек (пиковые значения)
  • https://t.me/clickhouse_ru
    @rnbondarenko #3476 04:20 PM, 14 Dec 2016
    все таблицы - движок MergeTree
  • https://t.me/clickhouse_ru
    @rnbondarenko #3478 04:23 PM, 14 Dec 2016
    где непонятно? поясню
  • @iamigor ↶ Reply to #3475 #3479 04:28 PM, 14 Dec 2016
    ваще вроде бы рекомендовали поменьше запросов в секунду
  • @iamigor #3480 04:28 PM, 14 Dec 2016
    просто бóльшими пачками
  • @iamigor #3481 04:28 PM, 14 Dec 2016
    > Производительность при вставке данных.

    > Данные рекомендуется вставлять пачками не менее 1000 строк или не более одного запроса в секунду.
  • @iamigor #3482 04:28 PM, 14 Dec 2016
    может, поэтому так
  • https://t.me/clickhouse_ru
    @rnbondarenko #3483 04:30 PM, 14 Dec 2016
    попробуем, спасибо!
  • @iamigor #3484 05:16 PM, 14 Dec 2016
    кстати нет, походу, это тот же чел из cloudflare
  • @iamigor #3485 05:16 PM, 14 Dec 2016
    · GitHub

    vavrusa has 60 repositories available. Follow their code on GitHub.

  • @iamigor #3486 05:17 PM, 14 Dec 2016
    вон драйвер для ORM питоньей делает
  • https://t.me/clickhouse_ru
    @k0tb9g9m0t #3487 05:43 PM, 14 Dec 2016
    кто знает я еще успею поговорить ?
  • @f1yegor ↶ Reply to #3359 #3488 05:57 PM, 14 Dec 2016
    на таких объемах явно делаете что-то не так. сколько всего документов в индексе и размер базы?
  • https://t.me/clickhouse_ru
    @spacentropy #3489 06:06 PM, 14 Dec 2016
    у нас очень много индексов по некоторым причинам
  • https://t.me/clickhouse_ru
    @spacentropy #3490 06:06 PM, 14 Dec 2016
    возможно, проблема в этом
  • https://t.me/clickhouse_ru
    @spacentropy #3491 06:06 PM, 14 Dec 2016
    "active_primary_shards" : 6051,
    "active_shards" : 12042,
  • https://t.me/clickhouse_ru
    @proller #3492 06:15 PM, 14 Dec 2016
    Joined.
  • https://t.me/clickhouse_ru
    заставили?
  • https://t.me/clickhouse_ru
    @proller #3494 06:16 PM, 14 Dec 2016
    Пока добровольно.
  • @podshumok #3495 06:17 PM, 14 Dec 2016
    Joined.
  • https://t.me/clickhouse_ru
    @ssemiokhin #3497 06:22 PM, 14 Dec 2016
    Joined.
  • https://t.me/clickhouse_ru
    @alexey_pavlyukov #3498 06:22 PM, 14 Dec 2016
    Joined.
  • https://t.me/clickhouse_ru
    @ssemiokhin #3500 06:22 PM, 14 Dec 2016
    Найс, спасибо
  • https://t.me/clickhouse_ru
    @maxlapshin #3501 06:26 PM, 14 Dec 2016
    Joined.
  • @m_motylkov #3502 06:27 PM, 14 Dec 2016
    Joined.
  • И как у Александра дела — закончил он миграцию с Вертики на КХ?
  • https://t.me/clickhouse_ru
    @85550554 #3506 06:36 PM, 14 Dec 2016
    Analytic Database, OLAP, ColumnStore | MariaDB

    MariaDB ColumnStore enables real-time business intelligence and analytics. Scalable performance and costs reduction with single user interface for OLAP and OLTP.

  • @iamigor #3507 06:37 PM, 14 Dec 2016
    http://greenplum.org/ еще есть на основе постгреса
  • @podshumok #3508 06:40 PM, 14 Dec 2016
    Мужчина из крупной мебельной компании задаёт жёсткие вопросы )
  • https://t.me/clickhouse_ru
    @85550554 ↶ Reply to #3499 #3509 06:45 PM, 14 Dec 2016
    А что случилось с DELETE? Его сломали?
  • https://t.me/clickhouse_ru
    @aensidhe #3510 06:45 PM, 14 Dec 2016
    его не было
  • @iamigor #3511 06:52 PM, 14 Dec 2016
    угу. есть только ALTER TABLE DROP PARTITION
  • https://t.me/clickhouse_ru
    так на highload же рассказывал, вот только там много НО было
  • @shinebell #3513 07:34 PM, 14 Dec 2016
    роадмап скромный, были же еще апдейты заявлены, оконные функции )
  • https://t.me/clickhouse_ru
    @SLASH_CyberPunk #3514 07:34 PM, 14 Dec 2016
    вообще, до сих пор вроде видео нет, а очень бы хотелось посмотреть
  • @fooolosopher #3515 07:45 PM, 14 Dec 2016
    Joined.
  • Видео с предыдущего митапа технически готово. Должны скоро выложить наружу.
  • @iamigor ↶ Reply to #3516 #3517 09:16 PM, 14 Dec 2016
    спасибо вам за все! :3
  • @v_pavlov #3518 09:27 PM, 14 Dec 2016
    Joined.
  • https://t.me/clickhouse_ru
    Пока нет, по не зависящим от Кликхауса причинам.
  • https://t.me/clickhouse_ru
    Эти "но" для неофитов. Они усложняют работу с КХ для людей, привыкших к полноценным RDBMS. Приходится изобретать. Но непреодолимых "но" как не было, так и нет
  • @Valeriy_Bykov #3521 10:24 PM, 14 Dec 2016
    Чем можно объяснить, что фулскан селект (в запросе нет where) по полям, которых нет в ключе, выполняется дольше на более жирном ключе, чем на коротком, хотя по данным из гугл.групс длина ключа тут вообще никак не должна влиять?

    Есть две одинаковые по данным таблицы, разница только в ключе - в первой он (advertiser_id, date, sample_id), во второй - (advertiser_id, sample_id). Запрос выглядит так: select argMax(pad_id, u), max(u) from (select pad_id, uniq(user_id) as u from events group by pad_id). На первой таблице он выполняется за 29 сек, на второй - за 20. Кэш прогрет, беру времена самого быстрого из трех запросов, после первого запроса чтения с диска уже не производится. Аналогичные результаты и в случае, если pad_id заменить здесь на advertiser_id, т.е. использовать поле из ключа, но только первое.
  • @milovidov_an #3522 10:27 PM, 14 Dec 2016
    Данные занимают одинаковый размер на диске?
    Возможно (хотя и маловероятно), что после сортировки по одному из вариантов ключа, данные сжались лучше.

    Таблицы на одном сервере? Насколько отличается разбиение на "куски": SELECT * FROM system.parts WHERE active AND table = '...'
  • @Valeriy_Bykov #3523 10:36 PM, 14 Dec 2016
    Данные занимают разный размер. Таблица с более жирным ключом занимает 161 Гб, с коротким - 81 Гб. OPTIMIZE TABLE делал обеим таблицам. Разница выглядит слишком большой, а полей в таблице много. Загляну-ка, что там внутри.

    Таблицы на одном сервере.
    В каждой упомянутый селект выдает по одной записи (по одной партиции), данных там неделя, лежат в пределах одного месяца.
  • @Valeriy_Bykov #3524 10:38 PM, 14 Dec 2016
    В данных странное - колонки advertiser_id одинакового размера, а вот все остальные колонки в первой жирной таблице раза в два больше, чем во второй.
  • @Valeriy_Bykov #3525 10:39 PM, 14 Dec 2016
    Особенно sample_id.bin отличается - 27450М против 4777M.
  • @Valeriy_Bykov #3526 10:45 PM, 14 Dec 2016
    А date.bin - единственное поле, которое в первой таблице на порядок меньше, чем во второй - видимо, как раз за счет отсортированности в ключе.
  • @milovidov_an #3527 10:53 PM, 14 Dec 2016
    Данные в таблицах реально одинаковые или разные?
    Количество строк, хотя бы.
  • @Valeriy_Bykov #3528 10:55 PM, 14 Dec 2016
    Данные одинаковые. Обе таблицы наливались через INSERT into SELECT * FROM - из третьей таблицы. Количество строк одинаково, все запросы выдают одинаковые результаты.
  • @Valeriy_Bykov #3529 11:02 PM, 14 Dec 2016
    Еще интересный, с моей точки зрения, момент, что изначально у меня была таблица на 1 день, и занимала она 20 Гб. Я ее размножил в 7 раз, делая 7 раз в другую таблицу с идентичным описанием запросом insert from (select ...) из исходной, где при селекте к timestamp прибавлял N * 86400, и полученная таблица стала занимать 192 Гб (сама, после всех мерджей, и такой же размер остался после OPTIMIZE TABLE), т.е. она выросла более, чем в 7 раз.
  • @milovidov_an #3530 11:10 PM, 14 Dec 2016
    В первом случае, если sample_id - довольно тяжёлый столбец, то он лучше сожмётся в случае ключа
    (advertiser_id, sample_id)
    чем
    (advertiser_id, date, sample_id)
    из-за более локального расположения.
  • Здесь возможно, если данные почему-то оказались больше перемешаны для каждого фиксированного значения первичного ключа. То есть, сжатие всё объясняет. Но на реальных кейсах такое поведение встречается редко.
  • @Valeriy_Bykov #3532 11:22 PM, 14 Dec 2016
    Вероятно, это может все объяснить. Спасибо.
  • 15 December 2016 (62 messages)
  • https://t.me/clickhouse_ru
    @the_real_jkee #3533 01:07 AM, 15 Dec 2016
    Чем вам zk не нравится то всем?
  • https://t.me/clickhouse_ru
    @the_real_jkee #3534 01:07 AM, 15 Dec 2016
    Всерьёз спрашиваю
  • https://t.me/clickhouse_ru
    @the_real_jkee #3535 01:09 AM, 15 Dec 2016
    ZK в кликхаусе много для чего. Leader election, распределённый транзакционный kv, всякие listeners
  • https://t.me/clickhouse_ru
    @the_real_jkee #3536 01:09 AM, 15 Dec 2016
    У нас в Метрике огромные zk и особл проблем с ними нет
  • https://t.me/clickhouse_ru
    @the_real_jkee #3537 01:10 AM, 15 Dec 2016
    Немного неудобно, это правда, свои проблемы есть
  • https://t.me/clickhouse_ru
    @the_real_jkee #3538 01:10 AM, 15 Dec 2016
    Но надежность как у гаечного ключа хорошего
  • https://t.me/clickhouse_ru
    @le087 #3539 03:00 AM, 15 Dec 2016
    Соглашусь, zk норм, работает.
  • @podshumok #3540 06:19 AM, 15 Dec 2016
    Устанавливается тяжело. И неудобно, да. И религиозные соображения - из исходников его трудно собрать (на грани невозможного).
  • https://t.me/clickhouse_ru
    @abashkeev #3541 07:05 AM, 15 Dec 2016
    Витя, насколько я понял zk сложнее настроить у некоторых с этим проблемы. Просили даже показать как вы в метрике его используете, с какими опциями.
  • https://t.me/clickhouse_ru
    @alexanderzaitsev #3542 08:10 AM, 15 Dec 2016
    У нас тоже никаких проблем с ZK. Тонкости есть, скажем, cross-dc, но сам ZK работает замечательно
  • @lexa_work #3543 08:15 AM, 15 Dec 2016
    ну наверное проблема в том, что он не модный не молодежный
  • @lexa_work #3544 08:15 AM, 15 Dec 2016
    вот если бы на GO
  • @lexa_work #3545 08:15 AM, 15 Dec 2016
    ну крайняк на Rust, то может быть
  • @lexa_work #3546 08:16 AM, 15 Dec 2016
    у меня связка ZK+Kafka+Flink+ES молотит > 15000 документов в секунду
  • @lexa_work #3547 08:16 AM, 15 Dec 2016
    на 3-ех узлах невыдающихся
  • https://t.me/clickhouse_ru
    @winogradoff #3548 08:26 AM, 15 Dec 2016
    Flink сам консьюмит с кафки? У него нормально с ребалансингом и коммитами?
  • Александр, вы, оказывается, уже в этом чатике! А какой tool используют ваши аналитики для собственного ad hoc анализа данных в КХ? Они освоили его SQL?
  • Кстати о птичках — на zk работает кластеризация вполне коммерческого софта — Tableau Server. Но zk там хорошо скрыт под капотом, практически не требует администрирования. Так что наверное дело не в молодежности, а в необходимости разбираться в дополнительной софтине с собственной логикой и скелетами в шкафу. https://onlinehelp.tableau.com/current/server/en-us/server_process_coordination.htm #tableau
  • @lexa_work ↶ Reply to #3548 #3551 08:40 AM, 15 Dec 2016
    Да сам. Пока проблем не замечали в этой части.
  • https://t.me/clickhouse_ru
    @alexanderzaitsev #3552 08:44 AM, 15 Dec 2016
    > @roman_kolchin
    Александр, вы, оказывается, уже в этом чатике! А какой tool используют ваши аналитики для собственного ad hoc анализа данных в КХ? Они освоили его SQL?

    У нас собственный middleware (на Scala), который генерирует SQL запросы. Его пришлось полностью переписать под КХ, чтобы заменить обычные SQL-джойны на вложенные и словари.
  • Спасибо. Он у вас чисто графический? График -> SQL -> КХ?
  • https://t.me/clickhouse_ru
    @alexanderzaitsev #3554 08:53 AM, 15 Dec 2016
    Нет, больше как раз таблицы. middleware выдает клиенту json или csv (несколько форматов), который дальше используется UIем или напрямую другими системами
  • https://t.me/clickhouse_ru
    @alexanderzaitsev #3555 08:54 AM, 15 Dec 2016
    Графики тоже, конечно, можно построить, но это уже мелочи
  • @roman_kolchin #3556 08:54 AM, 15 Dec 2016
    А каким образом клиенты запросы формируют? У вас есть какой-то птичий язык для этих целей?
  • @roman_kolchin #3557 08:55 AM, 15 Dec 2016
    Или вручную заранее настроенные sql запросы, которые зашиты в middleware?
  • https://t.me/clickhouse_ru
    @alexanderzaitsev #3558 08:56 AM, 15 Dec 2016
    Ну можно скзать, что птичий язык. Есть API, через который передаются набор измерений, метрик, фильтров и проч
  • @roman_kolchin #3559 08:56 AM, 15 Dec 2016
    Если Scala/JVM, то olap4j случайно не используете?
  • https://t.me/clickhouse_ru
    @alexanderzaitsev #3560 09:28 AM, 15 Dec 2016
    Нет, все самописное
  • Молодцы вы. А я все мечтаю, что MDX когда-нибудь над КХ появится :) Через Mondrian хотя бы, но с блэкджеком, словарями и использованием массивов в запросах чтоб все очень быстро :)
  • https://t.me/clickhouse_ru
    @alexanderzaitsev #3562 10:02 AM, 15 Dec 2016
    Вчера на митапе звучало предложение об MDX. Но это после нормальных джойнов
  • Очень интересно! Кто-то уже пытается сделать? Или это был запрос к разработчикам КХ?
  • @roman_kolchin #3564 10:11 AM, 15 Dec 2016
    Я изучал этот вопрос _теоретически_ — на первый взгляд сейчас уже всего хватает (словари + словарные функции + массивы), чтобы сделать эффективную трансляцию. Эффективную — в смысле трансляции развезистой клюквы большого mdx-запроса в единственный однопроходный запрос к базе, без лишних union'ов. Но транслятор нужен именно под синтаксис КХ.
  • @roman_kolchin #3565 10:12 AM, 15 Dec 2016
    Join'ы не помогут сами по себе. Синтаксически мб и заработает, но лагать будет дико из-за большого количества вложенных запросов и кучи union'ов.
  • https://t.me/clickhouse_ru
    @alexanderzaitsev #3566 10:13 AM, 15 Dec 2016
    Это был вопрос к Яндексу. Странслировать MDX в CH-SQL (назовем это так) не должно быть слишком сложно
  • Вопрос бюджета времени :) У меня его нет, к сожалению.
  • https://t.me/clickhouse_ru
    @alexanderzaitsev #3568 10:14 AM, 15 Dec 2016
    Это тоже один из вопросов, которые обсуждали :) Все просят Яндекс, сделайте то, сделайте это, но мало кто контрибьютит сам
  • @milovidov_an #3569 10:16 AM, 15 Dec 2016
    Посмотрите, вот интересный продукт: https://github.com/Wondersoft/olaper
    Автор говорит, что есть желание сделать интеграцию с ClickHouse.
    Wondersoft/olaper

    XML/A engine for real-time OLAP analytics. Contribute to Wondersoft/olaper development by creating an account on GitHub.

  • С++ сложно. Чтобы контрибьютить кто-то должен на нем писать и одновременно решать задачи анализа в рамках своей работы или долгоиграющего хобби :)
  • Я общался с ним на прошлом митапе. В тои числе уговаривал сделать трансляцию :)
  • https://t.me/clickhouse_ru
    @alexanderzaitsev #3572 10:24 AM, 15 Dec 2016
    Насколько я его понимаю, ему нужен клиент, под которого это можно изначально сделать, а потом отдать всем. Так как проект не самый простой, а ресурсов работать забесплатно у его компании нет.
  • Кстати, если к КХ появится интерфейс XMLA (то, что дает olaper), то после этого с помощью http://www.arquery.com/ArqueryXMLAConnector можно будет работать с КХ из сводных таблиц Excel.
    Arquery ~ XMLA Connector

    An open-source implementation of the ODBO standard for XMLA data sources.

  • Это всегда ключевое условие — вопрос и финансирования ну и отладки на реальной задаче. Разработчик olaper'а использует его в своей компании в качестве middleware под Saiku или чем-то подобным. Но с его же слов там реализован минимальный набор лексики MDX. Поэтому olaper нужно будет сильно допиливать не только для поддержки КХ, но и для увеличения возможностей MDX.
  • А в вашей конторе не нужен такой olaper? Как я понимаю, Алексей (разработчик olaper'а) — ваш бывший коллега :) Договоритесь :)
  • https://t.me/clickhouse_ru
    @alexanderzaitsev #3576 10:38 AM, 15 Dec 2016
    Нет, нам не нужен, мы не используем MDX
  • https://t.me/clickhouse_ru
    @karlovnv #3577 11:34 AM, 15 Dec 2016
    Коллеги, привет. У нас внешние словари имеют ключи guid'ы. Можно ли как-то их подключить?
  • https://t.me/clickhouse_ru
    @vladenisov ↶ Reply to #3332 #3578 11:35 AM, 15 Dec 2016
    Пока там все кривовато и в каждой ревизии что-то может не работать. Я себе оставил коммит после мержа поддержки clickhouse на время фиксов. Полностью туда мы перейдем после появления функционала склейки запросов из разных источников. )
  • https://t.me/clickhouse_ru
    @valer0n #3579 12:46 PM, 15 Dec 2016
    Joined.
  • https://t.me/clickhouse_ru
    Есть незадокументировнный способ :) Но раскрытие незадокументированных возможностей -- это почетная обязанность Алексея
  • https://t.me/clickhouse_ru
    @maxlapshin #3581 02:30 PM, 15 Dec 2016
    мы для uuid-ов воткнули две строчки, которые превращают uuid в FixedString(16) и обратно
  • https://t.me/clickhouse_ru
    @maxlapshin #3582 02:30 PM, 15 Dec 2016
    но вот для primary key — эт нет
  • Можно использовать complex_key-словари. Они поддерживают произвольные типы ключей.

    Словари по составному ключу:

    Конфиг словаря с составным ключом отличается двумя вещами:

    В качестве layout указывается complex_key_hashed или complex_key_cache.
    Указывается несколько атрибутов в structure/key.

    Пример:

    <layout>
    <complex_key_hashed />
    </layout>
    <structure>
    <key>
    <attribute>
    <name>uid</name>
    <type>UInt64</type>
    </attribute>
    <attribute>
    <name>order_id</name>
    <type>UInt32</type>
    </attribute>
    </key>
    <attribute>
    <name>has_access</name>
    <type>UInt8</type>
    <null_value>0</null_value>
    </attribute>
    </structure>

    Для использования словаря с составным ключём, в функции для работы со словарями, в качестве аргумента-ключа передаётся кортеж.
    Пример: dictGetString('dict', 'attr', (k1, k2)).
    В качестве элементов ключа, поддерживаются произвольные типы данных (в том числе, строки).

    Не смотря на название, complex_key_-словарь может иметь и один компонент в качестве ключа. То есть, не составной ключ.
    При этом, в отличие от обычных словарей, этот ключ может иметь любой тип.

    В этом случае, в функции для работы со словарями, нужно передавать кортеж из одного элемента.
    Пример: dictGetString('dict', 'attr', tuple(k)).
    - как видно, для описания кортежа из одного элемента, используется функция tuple.

    Для типов UInt32 и подобных, я не рекомендую использовать complex_-словари, так как это будет менее эффективно, чем обычные.
    А вот для типа String или составного - вполне.
  • @garikanet #3584 06:33 PM, 15 Dec 2016
    Подскажите, а как можно посчитать median() в CollapsingMergeTree без использования модификатора FINAL ?
  • https://t.me/clickhouse_ru
    @karlovnv ↶ Reply to #3583 #3585 07:15 PM, 15 Dec 2016
    Спасибо! Но все-таки guid является не строкой, а отдельным типом данных (да и места меньше занимает). Планируется ли их полноценная поддержка?
  • @milovidov_an #3586 07:22 PM, 15 Dec 2016
    Как отдельного типа данных - нет. Но недавно добавили возможность удобного преобразования из бинарного вида FixedString(16) в текст и обратно.
  • https://t.me/clickhouse_ru
    @mbaran0v ↶ Reply to #2938 #3587 07:38 PM, 15 Dec 2016
    У нас в докере работает
  • @milovidov_an #3588 08:39 PM, 15 Dec 2016
    Если есть желание, можно здесь нажать на upvote:
    https://news.ycombinator.com/item?id=13183758
    Мелочь, а может быть человеку будет приятно.
  • @iamigor #3589 08:46 PM, 15 Dec 2016
    я думаю помочь ему в разработке, sqlalchemy всяко популярнее самописной clickhouse-orm
  • @iamigor #3590 08:48 PM, 15 Dec 2016
    блин, а там она и используется %))
  • Наверное, никак.
  • @garikanet #3592 10:03 PM, 15 Dec 2016
    спасибо, тоже так думал- искал пути решения, но вдруг есть скрытый "ход")
    еще вопрос, про ЯМ, у нас хранится значение, допустим сколько пользователь провел времени на странице - аналогичное ЯМ, и каждые 15 секунд это значение схлопывается и увеличивается в рамках сессии, получается если в ЯМ тоже каллапс движек - вы считаете через "avg" т.е sum(sign).... ?
  • @milovidov_an #3594 10:04 PM, 15 Dec 2016
    Да, через sum(x * sign) / sum(sign).
  • @garikanet #3595 10:05 PM, 15 Dec 2016
    спасибо!
  • 16 December 2016 (14 messages)
  • https://t.me/clickhouse_ru
    @the_real_jkee #3596 12:31 AM, 16 Dec 2016
    Вот это отличный вопрос кстати
  • https://t.me/clickhouse_ru
    @the_real_jkee #3597 12:31 AM, 16 Dec 2016
    Подскажите, а как можно посчитать median() в CollapsingMergeTree без использования модификатора FINAL ?
  • https://t.me/clickhouse_ru
    @the_real_jkee #3598 12:31 AM, 16 Dec 2016
    Выглядит так что действительно никак, но можно попробовать придумать
  • @shirolimit #3599 06:37 AM, 16 Dec 2016
    В продолжение темы UUID. Подскажите, как можно при INSERT'е преобразовать строковое представление UUID в FixedString(16)?

    Пока единственный вариант, который удалось найти - это вставка строкового представления UUID во временную таблицу, а затем INSERT с SELECT'ом (где уже можно использовать UUIDStringToNum) из временной таблицы в основную.
  • @iamigor #3600 06:47 AM, 16 Dec 2016
    Можно вставлять с вызовом функции UUIDStringToNum, но вроде, бы только в формате Values.
  • @iamigor #3601 06:48 AM, 16 Dec 2016
    echo "('2016-12-16', UUIDStringToNum('1a06aed6-fe8b-410d-a0ca-99baae516a73'))" | curl "http://127.0.0.1:8123/?query=INSERT+INTO+test_uuid_fill+(date,+uuid)+FORMAT+Values" --data-binary @-

    типа того
  • @shirolimit ↶ Reply to #3600 #3603 07:07 AM, 16 Dec 2016
    Большое спасибо!
    Наверное строка в документации не совсем актуальна уже:

    "Ни один из форматов данных не позволяет использовать в качестве значений выражения.
    То есть, вы не можете написать INSERT INTO t VALUES (now(), 1 + 1, DEFAULT)."
  • @iamigor #3604 07:14 AM, 16 Dec 2016
    Хм, не знаю, лучше пусть кто-нибудь из Я подтвердит)

    Я где-то видел, что просили что-то подобное, но нашел только такие тикеты:
    https://github.com/yandex/ClickHouse/issues/67
    https://github.com/yandex/ClickHouse/issues/75
    а они вроде немного не про то
    Initial column values are not used during DEFAULT expression evaluation. · Issue #67 · yandex/ClickHouse

    I've created a table in the following way: CREATE TABLE IF NOT EXISTS gusev.`vf_vg-desktop_8582E5B16CE53B87` ( id UInt32, track UInt8, codec String, content String, rdate Date DEFAULT tod...

  • @iamigor #3605 07:18 AM, 16 Dec 2016
    Кстати, вот было бы клёво иметь возможность написать что-то вроде такого:

    CREATE TABLE ... (
    uuid FixedString(16) DEFAULT UUIDStringToNum(uuid)
    )

    Чтобы это выражение отрабатывало только один раз, при INSERT'е, и не ругалось на cyclic aliases. Но это неочевидно было бы, наверное, и/или труднореализуемо нормально.
  • @garikanet ↶ Reply to #3598 #3606 09:22 AM, 16 Dec 2016
    Да интересная задачка, что правильнее в нашем контексте 2*2=5 или 2*2=4.7 )
    На наших данных ближе всего к final такое :
    round(medianIf(value,sign>0)) AS val_sign_median

    Интересно что если делается GROUP BY toStartOfFiveMinute(event_time), то без FINAL,
    т/е данные группируются "расхлопнутыми", среднее лучше/ближе через avgIf(value,sign>0) чем sum(value * sign)/ sum(sign)
  • @garikanet #3607 09:23 AM, 16 Dec 2016
    Или мы где-то "закривили" руки себе ))
  • Это почти актуально. Поддержка вычисляемых выражения была добавлена в VALUES, но при их использовании, всё становится очень неэффективно.
  • Была идея сделать INSERT SELECT expr ... FROM input()
    - то есть, произвольные вычисления от вставляемых в INSERT-е данных.
  • https://t.me/clickhouse_ru
    @galukhin #3610 02:17 PM, 16 Dec 2016
    Joined.
  • 17 December 2016 (70 messages)
  • @roman_kolchin #3611 10:45 AM, 17 Dec 2016
    Товарищ пердлагает 50К рублей за ODBC драйвер для КХ http://www.sql.ru/forum/1243052/perepisat-drayver-odbc-na-windows-50-000r
    Переписать драйвер odbc на windows 50.000р / Работа / Sql.ru

    Переписать драйвер odbc на windows 50.000р / Работа / Добрый вечер!Есть odbc драйвер, который лучше не использоватьhttps://groups.google.com/forum/#!searchin/clickhouse/odbc$20|sort:relevance/clickhouse/VmdmhH_S9B8/U60Z2LZWBgAJКак я понял, сырец лежит здесьhttps://github.com/yandex/ClickHouse/tree/32057c...

  • https://t.me/clickhouse_ru
    @alexanderzaitsev #3612 10:52 AM, 17 Dec 2016
    Если это тот, о ком я думаю, то драйвером дело не ограничится )
  • @iamigor #3613 10:52 AM, 17 Dec 2016
    гениально!
  • https://t.me/clickhouse_ru
    @the_real_jkee #3614 11:07 AM, 17 Dec 2016
    Это тот кто спрашивал на митапе "хочу продавать clickhouse за деньги"? =)
  • @iamigor #3615 11:08 AM, 17 Dec 2016
    только начал не с 5-10 млн, а поскромнее
  • https://t.me/clickhouse_ru
    @the_real_jkee #3616 11:08 AM, 17 Dec 2016
    А, наоборот, он покупает
  • @roman_kolchin #3617 11:11 AM, 17 Dec 2016
    Виктор, а планируется опубликовать рейтинг фич реквестов?
  • @roman_kolchin #3618 11:12 AM, 17 Dec 2016
    Вспомнил, вы говорили про открытие вашего внутреннего багтрекера по КХ наружу, я правильно помню?
  • https://t.me/clickhouse_ru
    @the_real_jkee #3619 11:15 AM, 17 Dec 2016
    Да, планируется
  • https://t.me/clickhouse_ru
    @the_real_jkee #3620 11:15 AM, 17 Dec 2016
    И то и то
  • https://t.me/clickhouse_ru
    @the_real_jkee #3621 11:15 AM, 17 Dec 2016
    Пока не успеваем
  • Круто. Будет виден интерес сообщества к разным фичам и на всякие побочные штуки (которые не в "ядре") можно будет кикстартер устраивать :) Типа как "50К за ODBC" :)
  • https://t.me/clickhouse_ru
    @zloool #3623 08:22 PM, 17 Dec 2016
    Как с таким бороться? Только перезагрузка?
    Вылетает после селекта неоч красивых данных из базы
  • https://t.me/clickhouse_ru
    @zloool #3624 08:22 PM, 17 Dec 2016
    Сори, проблема не в кликхаусе
  • @iamigor #3625 08:23 PM, 17 Dec 2016
    reset?
  • @iamigor #3626 08:23 PM, 17 Dec 2016
    Fix terminal after displaying a binary file

    I'd tried command cat with an executable file: cat /bin/ls Now I can't read any word in this terminal (Linux console). How can I fix it?

  • @Komzpa #3627 08:23 PM, 17 Dec 2016
    stty sane
  • @Komzpa #3628 08:23 PM, 17 Dec 2016
    или reset
  • https://t.me/clickhouse_ru
    @zloool #3629 08:25 PM, 17 Dec 2016
    Спасио
  • https://t.me/clickhouse_ru
    @yurikosan #3630 08:51 PM, 17 Dec 2016
    КХ умеет аггрегировать вычисляемые значения по дате?
    типа
    GROUP BY toYear(event_date)
  • https://t.me/clickhouse_ru
    @zloool ↶ Reply to #3623 #3631 08:52 PM, 17 Dec 2016
    Я так понимаю бинарные данные лучше в стринг не засовывать?
  • @iamigor ↶ Reply to #3630 #3632 08:57 PM, 17 Dec 2016
    да, без проблем
  • @iamigor ↶ Reply to #3631 #3633 08:59 PM, 17 Dec 2016
    вроде без разницы, можно в String, можно в FixedString
  • https://t.me/clickhouse_ru
    @yurikosan #3634 09:00 PM, 17 Dec 2016
    Пытаюсь сделать так

    select
    toYear(event_date) as y,
    toMonth(event_date) as m,
    count() as total
    from tbl
    where
    user_id=29
    group by toMonth(event_date)

    получаю

    Code: 215, e.displayText() = DB::Exception: Column event_date is not under aggregate function and not in GROUP BY., e.what() = DB::Exception
  • @iamigor #3635 09:00 PM, 17 Dec 2016
    y в GROUP BY указать забыли )
  • @iamigor #3636 09:00 PM, 17 Dec 2016
    GROUP BY y, m - можно так
  • https://t.me/clickhouse_ru
    @yurikosan #3637 09:01 PM, 17 Dec 2016
    точно. спасибо)
  • https://t.me/clickhouse_ru
    @zloool ↶ Reply to #3633 #3638 09:01 PM, 17 Dec 2016
    Есть ли какая то встроенная функция для экранирования бинарных данных?
  • @iamigor ↶ Reply to #3638 #3639 09:02 PM, 17 Dec 2016
    данные экранируются на уровне форматов, насколько я помню

    есть еще hex и ipv6/uuid-функции (которые превращают бинарно хранящиеся айпишники и уиды в человекочитабельные)
  • @iamigor #3640 09:03 PM, 17 Dec 2016
    вроде бы TabSeparated и CSV по-максимуму все экранируют, но я точно не помню
  • @iamigor #3641 09:04 PM, 17 Dec 2016
    JSON/JSONCompact еще
  • @iamigor #3642 09:06 PM, 17 Dec 2016
    а, нет, TabSeparated только при парсинге экранирует \x00 всякие
  • https://t.me/clickhouse_ru
    @zloool #3643 09:06 PM, 17 Dec 2016
    Его и использую в веб морде приложения, но хочется посмотреть из базы данные в консоли
  • https://t.me/clickhouse_ru
    @zloool #3644 09:06 PM, 17 Dec 2016
    JSON/JSONCompact еще
  • @iamigor #3645 09:08 PM, 17 Dec 2016
    ну, можно JSONEachRow, он компактнее, но читабельность страдает, конечно
  • @iamigor #3646 09:09 PM, 17 Dec 2016
    но больше ничего вроде бы нету, может скрытые функции какие-то или в функциях для работы с json че-нить есть
  • https://t.me/clickhouse_ru
    @zloool #3647 09:09 PM, 17 Dec 2016
    Спасибо, буду думать
  • @iamigor #3648 09:11 PM, 17 Dec 2016
    hex() совсем не подходит?(
  • https://t.me/clickhouse_ru
    @zloool #3649 09:12 PM, 17 Dec 2016
    Сейчас попробую
  • https://t.me/clickhouse_ru
    @zloool #3650 09:13 PM, 17 Dec 2016
    Отлично, с ним хотя бы не крешиться
  • @iamigor #3651 09:14 PM, 17 Dec 2016
    можно еще в lower() обернуть, если lowercase больше нравится, и с помощью substring обрезать, чтоб в табличку помещался (это если не нужны все данные, конечно)
  • https://t.me/clickhouse_ru
    @maxlapshin #3652 09:39 PM, 17 Dec 2016
    простите за невнимательность, но вот свежеобновил кликхаус, а UUIDNumToString вроде как ещё нет. Или не там смотрел?
  • https://t.me/clickhouse_ru
    @maxlapshin #3653 09:39 PM, 17 Dec 2016
    SELECT UUIDNumToString(server_id),count() FROM retroview_production.sessions group by server_id FORMAT Pretty
  • https://t.me/clickhouse_ru
    @maxlapshin #3654 09:39 PM, 17 Dec 2016
    Code: 46, e.displayText() = DB::Exception: Unknown function UUIDNumToString, e.what() = DB::Exception
  • @iamigor #3655 09:39 PM, 17 Dec 2016
    сервер тоже обновили же?
  • @iamigor #3656 09:40 PM, 17 Dec 2016
    одного клиента недостаточно, если что)
  • @iamigor #3657 09:40 PM, 17 Dec 2016
    у меня сейчас в 1.1.54121 есть, и в 1.1.54112 (или 54113) было вроде
  • @iamigor #3658 09:41 PM, 17 Dec 2016
    SELECT version() что показывает?
  • https://t.me/clickhouse_ru
    @maxlapshin #3659 09:41 PM, 17 Dec 2016
    1.1.54112
  • https://t.me/clickhouse_ru
    @maxlapshin #3660 09:41 PM, 17 Dec 2016
    буду обновлять
  • https://t.me/clickhouse_ru
    @maxlapshin #3661 09:44 PM, 17 Dec 2016
    а, но это последняя версия в репозитории. Видимо вы из исходников ставили?
  • @iamigor #3662 09:44 PM, 17 Dec 2016
    вообще, они могли не дойти еще до стабильной версии
  • @iamigor #3663 09:44 PM, 17 Dec 2016
    документация из master'а (нестабильной ветки) отображается сразу на clickhouse.yandex)
  • https://t.me/clickhouse_ru
    @maxlapshin #3664 09:44 PM, 17 Dec 2016
    ага
  • @iamigor #3665 09:48 PM, 17 Dec 2016
    завел тикет на всякий случай, https://github.com/yandex/ClickHouse/issues/270
    Use `stable` branch for the reference pages at clickhouse.yandex · Issue #270 · yandex/ClickHouse

    It'd be awesome to show the stable version of the docs at the http://clickhouse.yandex/ site. I suppose, most of the users will use the stable/packaged version and not the bleeding-edge one.

  • https://t.me/clickhouse_ru
    @zloool ↶ Reply to #3648 #3666 09:49 PM, 17 Dec 2016
    Наверное лучше на клиенте делать hex() и писать в базу чистую строку
  • @iamigor #3667 09:50 PM, 17 Dec 2016
    чистую - в смысле?
  • @iamigor #3668 09:50 PM, 17 Dec 2016
    не бинарную типа?
  • @iamigor #3669 09:54 PM, 17 Dec 2016
    ну хз, смотрите сами, что важнее, читабельность или экономия ресурсов

    я для сравнения загрузил пару месяцев данных в разные таблицы - с fixedstring(16) и string (в которой были 36-символьные уиды)
    uuidы использовались в основном в качестве ключа для джойнов между разными таблицами

    fixedstring(16) оказался в среднем в два раза шустрее, чем обычная строка.
    и отображать ее (в моем случае), в принципе, редко надо, только если при разборе полетов
  • https://t.me/clickhouse_ru
    @maxlapshin #3670 09:58 PM, 17 Dec 2016
    сейчас это так:
  • https://t.me/clickhouse_ru
    @maxlapshin #3671 09:58 PM, 17 Dec 2016
    replaceRegexpOne(lower(hex(server_id)),'(.{8})(.{4})(.{4})(.{4})(.{12})','\\\\1-\\\\2-\\\\3-\\\\4-\\\\5') as server_id
  • https://t.me/clickhouse_ru
    @maxlapshin #3672 09:59 PM, 17 Dec 2016
    и toFixedString(unhex(replaceAll(" ++ ServerId ++ ",'-','')),16) AS server_id
  • @iamigor #3673 09:59 PM, 17 Dec 2016
    гыгыгы, да
  • @iamigor #3674 10:00 PM, 17 Dec 2016
    особенно когда столбцов с уидами несколько, выглядит эпично
  • https://t.me/clickhouse_ru
    @maxlapshin #3675 10:02 PM, 17 Dec 2016
    больше добивает обожаемое мультиэкранирование
  • @iamigor #3676 10:02 PM, 17 Dec 2016
    хм, а мне двух бекслешей достаточно было
  • @iamigor #3677 10:03 PM, 17 Dec 2016
    ну да, зависит от языка/формата, неважно
  • https://t.me/clickhouse_ru
    @maxlapshin #3678 10:03 PM, 17 Dec 2016
    ага
  • @miolini #3679 11:39 PM, 17 Dec 2016
    Joined.
  • @miolini #3680 11:40 PM, 17 Dec 2016
    Всем привет. Можно ли с++ драйвер для Cassandra положить в contrib? В рамках фичи словари в Cassandra.
  • 18 December 2016 (7 messages)
  • @f1yegor #3681 12:13 AM, 18 Dec 2016
    А где описание фичи?
  • @f1yegor #3682 12:14 AM, 18 Dec 2016
    Интересно
  • @miolini #3683 01:00 AM, 18 Dec 2016
    описание в названии - возможность подгружаться словари из кластера Cassandra
  • В последней stable ещё нет.
  • Можно легко, но чуть-чуть сомневаюсь. Всё-таки часто правим в документации какие-нибудь ошибки и удобно, что они сразу выкладываются. А отдельно в stable ничего нельзя коммитить (обновляется скриптом при релизе, с помощью git reset).
  • Привет. Можно.
    Обязательно добавить в инструкцию по сборке.
    Если получается нетривиально - надо сделать флаг, чтобы отключалось.
  • @miolini #3687 03:28 AM, 18 Dec 2016
    спасибо
  • 19 December 2016 (95 messages)
  • @iamigor #3688 09:18 AM, 19 Dec 2016
    А как правильно подключать внешний источник с помощью ODBC?

    Я указал

    <source>
    <odbc>
    <connection_string>DSN=ClickhouseDict</connection_string>
    <table>os</table>
    </odbc>
    </source>

    при вызове dictGet* дёргается ODBCDictionarySource, но ничего не происходит:

    [ 4 ] <Debug> executeQuery: (from [::ffff:127.0.0.1]:59280) select dictGetString('os', 'name', 1)
    [ 4 ] <Trace> InterpreterSelectQuery: FetchColumns -> Complete
    [ 4 ] <Trace> ODBCDictionarySource: SELECT id, name FROM os;

    но iusql -v ClickhouseDict подключается успешно.

    Пробовал connection_string вплоть до
    <connection_string>DSN=ClickhouseDict;UID=igor;PWD=;HOST=127.0.0.1;PORT=5432;DATABASE=clickhouse_dict</connection_string>

    DSN определен в ~/.odbc.ini, кликхаус запускается под тем же юзером.
  • @iamigor #3689 09:21 AM, 19 Dec 2016
    о, добавил DRIVER=/usr/local/lib/psqlodbcw.so туда же, теперь хотя бы ошибку "Connection:Not applicable" пишет %)
  • @shirolimit #3690 09:36 AM, 19 Dec 2016
    Попробуйте lazy load у словарей отключить, тогда он при старте будет пытаться загрузить словари и в лог ошибки сыпать.
    Подключал ODBC справочник. Конфиги похожи на ваши.
  • @shirolimit #3691 09:41 AM, 19 Dec 2016
    В DSN указывал только драйвер. Остальные параметры в connection_string. Но это из-за особенностей драйвера, скорее всего.
  • @iamigor #3692 10:10 AM, 19 Dec 2016
    Ну lazyload сыпет теми же ошибками, что и при попытке вызова функций dictGet.

    но похоже, это уже не проблема КХ, а че-то в связке unixodbc <-> psqlodbc <-> postgresql косячит. надо в убунте будет проверить.

    Спасибо в любом случае )
  • https://t.me/clickhouse_ru
    @ssemiokhin #3693 10:17 AM, 19 Dec 2016
    Как я делал с постгресным драйвером:
    sudo apt-get install -y unixodbc
    sudo apt-get install -y odbcinst
    sudo apt-get install -y odbc-postgresql

    В /etc/odbc.ini:
    [DEFAULT]
    Driver = myconnection

    [myconnection]
    Description = PostgreSQL connection to norma
    Driver = PostgreSQL Unicode
    Database = norma
    Servername = 10.... (твой хост)
    UserName = uname
    Password = pwd
    Port = 5432
    Protocol = 9.3
    ReadOnly = No
    RowVersioning = No
    ShowSystemTables = No
    ConnSettings =

    <dictionary>
    <name>table_name</name>
    <source>
    <odbc>
    <table>postgresql_table</table>
    <connection_string>DSN=myconnection</connection_string> <!— может потребоваться UID=norma;PWD=norma;, но по идее не должно —->
    </odbc>
    </source>
    <lifetime>
    <min>300</min>
    <max>360</max>
    </lifetime>
    <layout>
    <flat/>
    </layout>
    <structure>
    <id>
    <name>id</name>
    </id>
    <attribute>
    <name>some_column</name>
    <type>Int32</type>
    <null_value>-1</null_value>
    </attribute>
    ...
    </structure>
    </dictionary>
  • https://t.me/clickhouse_ru
    @ssemiokhin #3694 10:18 AM, 19 Dec 2016
    Так все взлетало без проблем
  • @dr_gavrikov #3695 11:07 AM, 19 Dec 2016
    Коллеги, может быть уже обсуждалось, а можно ли через jdbcTemplate.update некоторый параметр поставить null, чтобы это заинсертить в КХ
  • @dr_gavrikov #3696 11:07 AM, 19 Dec 2016
    или функция нужна какая-то обязательная, а то пишет Code: 48, e.displayText() = DB::Exception: NULL literals are not implemented yet: (at row 1), e.what() = DB::Exception
  • @dr_gavrikov #3697 11:08 AM, 19 Dec 2016
    хотя сделать, что если float32 равно 0, то ничего не добавляется, чтобы место сэкономить
  • @Komzpa #3698 11:13 AM, 19 Dec 2016
    в кликхаусе же нет нуллов?
  • https://t.me/clickhouse_ru
    @etkee #3699 11:13 AM, 19 Dec 2016
    пока нету
  • @iamigor #3700 11:14 AM, 19 Dec 2016
    с некоторых пор есть (не в стабильной версии), но такие себе
    там какая-то проблема в jdbc-драйвере вроде была с этим связанная. клиент пихает нуллы, а драйвер пытается их же и пробросить
  • @dr_gavrikov #3701 11:15 AM, 19 Dec 2016
    ок
  • Место с помощью NULL не сэкономится.
  • @dr_gavrikov #3703 12:43 PM, 19 Dec 2016
    а ну тогда все проще)
  • @dr_gavrikov #3704 12:43 PM, 19 Dec 2016
    спасибо
  • @dr_gavrikov #3705 12:43 PM, 19 Dec 2016
    и париться не буду
  • https://t.me/clickhouse_ru
    @maxim_starov #3706 12:48 PM, 19 Dec 2016
    Joined.
  • https://t.me/clickhouse_ru
    @diehertz #3707 01:31 PM, 19 Dec 2016
    Joined.
  • https://t.me/clickhouse_ru
    @nikitosiusis #3708 01:38 PM, 19 Dec 2016
    а чем вы мониторите кликхаус?
  • https://t.me/clickhouse_ru
    @maxim_starov #3709 01:56 PM, 19 Dec 2016
    Всем привет! У нас на одном из серверов в логах ошибка:
  • https://t.me/clickhouse_ru
    @maxim_starov #3710 01:57 PM, 19 Dec 2016
    DistributedSessions.Distributed.DirectoryMonitor: Code: 32, e.displayText() = DB::Exception: Attempt to read after eof, e.what() = DB::Exception, Stack trace:

    0. clickhouse-server(StackTrace::StackTrace()+0xe) [0xfd8d0e]
    1. clickhouse-server(DB::Exception::Exception(std::string const&, int)+0x1e) [0xf9c69e]
    2. clickhouse-server(DB::throwReadAfterEOF()+0x3a) [0xf9c86a]
    3. clickhouse-server(DB::StorageDistributed::DirectoryMonitor::processFile(std::string const&)+0x7c9) [0x23f4759]
    4. clickhouse-server(DB::StorageDistributed::DirectoryMonitor::run()+0x15d) [0x23f501d]
    5. clickhouse-server(execute_native_thread_routine+0x20) [0x32a3300]
    6. /lib/x86_64-linux-gnu/libpthread.so.0(+0x8184) [0x7ff7579c6184]
    7. /lib/x86_64-linux-gnu/libc.so.6(clone+0x6d) [0x7ff756fe137d]
  • https://t.me/clickhouse_ru
    @maxim_starov #3711 01:57 PM, 19 Dec 2016
    На остальных все норм. Как нам побороть эту ошибку?
  • @milovidov_an #3712 01:58 PM, 19 Dec 2016
    Заканчивалось место на диске?
  • Есть встроенная поддержка Graphite для отправки метрик, а также экспортеры в Prometheus, munin и куда-то ещё.
  • Зайти в директорию этой Distributed-таблицы: /opt/clickhouse/database/table/. Найти там первый (обрезанный) файл и перенести его куда-нибудь оттуда.
  • https://t.me/clickhouse_ru
    а для жаглера нет?:)
  • @milovidov_an #3716 02:04 PM, 19 Dec 2016
    Для Жаглера спроси у наших, например, у velom@.
  • https://t.me/clickhouse_ru
    @maxim_starov #3717 02:05 PM, 19 Dec 2016
    Alexey Как определить обрезанный файл?
  • @milovidov_an #3718 02:05 PM, 19 Dec 2016
    Это первый по номеру. Все файлы отправляются по порядку.
  • https://t.me/clickhouse_ru
    @Manatskov #3719 02:12 PM, 19 Dec 2016
    А не подскажете, насколько много данных за раз можно слать POST-запросом по HTTP API ClickHouse?
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #3719 #3720 02:16 PM, 19 Dec 2016
    сколько угодно
  • https://t.me/clickhouse_ru
    @rnbondarenko #3721 02:33 PM, 19 Dec 2016
    Раздел руководства "Производительность при вставке данных."
    » Данные рекомендуется вставлять пачками не менее 1000 строк или не более одного запроса в секунду.

    Подскажите, эти рекомендации относятся к таблице или целиком ко всему инстанцу clh?
  • https://t.me/clickhouse_ru
    @ssemiokhin #3722 02:38 PM, 19 Dec 2016
    Такой вопрос: хочется и чтобы данные реплицировались, и чтобы при вставке одинаковых строк данные не дублировались и оставался один экземпляр. Нет ли какого-нибудь незадокументированного ReplicatedReplacingMergeTree-движка?) И можно ли такого как-нибудь достичь в принципе?
  • @iamigor #3723 02:40 PM, 19 Dec 2016
    ахахах
  • https://t.me/clickhouse_ru
    @ssemiokhin #3725 02:42 PM, 19 Dec 2016
    Рили лол))
    Сейчас посмотрю, работает ли :D
  • @iamigor #3726 02:42 PM, 19 Dec 2016
    вообще этого можно достичь еще с помощью временной (промежуточной) таблицы. сначала залить туда данные, потом сделать INSERT INTO table SELECT * FROM temp_table WHERE id NOT IN (SELECT id FROM table)
  • @iamigor #3727 02:43 PM, 19 Dec 2016
    это будет работать, но если в один момент гарантированно не начнутся из двух мест литься данные
  • @iamigor #3728 02:44 PM, 19 Dec 2016
    (хотя, в таком случае можно создавать таблицы с рандомными именами)
  • https://t.me/clickhouse_ru
    @ssemiokhin #3729 02:47 PM, 19 Dec 2016
    Работает корректно)
  • https://t.me/clickhouse_ru
    @ssemiokhin #3730 02:48 PM, 19 Dec 2016
    Вот ребята скромные, делают всякие крутости, но не рассказывают об этом на каждом углу)
    Следующий вопрос: насколько это стабильно и как скажется на производительности?
  • https://t.me/clickhouse_ru
    @ssemiokhin ↶ Reply to #3726 #3731 02:50 PM, 19 Dec 2016
    К сожалению, совсем не прод вариант, хотелось бы вот как ReplicatedReplacingMergeTree)
  • @iamigor #3732 02:50 PM, 19 Dec 2016
    replcaingmergetree не документирован, насколько я помню, как раз потому что не очень оптимизирован
  • @iamigor #3733 02:50 PM, 19 Dec 2016
    надо с FINAL делать селекты, а так они становятся в разы медленнее
  • https://t.me/clickhouse_ru
    @ssemiokhin ↶ Reply to #3733 #3735 02:53 PM, 19 Dec 2016
    а зачем нужен FINAL? Вроде как и без него работает корректно
  • @iamigor #3736 02:54 PM, 19 Dec 2016
    хм, я могу ошибаться, извините
    там данные схлопываются при мерже, а он может происходить не сразу
  • https://t.me/clickhouse_ru
    @diehertz #3737 02:55 PM, 19 Dec 2016
    Да, по-моему так
  • https://t.me/clickhouse_ru
    @diehertz #3738 02:55 PM, 19 Dec 2016
    final просит доделать все мерджи
  • https://t.me/clickhouse_ru
    @ssemiokhin #3739 02:57 PM, 19 Dec 2016
    Спасибо!
    Мержи происходят по крону на постоянной основе, поэтому в случае, если вставка нерегулярная, нельзя просто подождать и затем делать обычные запросы, да?
  • @iamigor #3740 02:58 PM, 19 Dec 2016
    эээ
    > мержи происходят по крону
    вы отдельно из крона дергаете optimize table что ли?
  • @iamigor #3741 02:58 PM, 19 Dec 2016
    "мержи", которые имеются в виду - это внутренний процесс склейки файлов-блоков
  • https://t.me/clickhouse_ru
    @ssemiokhin #3742 02:59 PM, 19 Dec 2016
    Не не, в принципе же так устроено, нет?
  • https://t.me/clickhouse_ru
    @ssemiokhin #3743 02:59 PM, 19 Dec 2016
    Да, я про них и говорю
  • https://t.me/clickhouse_ru
    @ssemiokhin #3744 02:59 PM, 19 Dec 2016
    Если они происходят только при вставке, а потом никаких склеек нет, то вариант с "подождать" в принципе должен работать нормально
  • https://t.me/clickhouse_ru
    @Manatskov #3745 03:03 PM, 19 Dec 2016
    А этот ReplacingMergeTree не мержится автоматически? Только по FINAL или OPTIMIZE?
  • @iamigor #3746 03:04 PM, 19 Dec 2016
    автоматически мерджится, но по-моему таки не обязательно сразу после вставки
  • https://t.me/clickhouse_ru
    @Manatskov #3747 03:04 PM, 19 Dec 2016
    А разве нельзя, как и с CollapsingMergeTree _сразу_ после вставки делать запросы, используя sign?
  • https://t.me/clickhouse_ru
    @Manatskov #3748 03:04 PM, 19 Dec 2016
    Просто не очень понятно, в чём Replacing хуже Collapsing в итоге
  • https://t.me/clickhouse_ru
    @Manatskov #3749 03:05 PM, 19 Dec 2016
    Или collapsing всегда мержится перед запросом?
  • https://t.me/clickhouse_ru
    @Manatskov #3750 03:09 PM, 19 Dec 2016
    Просто Replacing было бы очень соблазнительно использовать, если я правильно понимаю как он работает. Поскольку для Collapsing желательно использовать отдельный внешний KV storage, а в Replacing получается, что старые строки просто заменяются на новые
  • @iamigor #3751 03:12 PM, 19 Dec 2016
    не заменяются, добавляются новые. просто там либо столбец версии добавляется (аналогично sign в collapsing merge tree), либо берется последняя строка с таким же PK

    ну в смысле заменяются, но после мерджа! (так же, как коллапсинг)
  • https://t.me/clickhouse_ru
    @alexanderzaitsev #3752 03:13 PM, 19 Dec 2016
    Кстати, а при any inner join выбирается последняя версия или произвольная?
  • Рекомендации относятся к таблице.
    Но при этом на весь инстанс тоже желательно не сильно частые INSERT-ы делать. Может быть, в районе десятков пачек в секунду...
  • Нет, потому что слияния разных кусков делаются с разной частотой. Так, мелкие куски сливаются вместе часто, большие редко (до времён порядка месяца). Очень большие куски (по-умолчанию, 100 GB) вообще не сливаются. Строки с одним ключом могут оказаться в двух больших кусках.
  • @VitalVas #3755 03:31 PM, 19 Dec 2016
    мне от интересно, возможно ли быстро слить с influxdb в CH данные за год метрик несколько десяток машин (данных там на ~20гб).....
  • Выбирается первая попавшаяся. Какая будет первой попавшейся - трудно сказать, так как это зависит от распределения работы по потокам.
  • https://t.me/clickhouse_ru
    @ssemiokhin ↶ Reply to #3754 #3757 03:33 PM, 19 Dec 2016
    Блин, жалко, ненадежный вариант, конечно, да... Алексей, я так понимаю, никаких производительных путей обхода кроме варианта, предложенного Игорем, с временной таблицей нет?
  • @iamigor ↶ Reply to #3755 #3758 03:34 PM, 19 Dec 2016
    у меня 20 гб логов с объектами json парсятся питончиком и заливаются в КХ где-то за час-полтора (шесть потоков, mbpr 15")
    не инфлюкс, конечно, но мало ли
  • @VitalVas ↶ Reply to #3758 #3759 03:35 PM, 19 Dec 2016
    инфлюкс сильно втыкает при массовых выборках..... :(
  • Нет. Стоит иметь ввиду, что вариант Игоря работает так: при каждой вставке делается full scan таблицы. Часто это неприемлимо. Может подойти только для маленьких объёмов.
  • @iamigor #3761 03:40 PM, 19 Dec 2016
    ну кстати я избежал full scan'а (если я правильно понял), делая
    SELECT min(timestamp), max(timestamp) FROM temp_table

    а потом делая
    INSERT INTO table SELECT .. FROM temp_table WHERE id NOT IN (SELECT id FROM table WHERE date BETWEEN toDate(<min_timestamp>) AND toDate(<max_timestamp>))
  • @iamigor #3762 03:40 PM, 19 Dec 2016
    т.е. он не берет id по всей таблице, ибо там за месяцы-года может реально дофига данных накопиться, что в 10 гб не уместится
  • @iamigor #3763 03:40 PM, 19 Dec 2016
    а по конкретным дате-времени
  • https://t.me/clickhouse_ru
    @ssemiokhin ↶ Reply to #3760 #3764 03:41 PM, 19 Dec 2016
    Хорошо, а если мы закладываемся, что дубли могут быть, но хочется хотя бы уменьшить занимаемое место на диске, т.е. чтобы хотя бы часть (я так понимаю это большая) схлопывалась и у нас есть 1 час на мерж (выгрузка происходит ночью), является ли такой вариант боевым или все таки не стоит?
  • @iamigor #3765 03:41 PM, 19 Dec 2016
    канеш, это не отменяет того, что могут затесаться одинаковые id в случае с разными датами
  • https://t.me/clickhouse_ru
    @ssemiokhin #3766 03:42 PM, 19 Dec 2016
    Таблица большая, 60 млрд. и каждую неделю выгружается по 150-160 млн.
  • @iamigor #3767 03:43 PM, 19 Dec 2016
    а выгружаются по порядку, хронологически?
    может прокатить фильтр по дате
  • @iamigor #3768 03:44 PM, 19 Dec 2016
    и timestamp'у, если он в индексе прям за датой стоит, или близко к ней (но опять же, могу ошибаться)
  • https://t.me/clickhouse_ru
    Алексей, спасибо!
  • @iamigor #3770 03:45 PM, 19 Dec 2016
    но да, признаю, объемы у меня небольшие, где-то 5-10кк строк в сутки
  • После нескольких быстрых мержей, дублей уже будет мало.
  • https://t.me/clickhouse_ru
    @alexanderzaitsev #3772 03:54 PM, 19 Dec 2016
    Мои 5 коп. Если данные грузятся пакетами, а обычно так и бывает, то назначайте идентификатор пакета и проверяйте, что он уже загружен (не id отдельной записи, а id всего пакета). Накладные расходы невелики. Дополнительно можно ограничить по дате. Это подходит для больших таблиц (условно -- фактов). Для небольших, проверка уникальности id недорога, и можно на всякий случай делать иногда optimize, если загрузка может происходить с разных серверов.
  • https://t.me/clickhouse_ru
    @ssemiokhin ↶ Reply to #3771 #3773 03:55 PM, 19 Dec 2016
    Отлично, т.е. при фильтровать я планирую это дело все равно DISTINCT-ом для полного устранения дублей (если из-за этого не будет сильно просидать производительность), а это будет чисто в качестве очистки места.
    Алексей, а репликация будет происходит корректно? Я так понимаю, будет все равно некоторое расхождение
  • https://t.me/clickhouse_ru
    @ssemiokhin ↶ Reply to #3772 #3774 03:55 PM, 19 Dec 2016
    Спасибо, поиграюсь с разными вариантами
  • https://t.me/clickhouse_ru
    @ssemiokhin #3775 03:56 PM, 19 Dec 2016
    Посмотрю, как это отразится на времени выгрузки на нормальных объемах
  • Не понял насчёт расхождений. Репликация асинхронная и в заданный момент времени на реплике может не быть некоторых только что вставленных на другую реплику данных. При этом, через некоторое время после вставки, на всех репликах будут одинаковые данные.
  • https://t.me/clickhouse_ru
    @ssemiokhin #3777 04:00 PM, 19 Dec 2016
    Что-то меня переклинило, решил, что на оригинале и реплике слияния будут происходить независимо..
    Ок, всем спасибо!
  • @milovidov_an #3778 04:00 PM, 19 Dec 2016
    Слияния координируются и происходят одинаковым образом. Данные на репликах будут одинаковы побайтово.
  • @VitalVas #3779 04:15 PM, 19 Dec 2016
    планирую писать в кластер CH около 20к значений в секунду на 6 серверах (3 шарда 2 реплики в 2 датацентрах)
    собственно вопрос - потянет ли http интерфейс такую нагрузку, если писатся будет пачками раз в секунду(константа) на всех нодах?
    и потянет ли рост нагрузки в 10х?
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #3779 #3780 04:22 PM, 19 Dec 2016
    если пачками, то и 20к и 200к - не очень много.
  • https://t.me/clickhouse_ru
    @soundbit #3781 07:06 PM, 19 Dec 2016
    Joined.
  • https://t.me/clickhouse_ru
    @devall #3782 07:42 PM, 19 Dec 2016
    Joined.
  • 20 December 2016 (35 messages)
  • https://t.me/clickhouse_ru
    @SLASH_CyberPunk #3783 10:06 AM, 20 Dec 2016
    Масштабирование ClickHouse, управление миграциями и отправка запросов из PHP в кластер

    В предыдущей статье мы поделились своим опытом внедрения и использования СУБД ClickHouse в компании СМИ2. В текущей статье мы затронем вопросы масштабирования, к...

  • @iamigor #3784 10:07 AM, 20 Dec 2016
    Кстати, с сегодняшнего дня по пятое января в clickhouse-client будет пасхалка :3
  • https://t.me/clickhouse_ru
    @SLASH_CyberPunk #3785 10:09 AM, 20 Dec 2016
    будет не верно считать? чтобы народ отдыхал в НГ? 😁
  • @iamigor #3786 10:09 AM, 20 Dec 2016
    тоже хотел пошутить, что она грохнет все ваши продакшн серваки, но я не настолько злой! (как и команда разработчиков)
  • @garikanet ↶ Reply to #3783 #3787 10:12 AM, 20 Dec 2016
    Ответьте пожалуйста на опрос) мне важно мнение сообщества
  • https://t.me/clickhouse_ru
    @SLASH_CyberPunk #3788 10:14 AM, 20 Dec 2016
    я пока не готов отвечать, т.к. под мои критерии кликхаус пока не подходит, но я очень надеюсь, что когда-нибудь я смогу им пользоваться в полной мере
  • https://t.me/clickhouse_ru
    @the_real_jkee #3789 10:31 AM, 20 Dec 2016
    Игорь, спасибо за статью!
  • https://t.me/clickhouse_ru
    @the_real_jkee #3790 10:31 AM, 20 Dec 2016
    Не читал, но одобряю :)
  • https://t.me/clickhouse_ru
    @the_real_jkee #3791 10:31 AM, 20 Dec 2016
    Ещё не читал, позже
  • https://t.me/clickhouse_ru
    @alexanderzaitsev #3792 10:38 AM, 20 Dec 2016
    Игорь, статья хорошая и полезная, хотя тема не полностью раскрыта. В частности, по нашему опыту репликация между датацентрами требует более аккуратного подхода, особенно если пинг между датацентрами не очень хороший. Насчет PHP ничего сказать не могу кроме того, что удивляюсь его долгожительству )
  • https://t.me/clickhouse_ru
    @alexanderzaitsev #3793 10:40 AM, 20 Dec 2016
    Вообще, я бы эту статью разбил на две, но это уже поздно, наверное. Первая -- про масштабирование и конфигурация, а вторая -- про PHP утилиты
  • https://t.me/clickhouse_ru
    @freeseacher #3794 10:44 AM, 20 Dec 2016
    РНР большими буквами вроде как Ремотно Наладочные Работы ?
  • @garikanet ↶ Reply to #3794 #3795 10:49 AM, 20 Dec 2016
    personal home page
  • @garikanet ↶ Reply to #3793 #3796 10:56 AM, 20 Dec 2016
    да тоже думали над этим, разбить или вообще не писать про php оставить только sql - create table. что бы "не отвечать" а почему вы используете .х.. и не сделали на Asm или просто на C))) но хотелось поделится идеей и тулом с сообществом и статья больше была написана с "конца"
  • https://t.me/clickhouse_ru
    @alexanderzaitsev #3797 10:57 AM, 20 Dec 2016
    Да я без наезда, полно сайтов на PHP и людей, которые им пользуются, поэтому утилиты, наверняка, полезные.
  • @garikanet ↶ Reply to #3792 #3798 10:57 AM, 20 Dec 2016
    а это нам только предстоит , и я как раз помня о вашем опыте буду "пытать" )
  • @garikanet ↶ Reply to #3797 #3799 10:58 AM, 20 Dec 2016
    это я не лично к вам) это я про сообщество хабра
  • @shinebell #3800 10:58 AM, 20 Dec 2016
    О, супер! Новая статья :)
  • @garikanet #3801 10:59 AM, 20 Dec 2016
    мне и в нашей команде тяжело объяснить почему php , а не c, java,python
  • @garikanet #3802 11:00 AM, 20 Dec 2016
    используем все)
  • @garikanet ↶ Reply to #3791 #3803 11:01 AM, 20 Dec 2016
    Проголосуй - хоть за велосепедостроение) буду рад любой инфе
  • https://t.me/clickhouse_ru
    @alexanderzaitsev #3804 11:02 AM, 20 Dec 2016
    На самом деле, это может быть примером того, что пользоваться СlickHouse -- это совсем не rocket science. Так что оно даже, может, и хорошо, что на php, а не на чем-нибудь более сложном
  • https://t.me/clickhouse_ru
    @alexanderzaitsev #3805 11:03 AM, 20 Dec 2016
    Хотя статья типа "ML-инфраструктура на Хаскеле и ClickHouse" смотрелась бы более внушительно :)
  • @garikanet #3806 11:14 AM, 20 Dec 2016
    > Alexander
    На самом деле, это может быть примером того, что пользоваться СlickHouse -- это совсем не rocket science. Так что оно даже, может, и хорошо, что на php, а не на чем-нибудь более сложном

    Как и обсуждали на митапе - нужно просто и с "комиксами" -> чтобы технология пошла в массы
    А как оказалось писать простым языком - это ооооочень тяжелый труд )
    Знаю что детские учебники пишут академики.... я им не завидую )
  • @dr_gavrikov #3807 11:17 AM, 20 Dec 2016
    « Если вы не можете объяснить это простыми словами, вы не до конца это понимаете »
    Альберт Эйнштейн
  • https://t.me/clickhouse_ru
    @alexanderzaitsev #3808 11:18 AM, 20 Dec 2016
    Я как-то делал доклад на тему "BigData для чайников". Очень помогает искать простые слова и аналогии :)
  • https://t.me/clickhouse_ru
    @aensidhe ↶ Reply to #3807 #3809 11:23 AM, 20 Dec 2016
    > The quote "An alleged scientific discovery has no merit unless it can be explained to a barmaid." is popularly attributed to Lord Rutherford of Nelson in as stated in Einstein, the Man and His Achievement By G. J. Whitrow, Dover Press 1973. Einstein is unlikely to have said it since his theory of relativity was very abstract and based on sophisticated mathematics.
  • @dr_gavrikov #3810 11:34 AM, 20 Dec 2016
    интересно
  • @dr_gavrikov #3811 11:37 AM, 20 Dec 2016
    С тех пор, как математики взялись за Теорию относительности, я сам перестал ее понимать. (А. Эйнштейн)

    P. S. чтобы не разводить холивар, пишу публикации по теории графов, всегда стараюсь объяснить на пальцах все, без заумных слов
  • @dr_gavrikov #3812 11:37 AM, 20 Dec 2016
    даже если это читают только люди в ВА
  • @dr_gavrikov #3813 11:37 AM, 20 Dec 2016
    ВАК
  • https://t.me/clickhouse_ru
    @aensidhe #3814 11:37 AM, 20 Dec 2016
    :) 👍
  • @garikanet #3815 07:58 PM, 20 Dec 2016
    Подскажите, а что нибудь появилось новое для построения дашбордов с графиками помимо reDash, pentaho под CH, у меня сейчас задача проверить много гипотез на данных - самый простой вариант это корреляции на графиках искать, а с jupyter я не очень дружу )
  • @milovidov_an #3816 08:00 PM, 20 Dec 2016
    Может это? https://groups.google.com/forum/#!topic/clickhouse/9T9sQAJiPEM
    Сам не проверял.
  • @garikanet #3817 08:05 PM, 20 Dec 2016
    👍Спасибо! попробую
  • 21 December 2016 (24 messages)
  • https://t.me/clickhouse_ru
    @den_crane #3818 01:50 AM, 21 Dec 2016
    Joined.
  • @iamigor #3819 08:08 AM, 21 Dec 2016
    а можно как-нибудь посчитать соотношение/процентики от общего количества сгруппированных данных?

    типа того:
    SELECT date, count() AS cnt, ??? AS percentage FROM table GROUP BY date

    date count percentage
    2016-12-18 153 18%
    2016-12-19 241 28%
    2016-12-20 295 34%
    2016-12-21 169 20%
    ---
    total: 858 100%
  • @iamigor #3820 08:46 AM, 21 Dec 2016
    получилось как-то так

    SELECT
    a_date,
    a_cnt,
    round(a_cnt / total, 2) AS percentage
    FROM
    (
    SELECT
    groupArray(date) AS a_date,
    groupArray(cnt) AS a_cnt,
    sum(cnt) AS total
    FROM
    (
    SELECT
    date,
    count() AS cnt
    FROM table
    WHERE date >= '2016-12-18'
    GROUP BY date
    )
    )
    ARRAY JOIN a_date, a_cnt
  • https://t.me/clickhouse_ru
    @ssemiokhin #3821 09:36 AM, 21 Dec 2016
    Ребяты, привет!
    Такой очень очень простой кейс: 8 тачек с таблицей в 22 млрд.
    Длинный первичный ключ, т.к. ReplacingMergeTree используется для схлопывания дублей.
    Запрос формата:
    select col1, col2, ..., colN from table where id='214352512532';
    где id - первое поле первичного ключа.

    Запросы идут в распределенную таблицу, в которую заливались записи с ключом шардирования cityHash64(id).
    Гранулярность индекса 8192

    Вот лог на тачке без мержа (читай вспомогательной):
    ########################
    ...WHERE bar_code = '61226094020347' FORMAT JSON
    2016.12.21 09:27:27.902808 [ 28 ] <Debug> merge.matreshka_merge_half_year (SelectExecutor): Key condition: (column 0 in ['61226094020347', '61226094020347'])
    2016.12.21 09:27:27.902827 [ 28 ] <Debug> merge.matreshka_merge_half_year (SelectExecutor): Date condition: unknown
    2016.12.21 09:27:27.903474 [ 28 ] <Debug> merge.matreshka_merge_half_year (SelectExecutor): Selected 24 parts by date, 24 parts by key, 24 marks to read from 24 ranges
    2016.12.21 09:27:27.905881 [ 28 ] <Trace> merge.matreshka_merge_half_year (SelectExecutor): Reading approx. 196608 rows
    2016.12.21 09:27:27.905954 [ 28 ] <Trace> InterpreterSelectQuery: FetchColumns -> WithMergeableState
    2016.12.21 09:27:27.907098 [ 28 ] <Debug> executeQuery: Query pipeline:
    Union
    Expression × 20
    Filter
    MergeTreeThread

    2016.12.21 09:27:30.091786 [ 2227 ] <Debug> MergeTreeReadPool: Slow read, event №1: read 52003 bytes in 2.065 sec., 0.025 MB/s.
    2016.12.21 09:27:31.284043 [ 2228 ] <Debug> MergeTreeReadPool: Slow read, event №2: read 23942 bytes in 1.013 sec., 0.024 MB/s.
    2016.12.21 09:27:31.284077 [ 2228 ] <Debug> MergeTreeReadPool: Will lower number of threads to 19
    2016.12.21 09:27:31.852538 [ 28 ] <Trace> UnionBlockInputStream: Waiting for threads to finish
    2016.12.21 09:27:31.852754 [ 28 ] <Trace> UnionBlockInputStream: Waited for threads to finish
    2016.12.21 09:27:31.852869 [ 28 ] <Information> executeQuery: Read 196608 rows, 41.72 MiB in 3.951 sec., 49756 rows/sec., 10.56 MiB/sec.
    2016.12.21 09:27:31.852900 [ 28 ] <Trace> UnionBlockInputStream: Waiting for threads to finish
    2016.12.21 09:27:31.852909 [ 28 ] <Trace> UnionBlockInputStream: Waited for threads to finish
    2016.12.21 09:27:31.853147 [ 28 ] <Debug> MemoryTracker: Peak memory usage (for query): 197.51 MiB.
    2016.12.21 09:27:31.853166 [ 28 ] <Debug> MemoryTracker: Peak memory usage (for user): 197.51 MiB.
    2016.12.21 09:27:31.853174 [ 28 ] <Debug> MemoryTracker: Peak memory usage (total): 197.51 MiB.
    2016.12.21 09:27:31.853281 [ 28 ] <Information> TCPHandler: Processed in 3.953 sec.
    ########################

    Вот лог на тачке с распредделенной табличкой, где мерж происходит:
    ########################
    WHERE bar_code = '61226094020347' FORMAT JSON
    2016.12.21 09:27:27.895044 [ 4876 ] <Debug> merge.matreshka_merge_half_year (SelectExecutor): Key condition: (column 0 in ['61226094020347', '61226094020347'])
    2016.12.21 09:27:27.895103 [ 4876 ] <Debug> merge.matreshka_merge_half_year (SelectExecutor): Date condition: unknown
    2016.12.21 09:27:27.895825 [ 4876 ] <Debug> merge.matreshka_merge_half_year (SelectExecutor): Selected 19 parts by date, 19 parts by key, 20 marks to read from 19 ranges
    2016.12.21 09:27:27.897585 [ 4876 ] <Trace> merge.matreshka_merge_half_year (SelectExecutor): Reading approx. 163840 rows
    2016.12.21 09:27:27.897640 [ 4876 ] <Trace> InterpreterSelectQuery: FetchColumns -> WithMergeableState
    2016.12.21 09:27:27.898588 [ 4876 ] <Trace> InterpreterSelectQuery: WithMergeableState -> Complete
    2016.12.21 09:27:27.899785 [ 4876 ] <Debug> executeQuery: Query pipeline:
    Union
    Expression
    Materializing
    Union
    Expression × 19
    Filter
    MergeTreeThread
    Expression × 7
    Remote
  • https://t.me/clickhouse_ru
    @ssemiokhin #3822 09:36 AM, 21 Dec 2016
    2016.12.21 09:27:31.422427 [ 28 ] <Trace> ODBCDictionarySource: SELECT code, value FROM operand_type;
    2016.12.21 09:27:35.270417 [ 4876 ] <Trace> UnionBlockInputStream: Waiting for threads to finish
    2016.12.21 09:27:35.270492 [ 4876 ] <Trace> UnionBlockInputStream: Waited for threads to finish
    2016.12.21 09:27:35.270500 [ 4876 ] <Trace> UnionBlockInputStream: Waiting for threads to finish
    2016.12.21 09:27:35.270663 [ 4876 ] <Trace> UnionBlockInputStream: Waited for threads to finish
    2016.12.21 09:27:35.270721 [ 4876 ] <Information> executeQuery: Read 1624972 rows, 343.17 MiB in 7.377 sec., 220271 rows/sec., 46.52 MiB/sec.
    2016.12.21 09:27:35.270742 [ 4876 ] <Trace> UnionBlockInputStream: Waiting for threads to finish
    2016.12.21 09:27:35.270748 [ 4876 ] <Trace> UnionBlockInputStream: Waited for threads to finish
    2016.12.21 09:27:35.270757 [ 4876 ] <Trace> UnionBlockInputStream: Waiting for threads to finish
    2016.12.21 09:27:35.270763 [ 4876 ] <Trace> UnionBlockInputStream: Waited for threads to finish
    2016.12.21 09:27:35.270928 [ 4876 ] <Debug> MemoryTracker: Peak memory usage (for query): 118.77 MiB.
    2016.12.21 09:27:35.270940 [ 4876 ] <Debug> MemoryTracker: Peak memory usage (for user): 118.77 MiB.
    2016.12.21 09:27:35.270944 [ 4876 ] <Debug> MemoryTracker: Peak memory usage (total): 118.77 MiB.
    ########################

    По времени выполнени то в жар, то в холод. Иногда прям очень резво, а иногда 15 сек. переваривает.
    Основной вопрос: что за: Slow read, event №1: read 52003 bytes in 2.065 sec., 0.025 MB/s. и как этого избежать? Что можно/нужно подкрутить?
  • https://t.me/clickhouse_ru
    @maxim_starov #3823 12:33 PM, 21 Dec 2016
    Добрый день, после не предвиденного отключения питания в логах clickHouse мы видим много ошибок: Considering to remove broken part "путь до партиции" because it's impossible to repair.

    Можем ли мы восстановить битые патриции.
    Спасибо, жду ответа.
  • https://t.me/clickhouse_ru
    @nikki_ola #3824 12:52 PM, 21 Dec 2016
    Joined.
  • https://t.me/clickhouse_ru
    отцепить и перезалить ?
  • Битые партиции скачаются сами с реплики.
    Если сервер не стартует (говорит, что кусков слишком много), то пропишите флаг force_restore_data, как в
    https://clickhouse.yandex/reference_ru.html#%D0%92%D0%BE%D1%81%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%20%D1%81%D0%B1%D0%BE%D1%8F
    Документация ClickHouse | Документация ClickHouse

    ClickHouse is a fast open-source column-oriented database management system that allows generating analytical data reports in real-time using SQL queries

  • Взять для рассмотрения один сервер, на котором можно проверять производительность запроса локально. Выполнять запрос и смотреть в iostat -d -m -x 1. Для коротких запросов можно попробовать уменьшить число потоков.
  • @VitalVas #3828 01:32 PM, 21 Dec 2016
    возиожно ли запустить ch на серванте без sse4_2?
  • https://t.me/clickhouse_ru
    @pipopolam #3829 01:35 PM, 21 Dec 2016
    не надо на серванте, возьмите лучше платяной шкаф
  • @VitalVas #3830 01:36 PM, 21 Dec 2016
    %)
  • @VitalVas #3831 01:38 PM, 21 Dec 2016
    я как-то провтыкал, что у меня несколько серверов без этой инструкции....
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #3831 #3833 05:38 PM, 21 Dec 2016
    Оно на каких то действиях просто начнет падать с sigill
  • https://t.me/clickhouse_ru
    @Civiloid #3834 05:38 PM, 21 Dec 2016
    Тут думаю кто нибудь даже скажет на какиих
  • Только если пересобирать.
  • У вас полноценный сервер без sse4_2 или виртуалка?
  • @VitalVas ↶ Reply to #3836 #3837 07:09 PM, 21 Dec 2016
    полноценный
  • @VitalVas #3838 07:09 PM, 21 Dec 2016
    Model name: AMD Opteron(tm) Processor 4170 HE
    Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm 3dnowext 3dnow constant_tsc rep_good nopl nonstop_tsc extd_apicid pni monitor cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt nodeid_msr hw_pstate vmmcall npt lbrv svm_lock nrip_save pausefilter
  • @milovidov_an #3839 07:12 PM, 21 Dec 2016
    Нетривиально, так как нужно редактировать код. В коде всего несколько (примерно три штуки) мест, где SSE 4.2 используется явно. Везде предоставлена альтернатива под дефайнами, но условия для неё просто смотрят на x86_64 или ARM, а не на версию SSE.
  • @VitalVas #3840 07:16 PM, 21 Dec 2016
    В пятницу попробую пнуть dcops - может дадут машинки на e5
    Не хочеться извращаться с кодом...
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #3839 #3841 08:08 PM, 21 Dec 2016
    Амдшный ссе4а может иметь нужные инструкции
  • @milovidov_an #3842 08:10 PM, 21 Dec 2016
    Только чуть-чуть.
  • 22 December 2016 (25 messages)
  • @artmkin #3843 07:57 AM, 22 Dec 2016
    Joined.
  • @podshumok #3844 10:05 AM, 22 Dec 2016
    У rawbinary формата (для записи) есть колонко-ориентированный вариант?
  • @podshumok #3845 10:13 AM, 22 Dec 2016
    Типа записал 5000 значений для первого столбца, потом 5000 для второго, и так далее
  • @dr_gavrikov #3846 11:37 AM, 22 Dec 2016
    Коллеги, всем привет. Скажите, а надо какими-то специальными параметрами настраивать ClickHouseProperties или ClickHouseDataSource чтобы можно было делать из джава кода INSERT в 50000 - 200000 строк через jdbsTemplate?

    У меня приложение берет данных из одного хранилища, обрабатывает их и статистику планируется складывать в КХ. Для этого используется jdbsTemplate спринговый, в который в качества парамерта конструктора передается clickHouseDataSource, то есть jdbcTemplate = new JdbcTemplate(clickHouseDataSource)

    Но когда я делаю INSERT в котором достаточно много VALUES, а именно больше 4000, то у меня вываливается ошибка

    ; nested exception is ru.yandex.clickhouse.except.ClickHouseUnknownException: ClickHouse exception, code: 1002, host: localhost, port: 8123; Code: 36, e.displayText() = DB::Exception: Element of set in IN or VALUES is not a constant expression: toDateTime: (at row 54715), e.what() = DB::Exception

    Caused by: ru.yandex.clickhouse.except.ClickHouseUnknownException: ClickHouse exception, code: 1002, host: localhost, port: 8123; Code: 36, e.displayText() = DB::Exception: Element of set in IN or VALUES is not a constant expression: toDateTime: (at row 54715), e.what() = DB::Exception

    Caused by: java.lang.Throwable: Code: 36, e.displayText() = DB::Exception: Element of set in IN or VALUES is not a constant expression: toDateTime: (at row 54715), e.what() = DB::Exception
  • @dr_gavrikov #3847 11:37 AM, 22 Dec 2016
    ну если сокращают размер инсерта меньше 3000, то инсерт проходит
  • @dr_gavrikov #3848 11:38 AM, 22 Dec 2016
    выводил в файл данные. при возникновении exception, такое ощущение, что если там инсертиться 5000 строк, то из них выводится 4700 строк примерно, а остальных 300 просто нет
  • @dr_gavrikov #3849 11:39 AM, 22 Dec 2016
    при приобразование toDate похоже туда null передается и вот такой exception вылетает
  • @dr_gavrikov #3850 11:39 AM, 22 Dec 2016
    хочется ускорить приложение, чтобы делать жирные инсерты, тем более в доке рекомендуется инсертить от 50000 до 200000 строк
  • @renatko #3851 11:43 AM, 22 Dec 2016
    кто как хранит "онлайн" данные? нужно получать колличество событий за последние 5 минут с разными разрезами.
    Есть мысль создавать на каждую минуту по одной таблице и делать к ним запросы используя движок Merge(). Старые таблицы удалять спустя 5 минут.
    Это норм или есть варианты лучше?
  • https://t.me/clickhouse_ru
    @alexanderzaitsev #3852 11:47 AM, 22 Dec 2016
    А зачем удалять? Храните все, удалить всегда успеете
  • @podshumok #3853 11:53 AM, 22 Dec 2016
    Дык место
  • @iamigor #3854 11:56 AM, 22 Dec 2016
    это ж сколько событий о___О
  • @renatko #3855 11:57 AM, 22 Dec 2016
    > А зачем удалять?
    эти же данные есть в другой таблице, этот функционал хотелось бы вынести на отдельный сервер/кластер. Не хочется излишне юзать диск.
    интуитивно думается, что если данные не удалять, то это будет сложнее для кликхауса с запросами вида datetime > now() - 60*5. Возможно это не так.
  • @dr_gavrikov #3856 11:58 AM, 22 Dec 2016
    попробую использоват batchUpdate, может получится
  • https://t.me/clickhouse_ru
    @etkee ↶ Reply to #3846 #3857 12:01 PM, 22 Dec 2016
    Вас не смущает текст ошибки? Там не в размере батча дело.
  • @dr_gavrikov #3858 12:02 PM, 22 Dec 2016
    просто когда размер меньше 3000, такой ошибки не возникает, а когда больше 4000, то он делает toDate от null
  • @dr_gavrikov #3859 12:03 PM, 22 Dec 2016
    но мне подсказали, что я просто генерю здоровый SQL запрос делая sqlQuery.append("(?, ?, ?, toDate(?), toDateTime(?), ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
  • @dr_gavrikov #3860 12:03 PM, 22 Dec 2016
    а потом делая jdbcTemplate.update(sqlQuery.toString(), objects);
  • @dr_gavrikov #3861 12:03 PM, 22 Dec 2016
    а есть batchUpdate в jdbsTemplate для этих целей
  • @dr_gavrikov #3862 12:03 PM, 22 Dec 2016
    я просто про эту функция не знал
  • @dr_gavrikov #3863 12:04 PM, 22 Dec 2016
    сча попробую через нее сделать, во всяком случае на том проекте, где так пишут, все нормально работает
  • @dr_gavrikov #3864 12:04 PM, 22 Dec 2016
    и вообше писать такие большие SQL очень плохая практика
  • @dr_gavrikov #3865 12:52 PM, 22 Dec 2016
    Кстати, а сколько времени КликХаус создавали? Или это конфеленциальная информация?)
  • @iamigor #3866 01:06 PM, 22 Dec 2016
    ну, в репозитории первые коммиты датированы вроде 2009 годом
  • @garikanet ↶ Reply to #3851 #3867 04:16 PM, 22 Dec 2016
    Пробовал две схемы, обе на SummingMergeTree - нам нужно хранить данные о показах статей - ahash; на сайтах - site_id, по разным разрезам group_name - но разрезов конечное число и не большое до 15. Т/е нам нужны только факты показа, без детальной информации типа user_agent,ip... Главное realtime чтение нужных элементов c небольшой задержкой от текущего момента времени.

    1) Вариант когда колонки были минутами
    PK(event_date,event_time, site_id, ahash, group_name) и колоники view_00,views_01,.... views_59
    event_time - пишется время события с округлением в час
    2) Вариант когда колонки группы
    PK(event_date,event_time, site_id, ahash) и колоники group_1....group_14,group_15
    event_time - пишется время события без секунд

    Оба варианта были хороши по записе, но используем второй вариант - т/к оказался самым удобным для чтения.
    Попробуйте сперва представить чтение данных, а потом уже сделаете запись)

    Таким методом мы обсчитываем показ всех статей практически всех СМИ в РФ за последние 2 минуты/час/сутки.
  • 23 December 2016 (31 messages)
  • https://t.me/clickhouse_ru
    @vasya_toropov #3868 09:17 AM, 23 Dec 2016
    Привет. Подскажите как лечить такую ошибку при вставке:
    DB::Exception: Not found column lastcount in block. There are only columns: Date, TimeStamp, NormalizedUrl, NormalizedParameters, HttpStatus, ReceivedBytes, SentBytes, UpstreamTime, AuthSid, PortalUserId, TraceId, group10, group50, group100, group500, group1000, group2000, groupGt2000, stattime.
  • @iamigor #3869 09:18 AM, 23 Dec 2016
    как вставляете?
  • https://t.me/clickhouse_ru
    @vasya_toropov #3870 09:18 AM, 23 Dec 2016
    INSERT INTO ??? FORMAT VALUES
  • @iamigor #3871 09:19 AM, 23 Dec 2016
    и столбец lastcount в "???" не перечислен?)
    это вью или таблица?
  • https://t.me/clickhouse_ru
    @vasya_toropov #3872 09:19 AM, 23 Dec 2016
    INSERT INTO db.Table_2016_12_23 (Date, TimeStamp, NormalizedUrl, NormalizedParameters, HttpStatus, ReceivedBytes, SentBytes, UpstreamTime, AuthSid, PortalUserId, TraceId) FORMAT Values ('2016-12-23', '2016-12-23 05:03:08', 'someurl', '=-', 302, 1029, 566, 0.33, '', '', 'someid')
  • @iamigor #3873 09:20 AM, 23 Dec 2016
    хмм
    а есть вьюхи, которые смотрят на эту таблицу, у которых есть столбец lastcount?
  • @iamigor #3874 09:20 AM, 23 Dec 2016
    а то очень похоже на вот этот баг https://github.com/yandex/ClickHouse/issues/127
    Problem with INSERT if having a VIEW with subqueries & AS keyword #127

    That&#39;s a really strange one! When you create a view (let&#39;s call it test_stats) that has a subquery with multiple tables (test1 and test2) combined using UNION ALL clause, and the first tabl...

  • https://t.me/clickhouse_ru
    @vasya_toropov #3875 09:20 AM, 23 Dec 2016
    Есть Merge-табличка над кучей таблиц. В том числе и над этой.
  • https://t.me/clickhouse_ru
    @vasya_toropov #3876 09:24 AM, 23 Dec 2016
    Хотя и вьюха есть с таким столбцом. Видимо тот же баг. Спасибо.
  • @dr_gavrikov #3877 12:47 PM, 23 Dec 2016
    Коллеги, всем привет.

    А есть в КХ конструкция

    WITH q AS (SELECT dummy FROM DUAL)
    SELECT dummy FROM q;

    как в Оракле или аналог?
  • @dr_gavrikov #3878 12:47 PM, 23 Dec 2016
    судя по доке WITH нет
  • @iamigor #3879 12:48 PM, 23 Dec 2016
    а что делает FROM DUAL?
  • https://t.me/clickhouse_ru
    @SLASH_CyberPunk #3880 12:48 PM, 23 Dec 2016
    Нет еще, но вроде обещали
  • https://t.me/clickhouse_ru
    Таблица с одним значением одного столбца
  • https://t.me/clickhouse_ru
    @SLASH_CyberPunk #3882 12:49 PM, 23 Dec 2016
    Используется в основном как заглушка синтаксиса, при селекте константы
  • @iamigor #3884 12:51 PM, 23 Dec 2016
    а это совсем не то, да? (извините если что)
    SELECT dummy FROM (SELECT 'X' AS dummy);
  • @justedro #3885 12:52 PM, 23 Dec 2016
    так нельзя селектить дважды из орезультата одного поздапроса
  • @justedro #3886 12:53 PM, 23 Dec 2016
    with q as (select dummy from dual)
    select dummy
    from q
    join q using (dummy);
  • @iamigor #3887 12:53 PM, 23 Dec 2016
    ааа, понял, спасибо!
  • @justedro #3888 12:54 PM, 23 Dec 2016
    велкам
  • @f1yegor #3889 03:31 PM, 23 Dec 2016
    кто-нибудь делает JOIN более двух таблиц? у меня получается очень громоздко и неудобно, т.к. нет поддержки больше 2JOIN и алиасов
  • @iamigor #3890 03:37 PM, 23 Dec 2016
    да, я делал
    выглядит ужасно, но по-другому никак пока
  • https://t.me/clickhouse_ru
    @AndreevDm #3891 03:39 PM, 23 Dec 2016
    По возможности использовать внешние словари
  • @iamigor #3892 03:41 PM, 23 Dec 2016
    вот да
    и может целесообразен вариант пихать всё в одну таблицу с новым полем а-ля type, а потом делать по этой таблице GROUP BY и anyIf/countIf/sumIf с фильтром по type
  • @iamigor ↶ Reply to #3499 #3893 03:43 PM, 23 Dec 2016
    судя по этому слайду, можно ждать через год
  • @f1yegor #3894 03:44 PM, 23 Dec 2016
    у нас отношение one-to-many, пока наверно не будем пихать в одну таблицу
  • https://t.me/clickhouse_ru
    @AndreevDm #3895 03:45 PM, 23 Dec 2016
    есть массивы
  • https://t.me/clickhouse_ru
    @orantius ↶ Reply to #3893 #3896 03:45 PM, 23 Dec 2016
    common table expressions в списке нет, печаль.
  • @milovidov_an #3897 04:50 PM, 23 Dec 2016
    Опубликовано видео 21 ноября: https://events.yandex.ru/lib/talks/4351/
  • https://t.me/clickhouse_ru
    @elvis_live ↶ Reply to #3897 #3898 04:51 PM, 23 Dec 2016
    Крутяк
  • 24 December 2016 (1 messages)
  • https://t.me/clickhouse_ru
    @SandAnar #3899 10:19 PM, 24 Dec 2016
    Joined.
  • 26 December 2016 (7 messages)
  • https://t.me/clickhouse_ru
    @maxim_starov #3900 08:21 AM, 26 Dec 2016
    Добрый день,
    Скажите как ClickHouse использует директорию /opt/cores. Хотим разместить данные ClickHouse в другой директории, не в /opt.
    Можно ли изменить расположение cores из конфига, или это лучше сделать ссылкой?
  • @varyhin #3902 10:37 AM, 26 Dec 2016
    Joined.
  • https://t.me/clickhouse_ru
    @proller ↶ Reply to #3900 #3903 10:46 AM, 26 Dec 2016
    в конфиге core_path
  • https://t.me/clickhouse_ru
    @zabralsebe #3904 11:35 AM, 26 Dec 2016
    Joined.
  • @dxist #3905 03:47 PM, 26 Dec 2016
    Joined.
  • https://t.me/clickhouse_ru
    @Shegloff #3906 04:53 PM, 26 Dec 2016
    Joined.
  • https://t.me/clickhouse_ru
    @proller #3907 09:42 PM, 26 Dec 2016
    А используется когда clickhouse упал чтоб отложить core dump
  • 27 December 2016 (37 messages)
  • https://t.me/clickhouse_ru
    @ngseer #3908 04:19 AM, 27 Dec 2016
    Joined.
  • @dima_g #3909 07:05 AM, 27 Dec 2016
    Joined.
  • @dr_gavrikov #3910 03:31 PM, 27 Dec 2016
    Всем привет, а в КХ есть функция row_number()
  • @dr_gavrikov #3911 03:31 PM, 27 Dec 2016
    ?
  • @dr_gavrikov #3912 03:31 PM, 27 Dec 2016
    ну или аналог какой-нибудь
  • @artmkin ↶ Reply to #3910 #3913 03:35 PM, 27 Dec 2016
    А какую задачу хочется решить?
  • @dr_gavrikov #3914 03:37 PM, 27 Dec 2016
    вообще есть таблица, у строках которой есть id и date_time (дата_добавления) ну и другие параметры

    для каждого ID надо вывести последнюю версию строки
  • https://t.me/clickhouse_ru
    @orantius #3915 03:37 PM, 27 Dec 2016
    argMax
  • https://t.me/clickhouse_ru
    @orantius #3916 03:44 PM, 27 Dec 2016
    если вопросов нет, то либо все понятно, либо ничего не понятно. если надо, могу более развернуто пояснить.
  • @dr_gavrikov #3917 03:44 PM, 27 Dec 2016
    воистину работает, спасибо
  • https://t.me/clickhouse_ru
    @orantius #3918 03:44 PM, 27 Dec 2016
    а, ок.
  • @dr_gavrikov #3919 03:44 PM, 27 Dec 2016
    да я открыл Доку, посмотрел эту функцию и запилил запрос, все сошлось
  • @dr_gavrikov #3920 03:44 PM, 27 Dec 2016
    спасибо большое)
  • @dr_gavrikov #3921 03:44 PM, 27 Dec 2016
    классно на самом деле, а я сидел голову ломал
  • @dr_gavrikov #3922 03:45 PM, 27 Dec 2016
    КликХаус - сила
  • https://t.me/clickhouse_ru
    @nikita_nmk #3923 03:49 PM, 27 Dec 2016
    Joined.
  • @iamigor #3924 04:02 PM, 27 Dec 2016
    есть rowNumberInAllBlocks
  • @f1yegor #3925 04:07 PM, 27 Dec 2016
    "Happy New Year" сказал clickhousr на проде
  • https://t.me/clickhouse_ru
    @nikitosiusis #3926 04:13 PM, 27 Dec 2016
    В корке?
  • https://t.me/clickhouse_ru
    @orantius #3927 04:27 PM, 27 Dec 2016
    в консоли
  • @f1yegor #3928 06:13 PM, 27 Dec 2016
    сегодня запросы на проде начали проседать по таймауту(60 сек). посмотрел query_log - все отрабатывает быстро, есть подозрение что клиент не успевает забирать результаты, надо бы действительно стримить их. насколько я понимаю Accept-Encoding: gzip же не будет работать?
  • @iamigor #3929 06:14 PM, 27 Dec 2016
    будет, только там вроде надо передать флажок один
  • @iamigor #3930 06:14 PM, 27 Dec 2016
    enable_http_compression=1
  • @iamigor #3931 06:14 PM, 27 Dec 2016
    вот тест
  • @iamigor #3932 06:14 PM, 27 Dec 2016
    ClickHouse/ClickHouse

    ClickHouse is a free analytic DBMS for big data. Contribute to ClickHouse/ClickHouse development by creating an account on GitHub.

  • @f1yegor #3933 06:14 PM, 27 Dec 2016
    с этим флажком отдастся какой-то кастомный lz, которые не прочитать, если я ничего не путаю
  • @iamigor #3934 06:15 PM, 27 Dec 2016
    ненене, это компрессор метрики какой-то свой, наверное
  • @iamigor #3935 06:15 PM, 27 Dec 2016
    если enable_http_compression, то там честный gzip или deflate (по умолчанию вроде deflate, не уверен, честно)
  • @iamigor #3936 06:16 PM, 27 Dec 2016
    а кастомный lz это ты, наверное, про

    > вам придётся использовать для работы с ним специальную программу compressor (%%sudo apt-get install compressor-metrika-yandex%%). Если вы указали в URL compress=1, то сервер будет сжимать отправляемые вам данные.
  • @iamigor #3937 06:16 PM, 27 Dec 2016
    просто enable_http_compression в документации никак не упоминается, только в тестах
  • @f1yegor #3938 06:16 PM, 27 Dec 2016
    поставлю галочку - добавлю в документацию)
  • @iamigor #3939 06:18 PM, 27 Dec 2016
    причем на моих данных это сжатие прям сильно улучшило все, и время ответа, и размер. странно, что по умолчанию не работает
  • @f1yegor #3940 06:19 PM, 27 Dec 2016
    да, я бы предполагал что должно без всяких флажков работать, просто через headers. странно сделали
  • @iamigor #3941 06:19 PM, 27 Dec 2016
    но кстати, если данных мало, то запрос дольше выполняется, ЕМНИП
  • @iamigor #3942 06:20 PM, 27 Dec 2016
    ну, т.е., SELECT count() делать с хттп-сжатием глупо, например %)
  • @f1yegor #3943 06:21 PM, 27 Dec 2016
    а вы, Игорь, не в яндексе же работаете?
  • @iamigor #3944 06:22 PM, 27 Dec 2016
    я? неееет
  • 28 December 2016 (159 messages)
  • gzip всё-таки медленно жмёт (~30 МБ/сек/ядро при уровне сжатия 3, для типичного Intel ~2 GHz, если я правильно помню). Когда добавляли его поддержку, то у нас было много программ, которые уже ходили на сервер с заголовком Accept-Encoding: gzip. И если бы сделали, чтобы он сжимал по-умолчанию, то это привело бы к увеличению потребления CPU при релизе. Поэтому сделали флаг, чтобы в момент релиза ничего резко не поменялось.

    На самом деле зависит от сети. Для 1 GBit как раз под вопросом, стоит ли использовать gzip или нет (зависит от коэффициента сжатия). На 10 GBit точно не gzip.

    Если Accept-Encoding: gzip, deflate, то сервер использует gzip.

    На будущее, можно добавить Accept-Encoding: br (для Brotli). Также коллега сейчас делает, чтобы использовалась библиотека zlib-ng вместо zlib - станет лучше, но только чуть-чуть.
  • https://t.me/clickhouse_ru
    @nikitosiusis #3946 06:00 AM, 28 Dec 2016
    а разве бротли быстро жмет на лету? я думал он как зопфли, чтоб заранее пожатые файлики класть
  • @milovidov_an #3947 06:01 AM, 28 Dec 2016
    Более-менее быстро. Почти как zstd.
    Для хороших уровней сжатия (как gzip 3..6) получается в районе 200..600 МБ/сек.
  • https://t.me/clickhouse_ru
    @alexanderzaitsev #3948 06:02 AM, 28 Dec 2016
    brotli жмет быстрее всего, что мы пробовали. Включая zstd
  • https://t.me/clickhouse_ru
    @alexanderzaitsev #3949 06:04 AM, 28 Dec 2016
    (впрочем, zstd мы пробовали год назад, а brotli -- совсем недавно)
  • https://t.me/clickhouse_ru
    @nikitosiusis #3950 06:05 AM, 28 Dec 2016
    а снаппи там всякие не?
  • https://t.me/clickhouse_ru
    @nikitosiusis #3951 06:05 AM, 28 Dec 2016
    которыми монги по дефолту жмутся
  • @milovidov_an #3952 06:05 AM, 28 Dec 2016
    https://quixdb.github.io/squash-benchmark/

    - только сразу при загрузке переключите на Xeon, а dataset на enwik8 или urls.10K.
  • https://t.me/clickhouse_ru
    @alexanderzaitsev #3953 06:05 AM, 28 Dec 2016
    снаппи жмет быстро, но плохо
  • @milovidov_an #3954 06:09 AM, 28 Dec 2016
    Правда там страница наполовину устарела :(
    Нет уровней для zstd. Зато есть уровни для lz4, которые сбивают с толку. Значит лучше туда не смотреть.
  • @milovidov_an #3955 08:41 AM, 28 Dec 2016
    По поводу видео митапа 14 декабря. Видео готово, я его посмотрел - там всё Ок. Но мне тут коллеги советуют, что исходя из формата этой встречи (встреча была ограниченной, не для всех желающих), видео выкладывать не нужно - чтобы сохранить смысл такого формата встреч. (При этом видео с первой встречи 21 ноября уже выложили.)

    Что думаете? Есть какие-нибудь аргументы по этому поводу?
  • @Valeriy_Bykov #3956 08:42 AM, 28 Dec 2016
    Я его как раз начал смотреть вчера, поэтому думаю, что его стоит оставить )
  • @Valeriy_Bykov #3957 08:43 AM, 28 Dec 2016
    А, сорри, это от 21-го ноября смотрю.
  • @milovidov_an #3958 08:43 AM, 28 Dec 2016
    Его точно оставим :) Речь только про второй митап.
  • @justedro #3959 08:48 AM, 28 Dec 2016
    А что, если желающие посмотреть не из ДС? :)
  • @milovidov_an #3960 08:49 AM, 28 Dec 2016
    В ДС2, надеюсь, приедем и ещё вживую что-нибудь интересное расскажем. И в ДС3 (правда не знаю, в какой).
  • @iamigor #3961 08:49 AM, 28 Dec 2016
    кстати, хорошая идея, но не факт, что легко сходу реализуема - опубликовать видео приватной ссылкой и ссылку разослать контрибьютерам
  • @justedro #3962 08:51 AM, 28 Dec 2016
    Ну ДС3=Екат ящетаю, я б даже туда смотался по такому поводу.
  • @garikanet #3963 08:57 AM, 28 Dec 2016
    > @milovidov_an
    видео выкладывать не нужно - чтобы сохранить смысл такого формата встреч.

    Есть смысл - не выкладывать чтобы простимулировать стать "избранным" ) С другой стороны там много "мебели" и "интеграторов" )))
  • https://t.me/clickhouse_ru
    @abashkeev #3964 09:03 AM, 28 Dec 2016
    В следующий раз мы надеемся сделать встречу более интересной и надеюсь участников (контрибьютеров) будет больше :)
  • @f1yegor #3965 09:13 AM, 28 Dec 2016
    Я за видео, т.к. нету возможности побывать вживую
  • https://t.me/clickhouse_ru
    @SandAnar #3966 10:00 AM, 28 Dec 2016
    Колеги, не все и всегда могут на митап явиться. Будет обидно пропускать обсуждаемую информацию. Может всё же будет общедоступным видео от таких встреч?
  • https://t.me/clickhouse_ru
    @le087 #3967 10:01 AM, 28 Dec 2016
    ага, показываешь паспорт, что не из ДС, и тебе дается уникальная секретная одноразовая ссылка на видео, которое уничтожается автоматом на твоем лептопе после первого просмотра... XD
  • @iamigor ↶ Reply to #3967 #3968 10:01 AM, 28 Dec 2016
    вот!
  • https://t.me/clickhouse_ru
    @SandAnar #3969 10:04 AM, 28 Dec 2016
    Что за дичь?
    Т.е. есть желание организации закрытого комьюнити по CH или всё же открытого?
    Для популиризации платформы наверное всё же чем больше публичной информации с рассказами, обсуждениями - тем лучше, ИМХО.
    Но это как уж авторы задумали.
    Или тут комьюнити только на Мск рассчитано, кто всегда сможет заглянуть на встречу? Тогда хоть вебинары организуйте
  • https://t.me/clickhouse_ru
    @abashkeev #3970 10:07 AM, 28 Dec 2016
    Да ладно вам. Все более менее крупные встречи будут с видео. Небольшие могут быть и без (это проще организовать). Видел с большого митапа тут было, с того что был в декабре - нет, мы как раз смотрим и думаем выкладывать ли.
  • Материалы митапов контрибьюторов имеет смысл закрывать от публичного доступа чтобы не вводить публику в заблуждение о фичах и роадмэпе продукта. На публичных митапах в презентациях и выступления стараются ничего лишнего не обещать и недостоверной информацией не делиться. А на встречах контрибьюторов "кишки" могут обсуждаться без купюр.
  • @roman_kolchin #3972 10:10 AM, 28 Dec 2016
    Ну то есть тут играют роль маркетинговые и PR сообраджения.
  • @roman_kolchin #3973 10:13 AM, 28 Dec 2016
    На публичных встречах тоже отвечают на все вопросы, включая "кишки", но там это обычно идет в кулуарах и не попадает в видео или презентационные материалы — то есть кому надо задает вопрос и получает ответ, а на публику идет ровно то, что разработчики хотели сообщить. И это нормально — правильный маркетинг и для открытого продукта имеет значение.
  • https://t.me/clickhouse_ru
    @SandAnar #3974 10:13 AM, 28 Dec 2016
    тогда надо действительно как-то делить встречи и доступ разделить.
    Через ту же Г+ группу для разработчиков иметь возможность видеть больше материалов с техническими обсуждениями, что будет недоступно просто в паблике.
    Это конечно решается в первую очередь через агенду при организации встреч - кто ЦА и кому будут доступны материялы. Для каких-то материялов строго "ватермарк", что это не публичная оферта, а лишь идеи внутри комьюнити разработки и деплоя
  • https://t.me/clickhouse_ru
    @SandAnar ↶ Reply to #3973 #3975 10:14 AM, 28 Dec 2016
    согласен
  • https://t.me/clickhouse_ru
    @alexanderzaitsev #3976 10:42 AM, 28 Dec 2016
    Я не думаю, что ограниченность приглашения надо связывать с ограниченностью доступа к видео. На Олимпиаду мало кого приглашают, но все смотрят. Ограничивать следует только в том случае, если была информация "не для всех". Насколько я помню, ничего секретного на митапе не было. Хотя не уверен насчет выступления товарища из Люксофта, имеет смысл у них спросить.
  • @Komzpa #3977 10:45 AM, 28 Dec 2016
    обычные правила - или "предупредить всех докладчиков, что запись будет публична", или "спросить каждого докладчика перед выкладыванием"
  • Как-то сразу захотелось посмотреть запись выступления товарища из Люксофта.... 😆
  • @roman_kolchin #3979 10:51 AM, 28 Dec 2016
    Если серьезно, то как-то геморно всех опрашивать или отсматривать материал постфактум, что решить выкладывать или нет. Имхо.
  • https://t.me/clickhouse_ru
    @alexanderzaitsev #3980 10:53 AM, 28 Dec 2016
    там не для разглашения может быть только название клиента
  • https://t.me/clickhouse_ru
    @alexanderzaitsev #3981 10:56 AM, 28 Dec 2016
    Но мне кажется, что сам факт видео съемки подразумевает, что видео не для служебного пользования.
  • https://t.me/clickhouse_ru
    @alexanderzaitsev #3982 10:56 AM, 28 Dec 2016
    Но решать Яндексу
  • @garikanet #3983 11:16 AM, 28 Dec 2016
    Подскажите а может существует другая документация по функциям в CH ? Не в таком формате ?
    Для чего: в gui хочу сделать подсказки по ф-циям пример https://monosnap.com/file/YCgjbBwBhxMBOhi3VbNbdSWUAdyRnR
    но в лоб регулярку не получилось написать чтобы распарсить текущую документацию.
    Идеал : "functionName"=>"desc" , но xml/yml/json тоже пойдет )
    Screenshot "СМИ2 clickhouse 🔊 2016-12-28 14-14-01.jpg"

    Monosnap — the best tool to take & share your screenshots..

  • @iamigor #3984 11:18 AM, 28 Dec 2016
    мне в голову приходят разве что исходники, и в тех вряд ли можно будет добиться желаемого регуляркой
  • @iamigor #3985 11:19 AM, 28 Dec 2016
    ну да, даже на том же примере с uniqHLL12 в исходниках документации вообще нету %)
  • @iamigor #3986 11:20 AM, 28 Dec 2016
    на примере FunctionsArray.h есть

    /** Функции по работе с массивами:
    *
    * array(с1, с2, ...) - создать массив из констант.
    * arrayElement(arr, i) - получить элемент массива по индексу.
    * Индекс начинается с 1. Также индекс может быть отрицательным - тогда он считается с конца массива.
    * has(arr, x) - есть ли в массиве элемент x.
    * indexOf(arr, x) - возвращает индекс элемента x (начиная с 1), если он есть в массиве, или 0, если его нет.
    * arrayEnumerate(arr) - возаращает массив [1,2,3,..., length(arr)]
  • @iamigor #3987 11:21 AM, 28 Dec 2016
    но с учетом того, что комментарии надо будет переводить на английский, это еще менее стабильный способ
  • @iamigor #3988 11:21 AM, 28 Dec 2016
    могу вам помочь с унификацией описаний функций и всего такого
  • @garikanet #3989 11:22 AM, 28 Dec 2016
    угу, это я руками пример скопипастил из доки) остальные 1000 функции решил регуляркой ...
  • @iamigor #3990 11:23 AM, 28 Dec 2016
    гг. а я некоторое время назад регуляркой проходился по всем исходникам, чтобы найти функции, которых нет в документации, и добавлял их туда %))
  • @garikanet #3991 11:23 AM, 28 Dec 2016
    )))
  • @iamigor #3992 11:23 AM, 28 Dec 2016
    регэкспы - это прекрасно!
  • @garikanet #3993 11:24 AM, 28 Dec 2016
    select * from system.functions ?
  • @garikanet #3994 11:24 AM, 28 Dec 2016
    я так подгружаю в gui список - чтобы всегда был актуальный список исходя из сборки
  • @iamigor #3995 11:24 AM, 28 Dec 2016
    вот блин :(
  • @iamigor #3996 11:25 AM, 28 Dec 2016
    чё-т я совсем невнимательно содержимое system изучал
  • https://t.me/clickhouse_ru
    @SandAnar #3997 11:25 AM, 28 Dec 2016
    а документация не доксигеном сгенерирована?
  • @iamigor #3998 11:26 AM, 28 Dec 2016
    неа
  • @iamigor #3999 11:26 AM, 28 Dec 2016
    > Однострочные комментарии начинаются с трёх слешей: ///, многострочные - с /**. Такие комментарии считаются "документрующими". Замечание: такие комментарии могут использоваться для генерации документации с помощью Doxygen. Но, фактически, Doxygen не используется, так как для навигации по коду гораздо удобне использовать возможности IDE.
  • @iamigor #4000 11:27 AM, 28 Dec 2016
    вообще, в reference_*.html жесть какая-то происходит, там подключается какой-то шаблонизатор на JS, и если работает что-то типа NoScript или uMatrix, то документация не особо читабельна
  • @garikanet #4001 11:27 AM, 28 Dec 2016
    Ну там markdown + чуть чуть html
  • @iamigor #4002 11:29 AM, 28 Dec 2016
    и бывают неконсистентные моменты, типа, где-то <h3>, а где-то ===маркдаун===
  • @garikanet #4003 11:29 AM, 28 Dec 2016
    Или не марк - но формат прослеживается ==functionName==\nDescription...
  • @iamigor #4004 11:29 AM, 28 Dec 2016
    ну да, у маркдауна вроде #, тоже иногда путаюсь

    а, вот.

    // Генерация HTML по разметке, отдалённо напоминающей Wiki. Криво.
  • @iamigor #4005 11:30 AM, 28 Dec 2016
    вообще, если уж на то пошло, было бы наверное круто расширить system.functions, добавив столбцы с параметрами и описанием функции, например
  • @milovidov_an #4006 11:33 AM, 28 Dec 2016
    Да, было бы очень хорошо. И из этого можно генерировать документацию. Есть пара технических сложностей - чтобы более удобным образом (декларативно) задавать в коде сигнатуру функций. Если это сделать, то дальше будет проще.
  • @iamigor #4007 11:36 AM, 28 Dec 2016
    ой, а можно глупый вопрос? а в ближайшее время не планируется совершенствования clickhouse-client'а - то же самое автодополнение, например?
  • @milovidov_an #4008 11:41 AM, 28 Dec 2016
    В планах нет. Я об этом думал.

    Хотелось бы избавиться от библиотеки readline, так как она слишком тормозит при вставке больших запросов (вставить мегабайт из буфера обмена - сплошное мучение). В readline также очень трудно сделать подсветку синтаксиса по мере набора.

    Есть библиотека linenoise, но она даже не поддерживает UTF-8 - невозможно пользоваться. Есть патчи с поддержкой, но они тоже ужасно тормозят.

    Великолепно сделана подсветка синтаксиса и автодополнение в fish shell. Права вставка тоже тормозит.

    Есть нормальная библиотека вместо readline для Python. Использовать не получится.

    Задача не серьёзная, поэтому без сроков. Может быть можно сделать из чувтства прекрасного.
  • @iamigor #4009 11:41 AM, 28 Dec 2016
    > Есть нормальная библиотека вместо readline для Python.
    это которая, prompt_toolkit?
  • @milovidov_an #4010 11:42 AM, 28 Dec 2016
    Да, вроде так называется.
  • @iamigor #4011 11:42 AM, 28 Dec 2016
    я как раз на ней clickhouse-cli наваял
  • @iamigor #4012 11:42 AM, 28 Dec 2016
    она очень хорошая, да, но меня очень-очень расстраивает тем, что она вмешивается в перенос строк при line wrapping'е длинных запросов
  • @iamigor #4013 11:44 AM, 28 Dec 2016
    если копи-пастить из терминала SQL-запрос, а размер терминала не вмещает запрос по ширине, то в буфер обмена попадет нечто вроде:

    :) SELECT 1, 2, 3, 4, 5, 6, arrayJ
    oin(['1', '2', '3']);

    с \n после arrayJ
  • @iamigor #4014 11:44 AM, 28 Dec 2016
    причем этим страдают все софтины на ее основе - ipython, ptpython, pgcli, mycli и прочие
  • @iamigor #4015 11:45 AM, 28 Dec 2016
    ну ладно, спасибо, буду по мере возможности допиливать автодополнение тогда в ней. опыта с этим мало очень, никогда ничего подобного не писал )
  • https://t.me/clickhouse_ru
    @dvolodin #4016 11:46 AM, 28 Dec 2016
    подсветка и дополнение хорошо сделаны в ipython
  • @iamigor #4017 11:47 AM, 28 Dec 2016
    да, он с какой-то версии тоже, как и ptpython, перешел на prompt_toolkit
  • @iamigor #4018 11:47 AM, 28 Dec 2016
    если хотите, можете потыкать clickhouse-cli, но он правда очень-очень кривой, мне стыдно
  • @iamigor #4019 11:48 AM, 28 Dec 2016
    https://github.com/hatarist/clickhouse-cli

    поддержкой второго питончика не занимался еще
    GitHub - hatarist/clickhouse-cli: A third-party client for the Clickhouse DBMS server.

    A third-party client for the Clickhouse DBMS server. - GitHub - hatarist/clickhouse-cli: A third-party client for the Clickhouse DBMS server.

  • https://t.me/clickhouse_ru
    @dvolodin #4020 11:48 AM, 28 Dec 2016
    в принципе, для работы с данными можно использовать jupyter notebook
  • Я в нём запускал запрос SELECT 1 и меня всё устроило :)
  • @iamigor ↶ Reply to #4020 #4022 11:49 AM, 28 Dec 2016
    это еще чего, есть, например, superset - веб-морда, которая подключается к базе и позволяет с удобным интерфейсом гонять визуализации/агрегации данных.

    что-то вроде tableau или redash'а. причем кто-то написал драйвер для sqlalchemy
  • @iamigor ↶ Reply to #4021 #4023 11:49 AM, 28 Dec 2016
    спасибо на добром слове, но если бы SELECT 1'ом единым!
  • @garikanet #4024 12:04 PM, 28 Dec 2016
    SuperSet прикрутили к CH ?
  • @iamigor #4025 12:06 PM, 28 Dec 2016
    ну, мне сегодня удалось, правда, кхм, частично
  • @iamigor #4026 12:07 PM, 28 Dec 2016
    после установки sqlalchemy-clickhouse
  • @iamigor #4027 12:08 PM, 28 Dec 2016
    там, правда, на этапе агрегаций уже какие-то ошибки посыпались, точно не помню, но было бы странно ожидать другого от драйвера двухнедельной давности с одним коммитом)
  • @garikanet #4028 01:02 PM, 28 Dec 2016
    ну он полгода назад был очень очень глючным... но если его завести с druid он круто работал
  • Оффтопик: Подскажите, плиз, суперсет - это чисто смотрелка? там можно писать какие-то вычисления над данными, которые он бы транслировал на источник?
  • Просто в Tableau помимо визуализации свой мощный почти многомерный язык для математики, который абстрагирован от SQL
  • https://t.me/clickhouse_ru
    @nikita_nmk #4031 01:15 PM, 28 Dec 2016
    еще бы стоил не как самолет :)
  • @iamigor #4032 01:16 PM, 28 Dec 2016
    я сегодня впервые им воспользовался вообще и никогда не юзал ниче подобного, поэтому вряд ли подскажу, сорри :(

    там можно для любого столбца задать "a valid sql expression", в который будут преобразовываться данные из этого столбца
  • @iamigor #4033 01:16 PM, 28 Dec 2016
    и есть фильтрация/сортировка/группировка, но вроде больше ниче нет
  • @roman_kolchin #4034 01:17 PM, 28 Dec 2016
    А кто юзал, подскажите, там динамические обновляемые диаграммы как в kibana/grafana делать можно?
  • @garikanet #4035 01:17 PM, 28 Dec 2016
    Динамика, да есть
  • @garikanet #4036 01:17 PM, 28 Dec 2016
    Для druid , а как оно будет с CH - не знаю
  • Динамика — то есть подгрузка и обновление диаграммы без необходимости перерисоывания всего дашборда, да?
  • @iamigor #4038 01:18 PM, 28 Dec 2016
    посмотрел щас, есть refresh interval для дашборды, можно 10 сек минимум указать
  • @iamigor #4039 01:19 PM, 28 Dec 2016
    причем модули (слайсы? диаграммы? хрен знает как их назвать) обновляются независимо друг от друга
  • ну да, похоже, оно
  • @roman_kolchin #4041 01:20 PM, 28 Dec 2016
    спасибо
  • @iamigor #4042 01:20 PM, 28 Dec 2016
    ну, по крайней мере, анимация не одновременная :)))
  • @garikanet #4043 01:22 PM, 28 Dec 2016
    tableau + CH только в весии Professional можно запустить или в Public тоже можно подружить их ?
  • у паблика сходу не нашел список коннекторов
  • https://t.me/clickhouse_ru
    @SLASH_CyberPunk #4045 01:27 PM, 28 Dec 2016
    у паблика вообще почти нет коннекторов, кроме веба и локальных файлов
  • https://t.me/clickhouse_ru
    @SLASH_CyberPunk #4046 01:27 PM, 28 Dec 2016
    только если прослойку делать
  • @garikanet #4047 01:28 PM, 28 Dec 2016
    А прослойку через вот эту штуку http://tableau.github.io/webdataconnector/ ?
    Web Data Connector Home

    Connect to your web data from Tableau.

  • есть пруф, что он поддерживает "Web Data Connector" (https://github.com/tableau/webdataconnector)?
    GitHub - tableau/webdataconnector: Bring the data you care about into Tableau

    Bring the data you care about into Tableau. Contribute to tableau/webdataconnector development by creating an account on GitHub.

  • ага :)
  • @garikanet #4050 01:28 PM, 28 Dec 2016
    :))
  • @roman_kolchin #4051 01:28 PM, 28 Dec 2016
    Блин, черти в Tableau сделали Personal edition платной за 1К или она уже была платной?
  • https://t.me/clickhouse_ru
    я написал про веб
  • https://t.me/clickhouse_ru
    @schmel007 ↶ Reply to #4051 #4053 01:29 PM, 28 Dec 2016
    Была. Более того, она со второго года просит по 400 кажется зеленых
  • https://t.me/clickhouse_ru
    @nikita_nmk ↶ Reply to #4051 #4054 01:30 PM, 28 Dec 2016
    Personal была, и из Personal никуда не приконектишься. бесплатная это Public
  • веб - это же "Web Data Connector" (https://github.com/tableau/webdataconnector)?
    GitHub - tableau/webdataconnector: Bring the data you care about into Tableau

    Bring the data you care about into Tableau. Contribute to tableau/webdataconnector development by creating an account on GitHub.

  • Из Personal можно к "Web Data Connector" приконнектиться. Если на нем сделать прокси к КХ, то c КХ будет работать и Personal.
  • https://t.me/clickhouse_ru
    @nikita_nmk #4057 01:32 PM, 28 Dec 2016
    web data connector разве умеет запросы какие-то проксировать? он же вроде тупо данные отдает
  • https://t.me/clickhouse_ru
    @nikita_nmk #4058 01:32 PM, 28 Dec 2016
    ну типа как csv, а все остальнео уже сама tableau делает. мне всегда казалось, что так
  • Это API. С одной стороны он отдает данные в Tableau, а с другой запрашивает их по SQL у КХ. Это пока еще не сущестующий прокси, но архитектура должна быть именно такой.
  • Вот спека на интерфейс http://tableau.github.io/webdataconnector/docs/api_ref
    WDC API Reference

    Connect to your web data from Tableau.

  • @garikanet #4061 01:36 PM, 28 Dec 2016
    WDC Tutorial

    Connect to your web data from Tableau.

  • https://t.me/clickhouse_ru
    @nikita_nmk #4062 01:37 PM, 28 Dec 2016
    из этого примера я и сделал вывод, что все данные должны отдаться в tableau и он уже будет делать аггрегацию. я посмотрел elasticsearch-tableau-connector по скриншотам там такая же петрушка. т.е. сам запрос tablue в wdc прокинуть не может
  • Вот в этом весь вопрос ценности этого коннектора — можно ли через него запрашивать сразу агрегаты или нет.
  • @roman_kolchin #4064 01:39 PM, 28 Dec 2016
    Кто использует активно Tableu с мощными реализционками типа Vertica, скажите, оно умеет агрегаты запрашивать у источника, не пытаясь агрегировать самой?
  • https://t.me/clickhouse_ru
    @skoffer #4065 01:40 PM, 28 Dec 2016
    Умеет, но это зависит от коннектора, разумеется.
  • @roman_kolchin #4066 01:40 PM, 28 Dec 2016
    Вот с кубами MSSSAS/Essbase оно именно так и работает — транслирует в MDX свои запросы и получает в ответ готовые агрегаты.
  • https://t.me/clickhouse_ru
    @skoffer #4067 01:40 PM, 28 Dec 2016
    А с flat file, он полностью агрегирует на своей стороне, потому что у csv никаких движков в принципе нет.
  • Это понятно :)
  • https://t.me/clickhouse_ru
    @skoffer #4069 01:41 PM, 28 Dec 2016
    Поэтому, зависит от источника данных ~ коннектора.
  • Какие это ограничения накладывает? Например, продолжая тему кубов — при работе с кубами через MDX отключается 2/3 собственного языка Tableau. Но это не особо страшно, расчетные меры и новые мемберы измерений можно прямо в Tableau писать на MDX.
  • @roman_kolchin #4071 01:42 PM, 28 Dec 2016
    А как в случае с реляционками, которые умеют оттдавать агрегаты быстро, Tableau понимает, нужно ли просить агрегат или агрегировать самой?
  • https://t.me/clickhouse_ru
    @skoffer #4072 02:05 PM, 28 Dec 2016
    Если честно, то не помню.
    Обычно я пользовался Custom SQL и это решало все вопросы с тем на какой стороне происходит агрегация.
  • @knalx #4073 02:15 PM, 28 Dec 2016
    Joined.
  • https://t.me/clickhouse_ru
    @andreyppp #4074 04:56 PM, 28 Dec 2016
    Joined.
  • https://t.me/clickhouse_ru
    @nikita_nmk #4075 05:24 PM, 28 Dec 2016
    думал тут про tableau еще.. подумалось, что можно же еще написать fdw для постгреса, через какой-нибудь multicorn. правда как я понял multicorn пока не поддерживает aggregation pushdown, но это можно обойти с помощью созданием разных таблиц под разные запросы. зато условия в where будут работать честно и в tableau будут приезжать не все данные, а только нужные
  • https://t.me/clickhouse_ru
    @nikita_nmk #4076 05:24 PM, 28 Dec 2016
    mutlicorn это что бы fdw пистаь на питоне. ну по простому же
  • @roman_kolchin #4077 05:25 PM, 28 Dec 2016
    "Перезжаем на Yandex.ClickHouse" https://www.youtube.com/watch?v=tf38TPvwjJ4 / Если кто еще не видел, презентация Alexander Zaitsev с HighLoad'2016 про замену Вертики на КХ в компании LifeStreet Media, в которой работает Александр. #video #Y2016
    Александр Зайцев — Переезжаем на Yandex ClickHouse

    Подробнее о докладе: http://www.highload.ru/2016/abstracts/2297.html Подписаться на канал: https://goo.gl/EjIehg Сайт: https://habrahabr.ru Социальные сети: - FB: https://www.facebook.com/habrahabr.ru - VK: https://vk.com/habr - Twitter: https://twitter.com/habrahabr

  • Что это за технология? Вообще, как я понимаю, ключевая часть кун-фу КХ — это массивы и словари. Можно будет как-то их использование реализовать?
  • https://t.me/clickhouse_ru
    @nikita_nmk #4079 05:31 PM, 28 Dec 2016
    в постгресе ты можешь создать табличку, к который запросы будут идти через экстеншн (ну совсем по простому), multicorn это экстеншн на си, который позволяет писать экстеншены на питоне. ты описываешь какую-то табличку со всеми полями которые должны быть в результате, делаешь select field from tbl, тебе в питон обработчик приходит запрос, мол дай такие-то колонки с таким-то условием (ну после where), на основании этого ты идешь в CH, делаешь там какой угодно запрос и возвращаешь нужные колонки. group by как я понимаю в multicorn нет, но на разные колонки можно создать разные таблицы
  • Лексер и парсер чьи в этом случае? PG разбирает запрос, но реализацию каждой команды и функции SQL нужно самому писать?
  • https://t.me/clickhouse_ru
    @nikita_nmk #4081 05:34 PM, 28 Dec 2016
    я не настоящий сварщик, multicorn никогда не использовал. но у меня в голове я вижу это так, тебе в питон придет название таблицы, колонки которые спрашиваешь, и как сортировать. в зависимости от названия таблицы ты поставляешь нужны запрос с нужными колонками и нужным order by.
  • Эх, ну там же кроме селекта и ордера есть еще джойны и разные интересные групбаи.
  • https://t.me/clickhouse_ru
    @nikita_nmk #4083 05:35 PM, 28 Dec 2016
    да. но сам запрос который уходит в CH уже геенрится на основании названия таблицы
  • @roman_kolchin #4084 05:35 PM, 28 Dec 2016
    Кто делает join'ы и groupby'и? PG?
  • https://t.me/clickhouse_ru
    @nikita_nmk #4085 05:35 PM, 28 Dec 2016
    т.е. это как вьюха получается
  • @roman_kolchin #4086 05:35 PM, 28 Dec 2016
    Или экстеншен это должен делать?
  • https://t.me/clickhouse_ru
    @nikita_nmk #4087 05:35 PM, 28 Dec 2016
    тебе придется описать каждый вариант group by разной таблицей :)
  • @roman_kolchin #4088 05:36 PM, 28 Dec 2016
    Понятно.
  • @roman_kolchin #4089 05:36 PM, 28 Dec 2016
    Скучно :)
  • https://t.me/clickhouse_ru
    @nikita_nmk #4090 05:37 PM, 28 Dec 2016
    ну лучше чем csv :) по-моему или 10, или 9.6 постгрес умеют и join push down и всякое такое. но писать экстеншн уже надо будет на сях
  • https://t.me/clickhouse_ru
    @nikita_nmk #4091 05:37 PM, 28 Dec 2016
    mongodb, простите меня, делаала что-то подобное в своем коннектере для bi
  • @garikanet #4092 05:38 PM, 28 Dec 2016
    ну это же только для платной версии prof сработает ?
  • https://t.me/clickhouse_ru
    @nikita_nmk #4093 05:38 PM, 28 Dec 2016
    да, personal версия там какая-то совсем не о чем если честно
  • @garikanet #4094 05:42 PM, 28 Dec 2016
    я думаю потенциал CH только руками раскрыть можно) bi только примитивные вещи сможет

    как я понимаю это Аналитик Яндекса писал
    https://nbviewer.jupyter.org/github/miptgirl/attribution_modelling/blob/master/220volt_case.ipynb#Модели-аттрибуции

    Вопрос: такие "вещи" sql сразу в питоне пишутся внутри яндекса? т.е есть ли тулл для автокомплитов и подсказок ?
    Notebook on nbviewer

    Check out this Jupyter notebook!

  • https://t.me/clickhouse_ru
    @nikita_nmk #4095 05:53 PM, 28 Dec 2016
    какая-то крутая ссылка. откуда она? :)
  • @garikanet #4096 05:55 PM, 28 Dec 2016
    С конференции Imetrics
  • https://t.me/clickhouse_ru
    @kulachikova #4097 06:01 PM, 28 Dec 2016
    Это мы показывали в рамках мастер-класса по использованию нового Logs API и ClickHouse
  • https://t.me/clickhouse_ru
    @miptgirl #4098 06:17 PM, 28 Dec 2016
    Как автор notebook'a, отвечу :) Чаще всего аналитики пишут sql запросы прямо в python'e (обычно в jupyter'e) без подсказок и автокомплитов
  • @garikanet #4099 06:37 PM, 28 Dec 2016
    👏👍 а еще такие запросы в паблике есть?

    это очень хороший промо для CH, сразу видеть что он умеет. Когда поначалу читал документацию не сразу понимал как применить массивы/кортежи и все эти ф-ции . а тут увидел сложный запрос - как прозрел)
  • https://t.me/clickhouse_ru
    @SLASH_CyberPunk #4100 08:01 PM, 28 Dec 2016
    А ссылка умерла 😕
  • https://t.me/clickhouse_ru
    @SLASH_CyberPunk #4102 09:08 PM, 28 Dec 2016
    А вот эта работает
  • https://t.me/clickhouse_ru
    @feriat #4103 09:41 PM, 28 Dec 2016
    Можно я тоже влезу, и дополню Машу @miptgirl? Мы в отделе в основном используем CH двумя сценариями:
    1) Некоторая "тяжелая выгрузка", занимающая минуты-часы. У нас есть самописные обертки, упощающие итерирование по периодам рассчета (всё вместе в квоту не лезет). Запросы пишем вручную, вроде не слышал, вроде несильно страдаем: это потому что мало джойнов и жести, как у Маши 😊. Далее сразу в питоне в пандасе вертим-крутим как нужно.
    2) А вот сценарии вида "посчитать за один день/период простую метрику", "оценить воообще кол-во событий в группе", "грепнуть и посмотреть" мы активно пользуемся CH GUI вашей (СМИ2). Очень радуемся, очень удобно)
    Раньше (у меня до сих пор) для этих целей использовали clickhouse-client в tmux'е, но с гуи намного визуально понятнее, опять же вкладки, возможность глянуть в табличку.
    В общем ещё раз спасибо за это!
  • 30 December 2016 (52 messages)
  • @alekseevgena #4104 07:12 AM, 30 Dec 2016
    Joined.
  • https://t.me/clickhouse_ru
    @sazanov #4105 09:23 AM, 30 Dec 2016
    Joined.
  • https://t.me/clickhouse_ru
    @BloodJazMan #4106 10:30 AM, 30 Dec 2016
    Ребят, а подскажите, если в Clickhouse нет NULL
    то как их все таки лучше вставлять?

    например через TabSeparated???
    просто писать пустую строку?
    и делать \t\t ?
    а оно будет в 0 приводить для численных типов?
    или все таки надо заранее знать тип и приводить к нему ?
  • @iamigor #4107 10:32 AM, 30 Dec 2016
    пустую строку
  • @iamigor #4108 10:32 AM, 30 Dec 2016
    если не указан DEFAULT, то будет фигачить нули и пустые строки
  • @iamigor #4109 10:32 AM, 30 Dec 2016
    хотя даже если default указан, он один фиг вроде только при INSERTе в формате Values работает.. туплю
  • https://t.me/clickhouse_ru
    @BloodJazMan #4110 10:35 AM, 30 Dec 2016
    а можно вставлять Nested структуры в TapSeparated ?

    как массивы в квадратных скобках?
  • @iamigor #4111 10:38 AM, 30 Dec 2016
    :) CREATE TABLE nested_test (s String, nest Nested(x UInt8, y UInt32)) ENGINE = Memory

    ❯ gecho -e 'string\t[1,2,3]\t[4,5,6]' | clickhouse-client -h stats-ch1 -q "INSERT INTO nested_test FORMAT TabSeparated"

    :) SELECT * FROM nested_test;
    ┌─s──────┬─nest.x──┬─nest.y──┐
    │ string │ [1,2,3] │ [4,5,6] │
    └────────┴─────────┴─────────┘
  • @iamigor #4112 10:38 AM, 30 Dec 2016
    через таб
  • @iamigor #4113 10:39 AM, 30 Dec 2016
    в случае с примером выше -
    s \t nest.x \t nest.y
  • https://t.me/clickhouse_ru
    @BloodJazMan #4114 10:43 AM, 30 Dec 2016
    ну и там вроде как должна быть одинаковая длинна? так?
  • https://t.me/clickhouse_ru
    @the_real_jkee #4115 10:44 AM, 30 Dec 2016
    Да
  • https://t.me/clickhouse_ru
    @the_real_jkee #4116 10:44 AM, 30 Dec 2016
    В смысле количества элементов
  • @shinebell #4117 11:29 AM, 30 Dec 2016
    погодите, как нет null
  • @shinebell #4119 11:30 AM, 30 Dec 2016
    уже вроде пару недель работают
  • https://t.me/clickhouse_ru
    @BloodJazMan #4120 11:31 AM, 30 Dec 2016
    я не из сырцов ставлю
    и я думаю что старое поведение никто ломать не будет =)
  • @shinebell #4121 11:32 AM, 30 Dec 2016
    я тоже не из сырцов
  • @shinebell #4122 11:32 AM, 30 Dec 2016
    обновился через apt
  • @shinebell #4123 11:32 AM, 30 Dec 2016
    и заработало
  • https://t.me/clickhouse_ru
    @BloodJazMan #4124 11:46 AM, 30 Dec 2016
    ну у меня golang ;)
    там NULL нет нормального
    там только nil ;)
  • @iamigor #4125 11:46 AM, 30 Dec 2016
    а golang здесь причем? :о
  • https://t.me/clickhouse_ru
    @BloodJazMan #4126 11:47 AM, 30 Dec 2016
    ну сочетание golang и TabSeparated, не дает мне шанса вставить NULL в том виде как оно обычно в SQL используется
  • @iamigor #4127 11:47 AM, 30 Dec 2016
    гм... tabseparated - это обычные строки, часть спецсимволов которых экранируется кликхаусом на входе
  • https://t.me/clickhouse_ru
    @BloodJazMan #4128 11:47 AM, 30 Dec 2016
    \tNULL\t
    это ж строка будет для String в таком случае для TabSeparated

    в общем я таки попробую пустые строки посмотрю что получится
  • @iamigor #4129 11:48 AM, 30 Dec 2016
    да. а \t\N\t пробовали?
  • @iamigor #4130 11:48 AM, 30 Dec 2016
    у меня нет свежего рабочего сервера с поддержкой nullов чтоб проверить :(
  • https://t.me/clickhouse_ru
    @BloodJazMan #4131 11:48 AM, 30 Dec 2016
    ну дак это отдельно экранировать придется =)
  • @iamigor #4132 11:48 AM, 30 Dec 2016
    и чо? ))
  • @iamigor #4133 11:49 AM, 30 Dec 2016
    и, кстати, стоп, зачем экранировать?
  • https://t.me/clickhouse_ru
    @BloodJazMan #4134 11:50 AM, 30 Dec 2016
    еще раз
    если \t разделитель
    и я для типа String
    поставлю NULL
    Null или еще как то

    то это не должно интерпрититорваться как NULL
    это должна быть строка
    если нет, то это значит сломали все =)
  • @iamigor #4135 11:50 AM, 30 Dec 2016
    стоп!

    я, щас, конечно, диванный аналитик, но если надо вставить "\t" как строку, а не как разделитель, вторым параметром, то будет как-то так:
    первый\t\\t\tтретий
  • @iamigor #4136 11:51 AM, 30 Dec 2016
    аналогично должно быть с NULLом, который в КХ представляется как \N
  • https://t.me/clickhouse_ru
    @BloodJazMan #4137 11:51 AM, 30 Dec 2016
    МНЕ НЕ НАДО ВСТАВИТЬ \t как строку =)
  • @iamigor #4138 11:51 AM, 30 Dec 2016
    Я ПОНИМАЮ
  • @iamigor #4139 11:51 AM, 30 Dec 2016
    я привожу аналогию!

    если отправите \tNULL\t, то вставится строка "NULL", а не \N (тип NULL)
  • @iamigor #4140 11:52 AM, 30 Dec 2016
    если отправите \t\N\t, то вставится NULL
    если отправите \t\\N\t, то вставится строка "\N"
  • @iamigor #4141 11:52 AM, 30 Dec 2016
    ну, это опять же, имхо. должно работать так. это логично
  • @iamigor #4142 11:52 AM, 30 Dec 2016
    жалко, что под макось перестал компилиться :(
  • https://t.me/clickhouse_ru
    @BloodJazMan #4143 11:52 AM, 30 Dec 2016
    ок \N, понял
    может быть можно будет попровать ...
  • @iamigor #4144 12:08 PM, 30 Dec 2016
    проверил, всё верно

    :) CREATE TABLE test (x UInt64, s Nullable(String), y UInt64) ENGINE = Memory;

    ❯ gecho -e '1\t\N\t2' | docker exec -i clickhouse clickhouse-client -q 'INSERT INTO test FORMAT TabSeparated'

    ❯ gecho -e '2\tNULL\t3' | docker exec -i clickhouse clickhouse-client -q 'INSERT INTO test FORMAT TabSeparated'

    :) INSERT INTO test VALUES (3, NULL, 4);

    :) SELECT * FROM test ORDER BY x;

    ┌─x─┬─s────┬─y─┐
    │ 1 │ \N │ 2 │
    │ 2 │ NULL │ 3 │
    │ 3 │ \N │ 4 │
    └───┴──────┴───┘
  • @iamigor #4145 12:08 PM, 30 Dec 2016
    (gecho - GNU echo, если что, а то в макосьном флага -e нету)
  • @dr_gavrikov #4146 02:55 PM, 30 Dec 2016
    Коллеги, а если у нас внещний словарь , это таблица на сервере postgre

    то как она оформляется?

    <!— или источник - таблица на сервере postgre
    <postgre>
  • @dr_gavrikov #4147 02:55 PM, 30 Dec 2016
    или не так?
  • @dr_gavrikov #4148 02:55 PM, 30 Dec 2016
    в доке, про MySQL сказано только
  • @dr_gavrikov #4149 02:55 PM, 30 Dec 2016
    <!— или источник - таблица на сервере MySQL.
    <mysql>
  • @dr_gavrikov #4150 02:56 PM, 30 Dec 2016
    или <postgresql>
  • @iamigor #4151 03:05 PM, 30 Dec 2016
    надо odbc
  • @iamigor #4152 03:06 PM, 30 Dec 2016
    Как я делал с постгресным драйвером:
    sudo apt-get install -y unixodbc
    sudo apt-get install -y odbcinst
    sudo apt-get install -y odbc-postgresql

    В /etc/odbc.ini:
    [DEFAULT]
    Driver = myconnection

    [myconnection]
    Description = PostgreSQL connection to norma
    Driver = PostgreSQL Unicode
    Database = norma
    Servername = 10.... (твой хост)
    UserName = uname
    Password = pwd
    Port = 5432
    Protocol = 9.3
    ReadOnly = No
    RowVersioning = No
    ShowSystemTables = No
    ConnSettings =

    <dictionary>
    <name>table_name</name>
    <source>
    <odbc>
    <table>postgresql_table</table>
    <connection_string>DSN=myconnection</connection_string> <!— может потребоваться UID=norma;PWD=norma;, но по идее не должно —->
    </odbc>
    </source>
    <lifetime>
    <min>300</min>
    <max>360</max>
    </lifetime>
    <layout>
    <flat/>
    </layout>
    <structure>
    <id>
    <name>id</name>
    </id>
    <attribute>
    <name>some_column</name>
    <type>Int32</type>
    <null_value>-1</null_value>
    </attribute>
    ...
    </structure>
    </dictionary>
  • @dr_gavrikov #4153 03:34 PM, 30 Dec 2016
    о спасибо
  • @dr_gavrikov #4154 03:34 PM, 30 Dec 2016
    видимо то, что нужно
  • NULL-ы в TabSeparated указываются как \N.

    Сейчас NULL-ы уже есть в последней версии сервера, но функциональность ещё не production-ready. Из-за некоторых обстоятельств её пришлось вмержить до того, как были исправлены все замечания ревью.

    Из-за этого там есть ужасные, позорные недоработки. Например, вчера исправил - при парсинге не поддерживались не-NULL-строки, начинающиеся на бэкслеш.
  • 31 December 2016 (32 messages)
  • https://t.me/clickhouse_ru
    @BloodJazMan #4156 11:21 AM, 31 Dec 2016
    C наступающим всех =)

    пусть в новом году ClickHouse обгонит и перегонит все Collumn Oriented databases и станет номер 1 =) по популярности
  • https://t.me/clickhouse_ru
    @BloodJazMan #4158 11:23 AM, 31 Dec 2016
    =) а кто живой? а если я хочу String вставить в TabSeparated и Nested, мне надо [Строка1, Строка2, Скрока3] делать? или надо еще внутри массива строки кавычками экранировать?
  • @iamigor #4159 11:38 AM, 31 Dec 2016
    да забудь про массивы вообще если у тебя просто строка, а не массив из строк
  • @iamigor #4160 11:38 AM, 31 Dec 2016
    представь что таблица с нестед стала плоской и сохранила порядок
  • https://t.me/clickhouse_ru
    @BloodJazMan #4161 11:38 AM, 31 Dec 2016
    у меня массив из строк

    к сожалению =)
  • @iamigor #4162 11:39 AM, 31 Dec 2016
    тогда не забывай!
  • @iamigor #4163 11:39 AM, 31 Dec 2016
    в документации есть пример один-в-один
  • @iamigor #4164 11:39 AM, 31 Dec 2016
    а, ты про кавычки
  • @iamigor #4165 11:39 AM, 31 Dec 2016
    сорри!
  • @iamigor #4166 11:39 AM, 31 Dec 2016
    хз тогда даже :о
  • @iamigor #4167 11:39 AM, 31 Dec 2016
    я б попробовал кавычки экранировать
  • @iamigor #4168 11:40 AM, 31 Dec 2016
    точнее не экранировать, а просто запихнуть в кавычки каждую строку
  • @iamigor #4169 11:41 AM, 31 Dec 2016
    столбец-cтрока\t['строка 1', 'строка 2']\t8008135
  • https://t.me/clickhouse_ru
    @BloodJazMan #4170 11:41 AM, 31 Dec 2016
    https://clickhouse.yandex/reference_ru.html#Nested(Name1 Type1, Name2 Type2, ...)

    вот тут я чтото не вижу примервов на вставку и на кавычки =(
    Документация ClickHouse | Документация ClickHouse

    ClickHouse is a fast open-source column-oriented database management system that allows generating analytical data reports in real-time using SQL queries

  • https://t.me/clickhouse_ru
    @BloodJazMan #4171 11:42 AM, 31 Dec 2016
    ну я так и собираюсь сделать
  • https://t.me/clickhouse_ru
    @BloodJazMan #4172 11:42 AM, 31 Dec 2016
    но просто хочу уточнить вдруг кто уже прошел этот путь
  • @iamigor #4173 11:42 AM, 31 Dec 2016
    да, сорри( а примеры с массивами из строк в похожих форматах цсв например есть?
  • https://t.me/clickhouse_ru
    @BloodJazMan #4174 11:42 AM, 31 Dec 2016
    неа =) надо экспериментировать сейчас будет
  • @iamigor #4175 11:44 AM, 31 Dec 2016
    та шо там экспериментировать, три запроса всего
  • @garikanet #4176 11:45 AM, 31 Dec 2016
    может поможет моя php версия https://github.com/smi2/phpClickHouse/blob/master/src/Quote/StrictQuoteLine.php

    пример работы
    https://github.com/smi2/phpClickHouse/blob/master/example/exam12_array.php
    smi2/phpClickHouse

    php ClickHouse wrapper. Contribute to smi2/phpClickHouse development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    @BloodJazMan #4177 11:52 AM, 31 Dec 2016
    ну вроде разобрался

    http://take.ms/pbeOL
    Screenshot "C__Windows_system32_cmd.exe 2016-12-31 14.51.49.png"

    Monosnap — the best tool to take & share your screenshots..

  • @alekseevgena #4178 01:40 PM, 31 Dec 2016
    /stat@combot
  • @f1yegor #4180 02:04 PM, 31 Dec 2016
    /stat@combot
  • Спасибо!
  • https://t.me/clickhouse_ru
  • @m_motylkov #4184 04:24 PM, 31 Dec 2016
    Всех с наступающим Новым Годом!
  • @garikanet #4185 06:11 PM, 31 Dec 2016
    Всех c наступающим|наступившим НГ!
    Желаю закрыть планы по CH - Q2+Q3+Q4 в Q1 ;)))
    От себя, микро подарок пользователям CHGui - анонс новой ветки с автоматическими графиками, с графическим pivot + resolve ~40 фичь из roadmap - в public конце января
  • @milovidov_an #4186 06:23 PM, 31 Dec 2016
    > Желаю закрыть планы по CH - Q2+Q3+Q4 в Q1 ;)))

    Вот это отличное пожелание. Спасибо :)
    С наступающим!
  • https://t.me/clickhouse_ru
    @gridemch #4187 09:47 PM, 31 Dec 2016
    И Q5!
  • @Komzpa ↶ Reply to #4187 #4188 09:49 PM, 31 Dec 2016
    audi или blackberry?
  • https://t.me/clickhouse_ru
    @gridemch #4189 09:58 PM, 31 Dec 2016
    Квартал!