• 01 July 2018 (13 messages)
  • https://t.me/clickhouse_ru
    @yourock88 #57144 04:02 PM, 01 Jul 2018
    Вроде бы insert атомарен до 1 000 000 строк
  • https://t.me/clickhouse_ru
    @yourock88 #57145 04:02 PM, 01 Jul 2018
    Впрочем, это относится к движкам *MergeTree
  • https://t.me/clickhouse_ru
    @343206394 #57146 04:06 PM, 01 Jul 2018
    Может кто видит почему ругаеться КХ
  • https://t.me/clickhouse_ru
    @343206394 #57147 04:06 PM, 01 Jul 2018
    ENGINE = ReplicatedMergeTree('/clickhouse/tables/metrics/{shard}/Metrics', '{replica}')
    PARTITION BY (floor(timestamp/86400)) ORDER BY (appId, metricId, timestamp)
    SAMPLE BY (appId, metricId, timestamp);
  • https://t.me/clickhouse_ru
    @343206394 #57148 04:06 PM, 01 Jul 2018
    Sampling expression must be present in the primary key
  • https://t.me/clickhouse_ru
    @343206394 #57149 04:06 PM, 01 Jul 2018
    yandex/ClickHouse

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

  • https://t.me/clickhouse_ru
    @343206394 #57150 04:06 PM, 01 Jul 2018
    Должно работать вроде
  • Выражение сэмплирования - одно, не кортеж.
  • https://t.me/clickhouse_ru
    @343206394 #57152 04:19 PM, 01 Jul 2018
    ага
    спсб
  • https://t.me/clickhouse_ru
    @343206394 #57154 04:20 PM, 01 Jul 2018
    metricId в моем случае получается
  • https://t.me/clickhouse_ru
    @343206394 #57155 04:20 PM, 01 Jul 2018
    спсб за презентацию
  • @TanVD #57156 10:06 PM, 01 Jul 2018
    Привет) А кто-нибудь в курсе как можно в CH сделать show сессионной переменной? Хочу посмотреть с каким user_profile сессия установлена.
  • 02 July 2018 (211 messages)
  • @477523966 #57157 03:32 AM, 02 Jul 2018
    /stat@combot
  • @kalombos #57160 06:36 AM, 02 Jul 2018
    Подскажите по clickhouse, хочу использовать его как time series database. У меня собираются счетчики по 250 000 портам 4 раза в час. Это уже 24 миллиона записей в месяц. За год это будет 720 000 000 записей. Я думаю нам места таким образом не хватит. Раньше мы использовали RRD для этих целей, он столько места не занимал и была возможность посмотреть графики за год-два, сейчас просто RRD не справляется. Можете что-нибудь посоветовать по данной проблеме?
  • https://t.me/clickhouse_ru
    @dvolodin #57161 06:37 AM, 02 Jul 2018
    NOC 🙂
  • https://t.me/clickhouse_ru
    @dvolodin #57162 06:37 AM, 02 Jul 2018
    укладывается в clickhouse, достаточно компактно
  • @kalombos ↶ Reply to #57161 #57163 06:39 AM, 02 Jul 2018
    Можно ссылку, пожалуйста, или расшифровку?
  • https://t.me/clickhouse_ru
    @dvolodin #57164 06:39 AM, 02 Jul 2018
    давайте в личку
  • https://t.me/clickhouse_ru
    @dvolodin #57165 06:39 AM, 02 Jul 2018
    noc / noc

    GitLab Enterprise Edition

  • SELECT * FROM system.settings WHERE changed = 1 ?
  • https://t.me/clickhouse_ru
    @OrNixx #57167 09:00 AM, 02 Jul 2018
    всем привет. объём базы КХ растёт, и бэкапить его селектом уже не представляется возможным. как быть? м.б. LVM-снапшот?
  • https://t.me/clickhouse_ru
    @stufently #57168 09:01 AM, 02 Jul 2018
    а в чем проблема селектом только новый день скажем забирать ?
  • https://t.me/clickhouse_ru
    @OrNixx #57169 09:01 AM, 02 Jul 2018
    а остальное?
  • https://t.me/clickhouse_ru
    @orantius #57170 09:04 AM, 02 Jul 2018
    а остальное бекапить вчера
  • А почему селектом, а не FREEZE PARTITION?
  • https://t.me/clickhouse_ru
    @OrNixx #57172 09:08 AM, 02 Jul 2018
    наверное потому что ничего не знаю про это
  • https://t.me/clickhouse_ru
    @OrNixx #57173 09:08 AM, 02 Jul 2018
    щас почитаю
  • https://t.me/clickhouse_ru
    @vstepankov #57174 09:09 AM, 02 Jul 2018
    на highload.ru была статья по бекапам, емнип
  • https://t.me/clickhouse_ru
    А там было про бекапы зукипера вместе с кх?
  • https://t.me/clickhouse_ru
    Просто сейчас лично у меня есть проблемы с пониманием, как восстанавливать весь кластер из бекапа...
  • https://t.me/clickhouse_ru
    ну каждый день бекапите предыдущй в итоге у вас есть все дни
  • https://t.me/clickhouse_ru
    @stufently #57178 09:15 AM, 02 Jul 2018
    какое тут остальное ?
  • Если у вас есть информация о партиции(партициях) в зукипере и хотя бы одна живая реплика - все остальные утащат данные с неё.
  • https://t.me/clickhouse_ru
    Я хочу защититься от случая падения зукипера
  • https://t.me/clickhouse_ru
    Вместе с датацентром :-)
  • https://t.me/clickhouse_ru
    Просто у меня уже был случай съезжания крыши у зукипера и не хотелось бы повторять.
  • https://t.me/clickhouse_ru
    ну тут надо распределенный зукипер просто
  • https://t.me/clickhouse_ru
    Возможны проблемы со связностью в сильно распределённом зукипере...
  • https://t.me/clickhouse_ru
    @stufently #57185 09:29 AM, 02 Jul 2018
    ну вы не сильно распределяйте по чуть чуть
  • @TanVD #57186 09:34 AM, 02 Jul 2018
    Ну я по настройкам могу посмотреть, да, но самого профиля там нет :(
  • @TanVD #57187 09:34 AM, 02 Jul 2018
    SELECT * FROM system.settings WHERE changed = 1 ?
  • @TanVD #57188 09:39 AM, 02 Jul 2018
    Собственно сам вопрос следующий — пользуюсь версией 1.1.54385. Проставил пользователю <profile> и захожу им сначала через native интерфейс (clickhouse-client использую) — вижу настройки профиля, захожу через http интерфейс (использую clickhouse-cli от hatarist) — вижу дефолтные настройки... Такое ощущение, что <profile> при обращении через http не применяется и <readonly> пользователь становится не readonly
  • Пофикшено в 1.1.54388, см. changelog:
    >Настройки профиля пользователя не применялись при использовании сессий в HTTP-интерфейсе.
  • https://t.me/clickhouse_ru
    @Vasyaabr #57190 10:01 AM, 02 Jul 2018
    Привет!
    Используется кворумная запись, для чтения стоит по дефолту select_sequential_consistency=1. После перехода на следующий месяц (партиционирование таблицы по месяцам), предыдущий перестал попадать в результаты селекта (но никаких ошибок не кидает). Ставим select_sequential_consistency=0 - данные видны. Запись идет нормально. Это баг или мы что-то неверно настроили?
  • @TanVD ↶ Reply to #57189 #57191 10:09 AM, 02 Jul 2018
    Круто, спасибо :) Ещё бы tag добавили в hub.docker.com, а то там только в latest и 1.1 залили новую stable
  • @KciNKh #57192 10:10 AM, 02 Jul 2018
    Кто-то может подскажет best practice алгоритм по расширению кластера (добавление нового шарда)?
    Текущий кластер:

    <main_cluster>
    <shard>
    <weight>1</weight>
    <internal_replication>false</internal_replication>
    <replica>
    <host>ch-1-1</host>
    <port>9000</port>
    </replica>
    <replica>
    <host>ch-1-2</host>
    <port>9000</port>
    </replica>
    </shard>
    <shard>
    <weight>1</weight>
    <internal_replication>false</internal_replication>
    <replica>
    <host>ch-2-1</host>
    <port>9000</port>
    </replica>
    <replica>
    <host>ch-2-2</host>
    <port>9000</port>
    </replica>
    </shard>
    </main_cluster>

    такой алгоритм "сломает" кластер?
    - создать все таблицы на новом шарде
    - добавить на все сервера (начиная с серверов нового шарда)

    <shard>
    <weight>1</weight>
    <internal_replication>false</internal_replication>
    <replica>
    <host>ch-3-1</host>
    <port>9000</port>
    </replica>
    <replica>
    <host>ch-3-2</host>
    <port>9000</port>
    </replica>
    </shard>

    Нужно ли пересоздавать Distributed таблицы на "старых" шардах?
  • https://t.me/clickhouse_ru
    @stufently #57193 10:13 AM, 02 Jul 2018
    не нужно
  • @KciNKh ↶ Reply to #57193 #57194 10:28 AM, 02 Jul 2018
    т.е. воссоздать схему на новых и добавить их в конфигурацию кластера достаточно безопасное действие? версия КХ 1.1.54385 сама подхватит новый шард или требуется перезапуск?
  • https://t.me/clickhouse_ru
    @stufently #57195 10:29 AM, 02 Jul 2018
    безопасно
  • https://t.me/clickhouse_ru
    @stufently #57196 10:29 AM, 02 Jul 2018
    насколько помню само подхватывает конфиг кластера
  • @KciNKh #57197 10:30 AM, 02 Jul 2018
    спасибо
  • @serlex777 #57198 11:02 AM, 02 Jul 2018
    Добрый день! подскажите пожалуйста, есть ли готовые инструменты для создания схемы таблицы на основе protobuf описания и драйвер, который может лить данные из протобуфа?
  • Насколько мне известно готовых инструментов нет. Нативная поддержка protobuf и Parquet есть в Roadmap на Q3 2018.
  • https://t.me/clickhouse_ru
    ммм, а вот например запихнуть туда пачку ip и получить соответствие ip<->подсеть? это можно как-то сделать через, условно говоря, where IP IN (ip_trie_clause)
  • https://t.me/clickhouse_ru
    т.е. без цикла по запихиваю одного айпи пачками (извините если вопрос совсем страшный)
  • https://t.me/clickhouse_ru
    @343206394 #57202 11:15 AM, 02 Jul 2018
    Извините что туплю
  • https://t.me/clickhouse_ru
    @343206394 #57203 11:16 AM, 02 Jul 2018
    Может кто видит почему семплинг не помогает по скорости?
  • https://t.me/clickhouse_ru
    @343206394 #57204 11:16 AM, 02 Jul 2018

    SELECT sum(value)
    FROM Metrics
    SAMPLE 1 / 10

    ┌───────────sum(value)─┐
    │ 17577274172239137000 │
    └──────────────────────┘

    1 rows in set. Elapsed: 9.238 sec. Processed 3.69 billion rows, 44.23 GB (398.96 million rows/s., 4.79 GB/s.)

    tsf-data11.us.sematext.com :) select sum(value) from Metrics;

    SELECT sum(value)
    FROM Metrics

    ┌───────────sum(value)─┐
    │ 17577889402538699000 │
    └──────────────────────┘

    1 rows in set. Elapsed: 7.030 sec. Processed 3.69 billion rows, 29.48 GB (524.30 million rows/s., 4.19 GB/s.)

    tsf-data11.us.sematext.com :) select sum(value) from Metrics SAMPLE 1/100;

    SELECT sum(value)
    FROM Metrics
    SAMPLE 1 / 100

    ┌───────────sum(value)─┐
    │ 17578875733901701000 │
    └──────────────────────┘

    1 rows in set. Elapsed: 9.241 sec. Processed 3.69 billion rows, 44.23 GB (398.87 million rows/s., 4.79 GB/s.)

    tsf-data11.us.sematext.com :) show create Metrics

    SHOW CREATE TABLE Metrics

    ┌─statement───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
    │ CREATE ... ORDER BY (appId, metricId, timestamp) SAMPLE BY metricId SETTINGS index_granularity = 8192
    └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

    1 rows in set. Elapsed: 0.001 sec.
  • https://t.me/clickhouse_ru
    @343206394 #57205 11:16 AM, 02 Jul 2018
    Судя по сумме семплирования не происходит
  • https://t.me/clickhouse_ru
    @orantius #57206 11:17 AM, 02 Jul 2018
    а metricId у вас равномерно распределен по значениям своего типа?
  • Не понимаю вопрос. ip_trie ищет подсеть с самым длинным подходящим префиком.
  • https://t.me/clickhouse_ru
    @EvgenyVinogradov #57208 11:19 AM, 02 Jul 2018
    Joined.
  • @mfilimonov #57209 11:26 AM, 02 Jul 2018
    Т.е. в ip_trie может быть несколько подходящих под условие подсетей. Типа 10.0.0.0/8 и одновременно 10.1.2.0/23 . И если спросите про адрес 10.1.2.3 то выберет вторую подсеть, как более "специфичную" хотя первая тоже подходит.
  • No Docker Hub tag created for v1.1.54388 #2576

    It looks like the new images were pushed to latest, 1 and 1.1, but there wasn't a new 1.1.54388 tag created. https://hub.docker.com/r/yandex/clickhouse-server/tags/

  • https://t.me/clickhouse_ru
    Спасибо) может быть попозже еще спрошу если протуплю
  • https://t.me/clickhouse_ru
    @EvgenyVinogradov #57212 11:40 AM, 02 Jul 2018
    День добрый! Можно ли для клика использовать zookeeper с kerberos? Если да, то где прочитать о настройке?
  • @thodin #57213 11:46 AM, 02 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @dimzon541 #57214 11:48 AM, 02 Jul 2018
    господа, а как truncate table сделать?
  • https://t.me/clickhouse_ru
    truncate по партишенам
  • https://t.me/clickhouse_ru
    @EvgenyVinogradov #57216 11:49 AM, 02 Jul 2018
    сорян ...drop partition
  • https://t.me/clickhouse_ru
    @dimzon541 #57217 11:49 AM, 02 Jul 2018
    мне целиком табличку почистить
  • https://t.me/clickhouse_ru
    Если туда не пишется ничего - подропать все партишны и всё
  • https://t.me/clickhouse_ru
    не совсем понял вопроса
    это поле имеет значение от 1 до 10000 и распределение не совсем равномерное
    Ну тоесть значении 2 может быть миллион а 2002 может быть 20 миллионов
  • https://t.me/clickhouse_ru
    @orantius #57220 11:51 AM, 02 Jul 2018
    sample 1/100 эквивалентно условию metricId < max_value/100
  • https://t.me/clickhouse_ru
    @343206394 #57221 11:52 AM, 02 Jul 2018
    теперь понял
  • https://t.me/clickhouse_ru
    @343206394 #57222 11:52 AM, 02 Jul 2018
    в таком случае все равно должно работать, может немного криво из-за неравномерного распределения
  • Это баг.
  • https://t.me/clickhouse_ru
    @343206394 #57224 11:53 AM, 02 Jul 2018
    судя по запросам семплинг вообще не работет
  • https://t.me/clickhouse_ru
    @orantius #57225 11:53 AM, 02 Jul 2018
    max_value это не 10000, а 2^32 или какой у вас тип у metricId
  • https://t.me/clickhouse_ru
    @343206394 #57226 11:54 AM, 02 Jul 2018
    упс
  • https://t.me/clickhouse_ru
    @343206394 #57227 11:54 AM, 02 Jul 2018
    это все поменяло
  • https://t.me/clickhouse_ru
    @orantius #57228 11:54 AM, 02 Jul 2018
    в таких случаях можно семплировать например по inthash32(.)
  • https://t.me/clickhouse_ru
    @343206394 #57229 11:55 AM, 02 Jul 2018
    и как быть если надо аггрегировать по метрикИд но значении может быть так много что нужно только по 10% например
  • https://t.me/clickhouse_ru
    @orantius #57230 11:55 AM, 02 Jul 2018
    но нужно чтобы на один appId было много metricId
  • https://t.me/clickhouse_ru
    @343206394 #57231 11:55 AM, 02 Jul 2018
    так и есть
  • https://t.me/clickhouse_ru
    это как?
  • https://t.me/clickhouse_ru
    @orantius #57233 11:56 AM, 02 Jul 2018
    это при создании таблицы
  • https://t.me/clickhouse_ru
    @343206394 #57234 11:56 AM, 02 Jul 2018
    как эту част переписать?
  • https://t.me/clickhouse_ru
    @343206394 #57235 11:57 AM, 02 Jul 2018
    ORDER BY (appId, metricId, timestamp)
    SAMPLE BY (metricId);
  • https://t.me/clickhouse_ru
    @343206394 #57236 11:58 AM, 02 Jul 2018
    я понимаю что при создании я имею в виду что как семплтинг ключ написать
  • https://t.me/clickhouse_ru
    @343206394 #57237 11:58 AM, 02 Jul 2018
    вместо metricId
  • https://t.me/clickhouse_ru
    @343206394 #57238 11:58 AM, 02 Jul 2018
    inthash32(metricId) ?
  • https://t.me/clickhouse_ru
    @orantius #57239 11:58 AM, 02 Jul 2018
    угу
  • https://t.me/clickhouse_ru
    @orantius #57240 11:59 AM, 02 Jul 2018
    но если вы селектите отдеьные metricId, то наверное надо будет тоже запрос поравить чтобы индекс использовался.
  • https://t.me/clickhouse_ru
    @343206394 #57241 11:59 AM, 02 Jul 2018
    и это же выражение в первичном ключе?
  • https://t.me/clickhouse_ru
    @orantius #57242 11:59 AM, 02 Jul 2018
    угу, если не отсортировать, то фокус не получится.
  • https://t.me/clickhouse_ru
    @343206394 #57243 12:00 PM, 02 Jul 2018
    а условие metricId=xxx будет при таком ключе по ключу отрабатывать?
    ORDER BY (appId, inthash32(metricId), timestamp)
    SAMPLE BY (inthash32(metricId));
  • https://t.me/clickhouse_ru
    Скорее inthash32(metricId)=inthash32(xxx)
  • https://t.me/clickhouse_ru
    @343206394 #57245 12:01 PM, 02 Jul 2018
    или в запросе надо будет писать inthash32(metricId)=xxx ?
  • https://t.me/clickhouse_ru
    @343206394 #57246 12:01 PM, 02 Jul 2018
    уфф, красота будет
  • https://t.me/clickhouse_ru
    @orantius #57247 12:01 PM, 02 Jul 2018
    предположу что нет. но metricId=xxx and intHash32(metricId)=intHash32(xxx) должно.
  • https://t.me/clickhouse_ru
    @343206394 #57248 12:02 PM, 02 Jul 2018
    понял
    спсб
  • https://t.me/clickhouse_ru
    @343206394 #57249 12:02 PM, 02 Jul 2018
    спсб большое
  • https://t.me/clickhouse_ru
    уфф только что понял что мне это не подходит
    У меня в запросе есть условие *metricId=2* например и мне надо чтобы сумма была построена не по всем точкам а только по 10% например
    Получается мне семплирование по таймстемпу надо но это вроде бы не есть гуд
  • https://t.me/clickhouse_ru
    @bsideup #57251 12:13 PM, 02 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @bsideup #57252 12:16 PM, 02 Jul 2018
    Всем привет!

    А где почитать про ORDER BY и как его лучше указывать?

    Вот допустим у нас есть Immutable Event Log по userId с eventType и eventId, а так же timestamp (DateTime).
    Мы используем ReplacingMergeTree (на случай если два раза одно и тоже событие запишется в ClickHouse), на данный момент вот так:
    ENGINE = ReplacingMergeTree PARTITION BY toYYYYMM(timestamp) ORDER BY (userId, eventType, eventId)

    на сколько это правильно \ нет? ORDER BY очень сбивает с толку названием, я так понимаю он тут больше как кассандровский PRIMARY KEY, не?
  • https://t.me/clickhouse_ru
    @orantius ↶ Reply to #57252 #57253 12:17 PM, 02 Jul 2018
    зависит от того как вы потом будете все это читать.
  • https://t.me/clickhouse_ru
    @bsideup ↶ Reply to #57253 #57254 12:17 PM, 02 Jul 2018
    Планируем отдать на Business Analytics
  • https://t.me/clickhouse_ru
    @bsideup #57255 12:18 PM, 02 Jul 2018
    и создавать materialized views
  • https://t.me/clickhouse_ru
    @bsideup #57256 12:18 PM, 02 Jul 2018
    в основном ad hoc запросы в стиле "а сколько у нас юзеров <...>"
  • https://t.me/clickhouse_ru
    @orantius #57257 12:19 PM, 02 Jul 2018
    юзеров - это userid?
  • https://t.me/clickhouse_ru
    @bsideup #57258 12:19 PM, 02 Jul 2018
    Угу
  • https://t.me/clickhouse_ru
    @orantius #57259 12:19 PM, 02 Jul 2018
    тогда наверное не имеет смысла по ним сортировать, у вас же не будет на них условия.
  • https://t.me/clickhouse_ru
    @bsideup #57260 12:20 PM, 02 Jul 2018
    т.е. только по eventId?
  • https://t.me/clickhouse_ru
    @orantius #57261 12:20 PM, 02 Jul 2018
    зависит от запроса. у вас нет сортировки по дате, значит вы всегда будете читать данные месяцами
  • https://t.me/clickhouse_ru
    @orantius #57262 12:20 PM, 02 Jul 2018
    может вам так и надо.
  • https://t.me/clickhouse_ru
    @Krashuevina #57263 12:21 PM, 02 Jul 2018
    А вынесение event_id в PKEY не сожрёт всю память?
  • https://t.me/clickhouse_ru
    @bsideup ↶ Reply to #57263 #57264 12:23 PM, 02 Jul 2018
    не совсем тогда ясно как обеспечить replacing поведение
  • https://t.me/clickhouse_ru
    @orantius #57265 12:24 PM, 02 Jul 2018
    не должно, это же разреженный индекс.
  • https://t.me/clickhouse_ru
    @bsideup #57266 12:28 PM, 02 Jul 2018
    Я конечно извиняюсь за повторение вопроса, но до конца понять так и не удалось 😄

    ORDER BY - это Cassandra/Dynamo-like PKEY, по которому так же происходит merge, верно?
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #57267 12:34 PM, 02 Jul 2018
    ORDER BY - колонки или список колонок, по которым в MergeTree (первичный ключ):
    - данные всей таблицы упорядочены
    - создан разреженый индекс
    - в "слопывающихся" движках данные слопываются по этому ключу
  • https://t.me/clickhouse_ru
    @343206394 #57268 12:49 PM, 02 Jul 2018
    Сформулирую полный вопрос с вашего позволения.

    Есть

    CREATE TABLE XXX
    ...

    ORDER BY (appId, metricId, timestamp)
    SAMPLE BY (metricId);

    Есть запросы вида

    SELECT SUM(v) FROM XXX where appId=1 and metricId=1 and timestamp>YYY and timestamp<ZZZ;

    Для некого metricId данных может быть очень много и запрос выполняется долго. Думали прикрутить семплинг для этого

    SELECT SUM(v) FROM XXX SAMPLE 1/10 where appId=1 and metricId=1 and timestamp>YYY and timestamp<ZZZ

    Но похоже все работет не так как думалось

    Нужно заводить искусственную переменную sampleId значения которой равномерно будут распределены от 0 до 9

    И делать так

    CREATE TABLE XXX
    ...

    ORDER BY (appId, metricId, sampleId, timestamp)
    SAMPLE BY (sampleId);

    Но тогда запросы без семплирования будут работать медленнее ТК мы "запохабили" немного первичный ключ, верно?

    Есть какой-то способ ровнее?
  • https://t.me/clickhouse_ru
    @Shegloff #57269 12:54 PM, 02 Jul 2018
    а если помимо timestamp добавить в индекс день (day Date toDate(timestamp), и дополнительно в where также указывать day, быстрее не будет?
  • https://t.me/clickhouse_ru
    @343206394 #57270 12:57 PM, 02 Jul 2018
    Учитывая что у нас партицирование по дням то не должно быть быстрее как я понимаю
  • https://t.me/clickhouse_ru
    @343206394 #57271 12:57 PM, 02 Jul 2018
    на уровне партиции отрежется лишнее и в ключ добавлять день не надо
  • https://t.me/clickhouse_ru
    @343206394 #57272 12:58 PM, 02 Jul 2018
    Вот с семплингом засада как-то после чтения документации по другому думалось оно работает, а сейччас вроде как пришло понимание а что делать непонятно
  • https://t.me/clickhouse_ru
    @vse_chetk0 #57273 01:20 PM, 02 Jul 2018
    Кто то нибудь в курсе появились ли вложенные структуры, т.е вложенность более одного уровня ? Вроде обещали эту функциональность завести в первом квартале 2018 года
  • Кликхаус в курсе :) Лучше такие вещи у него спрашивать: CREATE TABLE xxx_nestes
    (
    a UInt32,
    b Array(Array(Tuple(String, String)))
    )
    ENGINE = Log

    Ok.

    0 rows in set. Elapsed: 0.006 sec.

    :) insert into xxx_nestes values (1, [[('hello','world'),('foo','bar')],[('','')]] );

    INSERT INTO xxx_nestes VALUES

    Ok.
  • https://t.me/clickhouse_ru
    Я имел ввиду структуру Nested
  • https://t.me/clickhouse_ru
    @vse_chetk0 #57276 01:28 PM, 02 Jul 2018
    Я у КХ уже спрашивал) не работало) но из роуд мапа это фича исчезла
  • https://t.me/clickhouse_ru
    @orantius ↶ Reply to #57275 #57277 01:29 PM, 02 Jul 2018
    а чем массивы массивов не подходят?
  • А вы посмотрите на это с другой стороны: вот у вас есть черезчур много данных. На каком основании вы предпочли бы отбросить бОльшую их часть, так чтобы их качество не ухудшилось? На основании metricID явно бессмысленно, если вы хотите для конкретной метрики данные выбирать. Т.е. берем все записи для данного metricID и обрасываем из них такую часть для которой?..
  • https://t.me/clickhouse_ru
    Многомерные массивы не придерживаются для таблиц типа mergetree
  • Nested - это только syntax sugar для нескольких параллельных таблиц.
  • Извините, но кликхаус с вами не согласен :) :
    :) create table xxx_nestes2 ( a UInt32, b Array(Array(Tuple(String,String))) ) Engine = MergeTree ORDER BY a;

    CREATE TABLE xxx_nestes2
    (
    a UInt32,
    b Array(Array(Tuple(String, String)))
    )
    ENGINE = MergeTree
    ORDER BY a

    Ok.

    0 rows in set. Elapsed: 0.007 sec.

    :) insert into xxx_nestes2 values (1, [[('hello','world'),('foo','bar')],[('','')]] );

    INSERT INTO xxx_nestes2 VALUES

    Ok.

    1 rows in set. Elapsed: 0.002 sec.
  • https://t.me/clickhouse_ru
    А что будет работать эффективнее, 2 таблицы с джоином или таблица с nested структурой)
  • https://t.me/clickhouse_ru
    Это не мои слова, так в доке написано, видимо уже устарело)
  • https://t.me/clickhouse_ru
    Ну да, получется или rand()/10=0 использовать или sampleId добавлять
    Верно?
  • Если данные всегда предполагается использовать совместно (т.е. те данные которые в нормальной форме были бы в правой таблице - сами по себе не используются, а только в сочетании с левой таблицей) - то по моим наблюдениям Nested / Array всегда быстрее.
  • https://t.me/clickhouse_ru
    Такая ситуация и складывается
  • https://t.me/clickhouse_ru
    А как можно осуществлять эффективный поиск по многомерным массивам ?
  • https://t.me/clickhouse_ru
    Допустим у меня есть древовидная структура, сессия -> хиты -> товары
  • https://t.me/clickhouse_ru
    В одной сессия несколько хитов, в одном хите несколько товаров
  • Ну рандом всегда остается как запасной вариант, для него в принципе и SAMPLE BY не нужен (правда результаты будут недетерминированные если этот rand не хранить физически). Но часто например можно отсеять по какому-то иному признаку, например id пользователя.
  • https://t.me/clickhouse_ru
    @343206394 #57291 01:43 PM, 02 Jul 2018
    timestamp%10=0 детерминированно будет, но что-то меня смущает
    скорости не даст, читать все равно все
  • @mfilimonov #57292 01:44 PM, 02 Jul 2018
    Т.е. если пользователей много (или так МНОГО), то даже если половину их выбросить статистически картина меняется мало. А вот если выбросить случайную половину событий у случайных пользователей - то характерестики данных могут пострадать.
  • https://t.me/clickhouse_ru
    @343206394 #57293 01:44 PM, 02 Jul 2018
    в моем случае можно случайно выбросить
  • Тогда может проще всего выкинуть просто определенный интервал времени? Просто заузить день? Или от каждого часа взять по 10 мин?
  • https://t.me/clickhouse_ru
    @343206394 #57295 01:48 PM, 02 Jul 2018
    неправильно выразился
    как раз каждое 10 по времени надо оставить например
  • https://t.me/clickhouse_ru
    @Nastasiya_R #57296 01:48 PM, 02 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @343206394 #57297 01:49 PM, 02 Jul 2018
    допустим 100000 измерении в минуту
    и так 30 дней
    можно оставить 100 измерении в минуту но каждую минуту оставить
  • https://t.me/clickhouse_ru
    @343206394 #57298 01:49 PM, 02 Jul 2018
    извините за двусмысленность
  • @mfilimonov #57299 01:52 PM, 02 Jul 2018
    А может вам подошел бы GraphiteMergeTree?
  • @mfilimonov #57300 01:52 PM, 02 Jul 2018
    Оно как раз для похожих задач сделано.
  • @507927719 #57301 01:54 PM, 02 Jul 2018
    Всем привет! Подскажите пожалуйста, а выражение "... not in ( select ... from table)" рабочее? Что-то у меня не получается заставить это работать.
  • Ну вариантов немного на самом деле - или функции высшего порядка или array join. Как вариант - их сочетание.
  • https://t.me/clickhouse_ru
    Звучит как костыль, на самом деле многомерная Nested структура бы решила все проблемы, интересно все таки услышать от мейнтейнеров будет ли все таки реализована это фича
  • https://t.me/clickhouse_ru
    @miptgirl ↶ Reply to #57301 #57304 01:57 PM, 02 Jul 2018
    Привет!

    CREATE TABLE test
    ENGINE = Log AS
    SELECT arrayJoin([1, 2, 3]) AS a

    SELECT
    b,
    b NOT IN
    (
    SELECT *
    FROM test
    )
    FROM
    (
    SELECT arrayJoin([1, 2, 3, 4]) AS b
    )

    ┌─b─┬─notIn(b, _subquery1)─┐
    │ 1 │ 0 │
    │ 2 │ 0 │
    │ 3 │ 0 │
    │ 4 │ 1 │
    └───┴──────────────────────┘
  • Должно быть рабочее. Если какой-то конкретный кейс не работает - покажите запрос. (там относительно недавно допиливали оптимизации, чтобы primary key использовался).
  • Не понимаю в чем проблема :)
  • Спасибо за ответ! Мария, можете уточнить, а как not in использовать в секции where?
  • https://t.me/clickhouse_ru
    @miptgirl ↶ Reply to #57307 #57308 02:01 PM, 02 Jul 2018
    Также

    SELECT b
    FROM
    (
    SELECT arrayJoin([1, 2, 3, 4]) AS b
    )
    WHERE b NOT IN
    (
    SELECT *
    FROM test
    )

    ┌─b─┐
    │ 4 │
    └───┘
  • Супер! И последний вопрос, могут ли в массиве быть строки, а не числа?
  • https://t.me/clickhouse_ru
    @miptgirl #57310 02:02 PM, 02 Jul 2018
    Да, конечно
  • https://t.me/clickhouse_ru
    Мне не очень нравится привязка данных к позиции, у меня планируется около 70 полей для вложенной структуры, смекаете ?)
  • https://t.me/clickhouse_ru
    Сейчас почитаю Спсб
  • CREATE TABLE sessions (
    sessionid UInt32,
    hits_hitid Array(UInt32),
    hits_productids Array(Array(UInt32))
    ) Engine = MergeTree ORDER BY sessionid;

    INSERT INTO sessions VALUES ( 10, [101,102,103], [ [1011,1012,1013,1014], [1021,1022], [] ] );
    INSERT INTO sessions VALUES ( 20, [201,202,203], [ [2011,2012,2013,2014], [2021,2022], [] ] );

    SELECT sessionid, hitid, productid
    FROM
    ( SELECT sessionid, hitid, productids
    FROM sessions
    ARRAY JOIN
    hits_hitid as hitid,
    hits_productids as productids
    )
    ARRAY JOIN productids as productid;
  • https://t.me/clickhouse_ru
    @orantius ↶ Reply to #57311 #57314 02:11 PM, 02 Jul 2018
    вам все равно надо будет разложить их в 70 колонок
  • Это диалог из жанра "ехать или шашечки". :)
  • https://t.me/clickhouse_ru
    +1. Чтобы записать Nested-структуру по http, фактически формируется инсерт с несколькими колонками на каждую nested-колонку
  • Мария, вот такой запрос не работает(отрабатывает, но в таблице есть дубликаты), вы не могли бы подсказать что я делаю не правильно: insert into table1
    select ...
    from table2
    where table2.id not in (select id from table1)
    group by table2.id
  • Кстати, попробуйте выполнить SHOW CREATE TABLE для таблицы содержащей Nested колонку :)
  • https://t.me/clickhouse_ru
    Не соглашусь с вами) сейчас у меня вся древовидная структура просто сложена в большую плоскую таблицу, и в принципе меня это устраивает , но меня мучает сомнения что nested структура будет работать быстрее
  • https://t.me/clickhouse_ru
    @stufently #57321 02:24 PM, 02 Jul 2018
    ну залейте так и так и проверьте
  • А как у вас получилось древовидную струкутуру запихать в большую плоскую таблицу? Т.е. в этом примере с сессиями-хитами-продуктами у вас столько строк сколько продуктов во всех хитах каждой сессии? Или как?
  • https://t.me/clickhouse_ru
    Все верно
  • https://t.me/clickhouse_ru
    @miptgirl ↶ Reply to #57317 #57324 02:24 PM, 02 Jul 2018
    А что значит "не работает"? Какой exception отдает БД?
  • https://t.me/clickhouse_ru
    Очень интересный момент
  • Никакой. Все вставляет, только в таблице есть дубликаты, а их быть не должно исходя из запроса.
  • https://t.me/clickhouse_ru
    Не буду вас пытать, почему для всех полей в Nested структуре у них тип array
  • Тут все зависит от запросов. Если у вас для большинства запросов нужен самый глубокий элемент вашей древовидной структуры (т.е. в том примере - продукты), и база с этим справляется - то ничего менять не нужно. "Работает? - не трогай!".
  • @mfilimonov #57329 02:30 PM, 02 Jul 2018
    У нас например значительно больше запросов выполняются на более высоких элементах этой структуры, и если бы мы попробовали все сделать плоско - то это требовало бы постоянных GROUP BY, и увеличивало бы количество строк раз в 10. Т.е. было бы больше данных, медленнее процессинг. Для нас такой вариант ну вообще никак не подходит.
  • https://t.me/clickhouse_ru
    Это позиция на текущий момент, но с ростом количества данных, думаю не лучший вариант
  • https://t.me/clickhouse_ru
    Вы читаете мои мысли) поэтому и пришёл сюда с этим вопросом
  • Потому что Nested - это просто syntax sugar для набора таблиц, размер которых совпадает.
  • https://t.me/clickhouse_ru
    На данный момент большинство запросов по хитам, т.е это не самый глубокий уровень, но чем больше период тем тяжелее расчеты
  • https://t.me/clickhouse_ru
    Наконец то я понял о чем вы говорите) благодарю )
  • Ну вот на таком уровне где у вас большинство запросов и оставляйте стуктуру плоской. Т.е. просто добавить к хитам sessionid а продукты храните в массиве. И никаких проблем со вложенностью не будет.
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Еще как вариант думаю завести materialized view и вставлять туда только 10% данных.
    На размере диска почти не скадется зато можно будет тяжелый запросы для которых точность не критична перенапрявлять туда.
    Норм идея?
  • Ну или matview в таблицу с GraphiteMergeTree :D
  • https://t.me/clickhouse_ru
    @343206394 #57339 02:41 PM, 02 Jul 2018
    GraphiteMergeTree как я понял требует определенной структуры таблицы + материализованное представление мне понятнее и управление тем что туда должно вставляться как то через ДДЛ нагляднее
  • @qhang #57340 02:43 PM, 02 Jul 2018
    А массивы в аттрибутах внешних словарей не поддерживаются, я правильно понимаю?
  • Support Arrays in External Dictionaries · Issue #2135 · yandex/ClickHouse

    I had a conversation with @alexey-milovidov in Telegram today about supporting arrays in external dictionary attributes. A good use case might be something like Stack Overflow where users can updat...

  • @qhang #57342 02:46 PM, 02 Jul 2018
    спасибо
  • https://t.me/clickhouse_ru
    @dimzon541 #57343 02:49 PM, 02 Jul 2018
    люди, .NET-овский драйвер падает с ошибкой "Max query size exceeded"
  • https://t.me/clickhouse_ru
    @dimzon541 #57344 02:49 PM, 02 Jul 2018
    где в доках прочитать про ограничение?\
  • @mfilimonov #57345 02:51 PM, 02 Jul 2018
    Where should I specify max query size? · Issue #2529 · yandex/ClickHouse

    Hi, I would like to ask. Where can I increase max_query_size parameter? I tried to create entry in config.xml (<max_query_size>1000000</max_query_size> but it didn&#...

  • https://t.me/clickhouse_ru
    @bsideup #57347 03:07 PM, 02 Jul 2018
    А materialized views можно из старых данных делать?
  • @pavlov_m #57348 03:08 PM, 02 Jul 2018
    День добрый,
    Что может означать вот эта ошибка? И как с ней бороться? И если она происходит, то что происходит с данными?

    <Error> HTTPHandler: Code: 354, e.displayText() = DB::Exception: inflate failed: buffer error, e.what() = DB::Exception, Stack trace
  • https://t.me/clickhouse_ru
    Да, если добавить в команду создания MV слово POPULATE (пока MV будет создаваться, вставляемые в исходную таблицу данные не попадут в MV)
  • https://t.me/clickhouse_ru
    @bsideup ↶ Reply to #57349 #57350 03:10 PM, 02 Jul 2018
    О, спасибо!
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #57351 03:12 PM, 02 Jul 2018
    Советую при использовании MV сначала создать обычную таблицу MergeTree со структурой запроса. И прицепить MV к этой таблице
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #57352 03:12 PM, 02 Jul 2018
    Тогда вы сможете например отцепить MV, изменить таблицу и обратно прицепить MV
  • https://t.me/clickhouse_ru
    @bsideup #57353 03:14 PM, 02 Jul 2018
    Угу, именно так и делаем, спасибо!
  • https://t.me/clickhouse_ru
    @ntukkel #57354 03:43 PM, 02 Jul 2018
    есть где подробные примеры по sequenceMatch и windowFunnel?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @ntukkel #57356 03:52 PM, 02 Jul 2018
    спасибо, но мало 😊
  • https://t.me/clickhouse_ru
    @nordluf #57357 04:28 PM, 02 Jul 2018
    Господа, просто на всякий случай - а Кликхаус словари с сорсом в монгодб нормально работает с кластером?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @ntukkel #57359 04:37 PM, 02 Jul 2018
    спасибо
  • https://t.me/clickhouse_ru
    @dimzon541 #57360 07:37 PM, 02 Jul 2018
    А скажите пожалуйста почему таймстампы в примерах хрянятся как числа а не как честные datetime. Есть какая-то хитрость?
  • https://t.me/clickhouse_ru
    @stufently #57361 07:56 PM, 02 Jul 2018
    ну таймстемп потому что число
  • https://t.me/clickhouse_ru
    А технически в этом есть преимущество какое-то? Просто я только учусь мыслить кликхаусом, у меня сейчас даты честные...
  • https://t.me/clickhouse_ru
    @stufently #57363 08:01 PM, 02 Jul 2018
    Ну таймстемп это число, везде, о каких преимуществах может идти речь?
  • https://t.me/clickhouse_ru
    @vstepankov #57364 08:02 PM, 02 Jul 2018
    очень удобно и нативно можно даты сортировать и вычитать.
    Это unixtime.
    И как бы, вы сами спрашиваете о таймстампе, это именно число
  • https://t.me/clickhouse_ru
    Они и типизированные также сортируются а при вычитании секунды получаются...
  • https://t.me/clickhouse_ru
    unixtime можно в любом языке складывать и вычитать и не париться о тонкостях парсинга даты или ещё чему.
    Жизнь не только в кликхаусе существует
  • https://t.me/clickhouse_ru
    @vstepankov #57367 08:36 PM, 02 Jul 2018
    кликхаузный datetime всё равно инфу о часовых поясах не хранит, зато вы можете поиметь проблем, о чём в доке написано
    То есть, при работе с датой в виде текста (например, при сохранении текстовых дампов), следует иметь ввиду о проблемах с неоднозначностью во время перевода стрелок назад, и о проблемах с соответствием данных, при смене часового пояса.
  • https://t.me/clickhouse_ru
    Вот с этим ужо воюю, вроде бы победил...
  • https://t.me/clickhouse_ru
    @vstepankov #57369 08:40 PM, 02 Jul 2018
    я пока на самом деле сам не представляю что делать, если у кого-то из правительства айфон поломается и он снова часы решит подвигать.
    Склоняюсь к тому, что всё абсолютно буду хранить в UTC, а костыли уже на стороне приложения иметь
  • https://t.me/clickhouse_ru
    @dimzon541 #57370 08:43 PM, 02 Jul 2018
    Вот я тоже все в utc. Только как datetime...
  • https://t.me/clickhouse_ru
    Ещё интересные статейки есть? Очень интересный пример, показано чем заменить оконные функции...
  • 03 July 2018 (140 messages)
  • https://t.me/clickhouse_ru
    @fiksilya #57372 06:57 AM, 03 Jul 2018
    Коллеги, точно помню, что была функция вычисления гистограммы, но не могу найти ее
  • https://t.me/clickhouse_ru
    @vstepankov #57373 06:57 AM, 03 Jul 2018
    bar?
    https://clickhouse.yandex/docs/ru/functions/other_functions/#bar
  • https://t.me/clickhouse_ru
    @fiksilya #57374 06:58 AM, 03 Jul 2018
    да!
  • @asb_r72 #57375 08:46 AM, 03 Jul 2018
    Всем привет. А как можно посмотреть, что именно тормозит insert? вставляю по http порциями по 600к строк. В логе межу событием <Debug> executeQuery: и следующим проходит около 20 секунд
  • https://t.me/clickhouse_ru
    @dimzon541 #57376 08:52 AM, 03 Jul 2018
    так и не нашел где выставить max_query_size в настройках. в config.xml доавляю в корневой элемент yandex, рестартую клинхаус и пофиг
  • https://t.me/clickhouse_ru
    нашел - надо в users
  • https://t.me/clickhouse_ru
    @ValarMorghuliis #57379 09:06 AM, 03 Jul 2018
    Всем привет! Начала расти память и пул-таски на кластере Кликхауса - вот скрин https://yadi.sk/i/RwkO1fqZ3YhuXg - а после и ноды начали падать совсем, и перестает отвечать БД.
    Нагрузка на кластер не выростала извне, количество запросов было такое же, как и примерно последние два месяца. Но вот сегодня что-то случилось непонятное. Может кто-то с таким сталкивался или есть примерные причины происходящего роста графиков и падений нод?
  • https://t.me/clickhouse_ru
    @stufently #57380 09:08 AM, 03 Jul 2018
    посмотрите логи и топ на сервере
  • https://t.me/clickhouse_ru
    Кстати, а вот чем можно объяснить такое:
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Запросы на узлы раскидываются равномерно, объём места в этих репликах также изменяется синхронно, как и нагрузка на процессор.
  • https://t.me/clickhouse_ru
    Да, версия - 1.1.54381
  • https://t.me/clickhouse_ru
    После рестарта проблемного узла какое-то время всё нормально, потом снова начинается жор.
  • https://t.me/clickhouse_ru
    @Krashuevina #57386 09:21 AM, 03 Jul 2018
    Регулярно с такой же проблемой сталкиваемся, и решения не нашли.
  • https://t.me/clickhouse_ru
    @Krashuevina #57387 09:21 AM, 03 Jul 2018
    Выжирает память в ноль и падает
  • @pavlov_m ↶ Reply to #57386 #57388 09:23 AM, 03 Jul 2018
    А какие настройки меняли?
  • @pavlov_m #57389 09:24 AM, 03 Jul 2018
    Может какой то unlimit uncompressed cache стоит..
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #57390 09:24 AM, 03 Jul 2018
    При попытки использовать DELETE для таблицы MergeTree пишет такую ошибку
    Received exception from server (version 1.1.54388):
    Code: 48. DB::Exception: Received from localhost:9000, ::1. DB::Exception: Mutations are not supported by storage MergeTree.
    Тогда вопрос: а для каких движков поддерживается DELETE?
  • @pavlov_m #57391 09:25 AM, 03 Jul 2018
    ReplicatedMergeTree
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #57392 09:26 AM, 03 Jul 2018
    А почему для MergeTree не поддерживается? Всмысле разве MergeTree и ReplicatedMergeTree не одного семейства?
  • @pavlov_m ↶ Reply to #57392 #57393 09:27 AM, 03 Jul 2018
    Возможно он сохраняет данные в зукипере
  • @pavlov_m #57394 09:27 AM, 03 Jul 2018
    в процессе удаления
  • https://t.me/clickhouse_ru
    Лично у меня настройки дефолтные в смысле кешей. То есть, лежит себе config.xml, а что надо - меняю в config.d
    Пока понадобилось поменять - listen, логирование, макросы и вообще репликацию и зукипер. Для пользователей поменял лимит по-умолчанию, чтоб запросы влазили в память.
  • @pavlov_m ↶ Reply to #57395 #57396 09:30 AM, 03 Jul 2018
    А что поводу словарей? Может там утечка
  • @pavlov_m #57397 09:30 AM, 03 Jul 2018
    Я к тому, что у нас когда то словари порождали зомби процессы
  • https://t.me/clickhouse_ru
    словарей нет
  • https://t.me/clickhouse_ru
    зомбей тоже
  • https://t.me/clickhouse_ru
    SELECT
    name,
    value
    FROM system.settings
    WHERE changed = 1
    ORDER BY name ASC

    ┌─name─────────────────────────────┬─value───────┐
    │ background_pool_size │ 48 │
    │ connect_timeout_with_failover_ms │ 1000 │
    │ insert_distributed_sync │ 1 │
    │ load_balancing │ random │
    │ max_memory_usage │ 10000000000 │
    │ use_uncompressed_cache │ 0 │
    └──────────────────────────────────┴─────────────┘
  • https://t.me/clickhouse_ru
    ┌─name───────────────────┬─value──────┐
    │ load_balancing │ random │
    │ max_memory_usage │ 4000000000 │
    │ use_uncompressed_cache │ 0 │
    └────────────────────────┴────────────┘
  • https://t.me/clickhouse_ru
    Как-то искуствено выглядит, ведь для друг операций разницы нет между ними
  • @pavlov_m #57403 09:38 AM, 03 Jul 2018
    А скажите, а движки какие используете? Может есть таблицы с Engine=memory?
  • https://t.me/clickhouse_ru
    только буферы
  • https://t.me/clickhouse_ru
    +1
  • https://t.me/clickhouse_ru
    Общий объём точно меньше, чем сожранное. Где-то раз в 10, если не в 50.
  • @konstantin_mitjurin #57407 09:45 AM, 03 Jul 2018
    народ, добрый день
  • @konstantin_mitjurin #57408 09:46 AM, 03 Jul 2018
    что-то запамятовал
  • @konstantin_mitjurin #57409 09:46 AM, 03 Jul 2018
    как посмотреть запрос у материализованой вьюшки?
  • https://t.me/clickhouse_ru
    @Lacost_e #57410 09:46 AM, 03 Jul 2018
    show create?
  • @konstantin_mitjurin #57411 09:46 AM, 03 Jul 2018
    неа
  • @konstantin_mitjurin #57412 09:47 AM, 03 Jul 2018
    показывает только структуру
  • @konstantin_mitjurin #57413 09:47 AM, 03 Jul 2018
    самого запроса не видно...
  • https://t.me/clickhouse_ru
    @Lacost_e #57414 09:47 AM, 03 Jul 2018
    не ту таблицу значит смотрите
  • @konstantin_mitjurin #57415 09:49 AM, 03 Jul 2018
    как бы ту...
  • https://t.me/clickhouse_ru
    @Lacost_e #57416 09:50 AM, 03 Jul 2018
    вероятно есть другая таблица которая собственно является вьюхой и перегоняет данные в ту запрос которой вы сейчас смотрите
  • https://t.me/clickhouse_ru
    @Lacost_e #57417 09:50 AM, 03 Jul 2018
    т.е. сама вьюха и целевая таблица не обязательно совпадают.
  • @konstantin_mitjurin #57418 09:52 AM, 03 Jul 2018
    все, нашел
  • @konstantin_mitjurin #57419 09:52 AM, 03 Jul 2018
    спасибо
  • @ztlpn ↶ Reply to #57392 #57420 09:57 AM, 03 Jul 2018
    Скоро для нереплицированных MergeTree доделаю поддержку. Там все проще, поэтому сначала сделал сложный кейс.
  • https://t.me/clickhouse_ru
    Спасибо, очень жду
  • https://t.me/clickhouse_ru
    @Shegloff #57422 10:49 AM, 03 Jul 2018
    как рандомно отсортировать массив [1,2,3,4,5,6]
  • https://t.me/clickhouse_ru
    @Shegloff #57424 10:57 AM, 03 Jul 2018
    SELECT arraySort(x -> rand(x), [1, 2, 3, 4, 5, 6]);
  • https://t.me/clickhouse_ru
    @andrey_konyaev #57427 11:58 AM, 03 Jul 2018
    при использовании новой функции windowFunnel CH начала падать
    `2018.07.03 14:07:55.182888 [ 150 ] <Error> BaseDaemon: (from thread 77) Received signal Segmentation fault (11).
    2018.07.03 14:07:55.182892 [ 150 ] <Error> BaseDaemon: Address: NULL pointer.
    2018.07.03 14:07:55.182896 [ 150 ] <Error> BaseDaemon: Access: read.
    2018.07.03 14:07:55.182899 [ 150 ] <Error> BaseDaemon: Unknown si_code.
    2018.07.03 14:07:55.203467 [ 150 ] <Error> BaseDaemon: 0. clickhouse-server(tcmalloc::ThreadCache::ReleaseToCentralCache(tcmalloc::ThreadCache::FreeList*, unsigned long, int)+0x11b) [0x59de79b]
    2018.07.03 14:07:55.203478 [ 150 ] <Error> BaseDaemon: 1. clickhouse-server(tcmalloc::ThreadCache::Scavenge()+0x44) [0x59de8c4]`
  • https://t.me/clickhouse_ru
    @dimzon541 #57428 12:10 PM, 03 Jul 2018
    есть таблица MergeTree, по ней нужно прогнать несколько тяжелых запросов с агреггацией. Имеет ли смысл пытаться запустить эти запросы параллельно из разных потоков?
  • https://t.me/clickhouse_ru
    Обычно нет
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #57430 12:13 PM, 03 Jul 2018
    КХ сам умеет использовать все доступные (указаные в конфиге) ресурсы
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #57433 01:21 PM, 03 Jul 2018
    Изучаю репликацию, создал две реплики (на удалёном сервер и на локальном компе). Пробросил порт zookeer-а с удалёного на комп.
    SELECT active_replicas
    FROM system.replicas
    WHERE table = 'load_stat'
    показывает что две активных реплики, но в локальной базе 0 записей. Я так понимаю, чтобы КХ мог передавать данные реплики должны видеть друг друга. Но какой порт он использует для репликации, 9000?
  • https://t.me/clickhouse_ru
    @paveltyavin #57434 01:21 PM, 03 Jul 2018
    Подскажите, какой BI умеет стучаться в clickhouse без odbc-драйвера?
  • https://t.me/clickhouse_ru
    Я Pentaho использовал, Apache Zeppelin (не совсем BI), redash (какой-то употорый как по мне)
  • https://t.me/clickhouse_ru
    @baltazorbest #57436 01:22 PM, 03 Jul 2018
    Приветствую. Подскажите пожалуйста, хватит ли прав «select» для словаря в MySQL?
  • А как в Pantaho с join`ом CH и Postgres, для примера?
  • @thodin ↶ Reply to #57431 #57438 01:24 PM, 03 Jul 2018
    метадату достаточно удобно писать.
    залил 1 746 951 782 строк - 31Гб места.
  • https://t.me/clickhouse_ru
    В Пентахо я до join не дошёл, у меня он в течении 10 минут зависал. Скорее всего я не умею java настраивать
  • @qhang #57440 01:27 PM, 03 Jul 2018
    так там джойны в джаве делаются, источники данных без разницы
  • https://t.me/clickhouse_ru
    @SLASH_CyberPunk #57441 01:27 PM, 03 Jul 2018
    пентахо - это етл, там джойны делаются из серии "загрузим первую таблицу в память и потом джойним вторую"
  • https://t.me/clickhouse_ru
    @SLASH_CyberPunk #57442 01:27 PM, 03 Jul 2018
    памяти если нет - падает
  • @qhang #57443 01:28 PM, 03 Jul 2018
    ну не совсем, там он потоково(stream) работает и если датасеты отсортированы то в памяти нет нужды все держать
  • https://t.me/clickhouse_ru
    @SLASH_CyberPunk #57444 01:28 PM, 03 Jul 2018
    это уже более гибкое решение джойна, однако результат это не отменяет
  • @qhang #57445 01:31 PM, 03 Jul 2018
    если сортировать в самой пентахо, то конечно да
    но если на вход подавать отсортированый результат запросы к бд, то норм джойнит большие потоки данных, правда мозг нужно немного вывернуть чтобы нужным образом нарисовать обработку
  • https://t.me/clickhouse_ru
    @SLASH_CyberPunk #57446 01:32 PM, 03 Jul 2018
    вам все равно надо держать в памяти один "отсортированный кусок", чтобы джойнить на другой
  • https://t.me/clickhouse_ru
    @dimzon541 #57447 01:35 PM, 03 Jul 2018
    господа а есть ограничение на union_all? сколько запросов можно соединить? 10000 можно?
  • https://t.me/clickhouse_ru
    Вообщем пробросил 9000 порт (порт КХ с удалёного сервера виден на локаальной машине), подождал 10 минут и таблица отреплицировалась
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #57449 01:55 PM, 03 Jul 2018
    При написании команду удаления из ReplicatedMergeTree опечатался в WHERE с датой и в логе пишет такое
    <Error> ukit.load_stat (StorageReplicatedMergeTree): DB::StorageReplicatedMergeTree::queueTask()::<lambda(DB::StorageReplicatedMergeTree::LogEntryPtr&)>: Code: 0, e.displayText() = DB::Exception: String is too long for Date: 20178-06-01, e.what() = DB::Exception, Stack trace:

    Оно там циклично появляется. Можно как-то убрать эту команду? В processlist пусто
  • https://t.me/clickhouse_ru
    @EvgenyVinogradov #57450 02:34 PM, 03 Jul 2018
    Помоги пожалуйста победить проблему

    конфигурация:
    2 ЦОДа (ДЦ1 и ДЦ2) по - 5 шард по 3 реплики в шарде.
    ипользую табличный движок ReplicatedMergeTree
    сделал:
    1. Сопировал БД ДЦ1 на ДЦ2 через detach/attach по партишенам по одной реплике из каждой шарды
    2. Репликация внутри каждой шарды прошла успешно
    есть проблема с zookeeper:
    2018.07.03 17:00:02.378153 [ 1 ] <Error> Application: DB::Exception: Cannot create table from metadata file /clickhouse/metadata/SOMEDATABASE//SOMETABLE.sql, error: zkutil::KeeperException: Can't get data for node /clickhouse/tables/01/SOMETABLE/metadata: node doesn't exist (no node), stack trace:

    На стороне ZK ошибок нет.
  • https://t.me/clickhouse_ru
    @stufently #57451 02:35 PM, 03 Jul 2018
    Ощущение что вы метаданные скопировали вместо того чтобы создать таблицу через консоль
  • https://t.me/clickhouse_ru
    таблицы создал перед копированием через detach/attach
  • https://t.me/clickhouse_ru
    @EvgenyVinogradov #57453 02:36 PM, 03 Jul 2018
    можно ли по существующим данным воссоздать необходимое в zk?
  • https://t.me/clickhouse_ru
    ну сперва мне кажется надо вам разобраться куда делись данные из зк , не каждый же раз востанавливать
  • https://t.me/clickhouse_ru
    по autopurgeinterval судя по всему.
  • https://t.me/clickhouse_ru
    а зачем он нужен?
  • https://t.me/clickhouse_ru
    @stufently #57457 02:57 PM, 03 Jul 2018
    ну а так видимо надо детачнуть все и создать снова таблицы
  • https://t.me/clickhouse_ru
    @stufently #57458 02:57 PM, 03 Jul 2018
    а потом аттачнуть
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #57459 02:57 PM, 03 Jul 2018
    Создал issue по моей проблеме https://github.com/yandex/ClickHouse/issues/2588
    Зацикливание команды удаления · Issue #2588 · yandex/ClickHouse

    Создал реплицируемую таблицу (удалёный сервер) Залил туда данные (из обычной MergeTree через INSERT INTO ... SELECT ... примерно 200кк записей) На ноуте а. пробросил порты для Zookeeper и ClickHous...

  • https://t.me/clickhouse_ru
    очевидно да. Спасибо
  • @konstantin_mitjurin #57461 04:18 PM, 03 Jul 2018
    ребят, я тут, что-то в ступор вошел
  • @konstantin_mitjurin #57462 04:18 PM, 03 Jul 2018
    есть таблица с данными
  • @konstantin_mitjurin #57463 04:19 PM, 03 Jul 2018
    допустим таблица А
  • @konstantin_mitjurin #57464 04:19 PM, 03 Jul 2018
    я хочу перенести данные в таблицу Б, но при этому поменяв данные в одно поле
  • @konstantin_mitjurin #57465 04:19 PM, 03 Jul 2018
    допустим, как в постгресе я сделал инсерт селект
  • @konstantin_mitjurin #57466 04:20 PM, 03 Jul 2018
    но как бы не так, селект возвращает 0 строк
  • @konstantin_mitjurin #57467 04:21 PM, 03 Jul 2018
    insert into tableB (field1, field2, field3) select field1, field2, 'sometext' as field3 from tableB
  • @konstantin_mitjurin #57468 04:22 PM, 03 Jul 2018
    что-то не так или КХ так не умеет?
  • https://t.me/clickhouse_ru
    @orantius #57469 04:23 PM, 03 Jul 2018
    а почему с обоих сторон одна таблица?
  • @konstantin_mitjurin #57470 04:25 PM, 03 Jul 2018
    оечатка - в селекте tableA
  • @konstantin_mitjurin #57471 04:27 PM, 03 Jul 2018
    insert into tableB (field1, field2, field3) select field1, field2, 'sometext' as field3 from tableA where date=today() and field3 = 'othertext'
  • @konstantin_mitjurin #57472 04:27 PM, 03 Jul 2018
    вот так выглядит запрос
  • @konstantin_mitjurin #57473 04:28 PM, 03 Jul 2018
    в чем суть
  • https://t.me/clickhouse_ru
    @orantius #57474 04:28 PM, 03 Jul 2018
    а вот так работать не будет
  • https://t.me/clickhouse_ru
    @orantius #57475 04:29 PM, 03 Jul 2018
    а если не писать as field3, что-нибудь вставляется?
  • @konstantin_mitjurin #57476 04:30 PM, 03 Jul 2018
    where полностью или частично - отрабатывает после выборки и так как field3 уже везде = 'sometext'
  • @konstantin_mitjurin #57477 04:30 PM, 03 Jul 2018
    по этому и 0 строк в выборке
  • @konstantin_mitjurin #57479 04:44 PM, 03 Jul 2018
    пробовал и так: insert into tableB (field1, field2, field3) select field1, field2, 'sometext' as temp from tableA where date=today() and field3 = 'othertext'
  • @konstantin_mitjurin #57480 04:45 PM, 03 Jul 2018
    получаю ошибку: There is no column with name temp. There are columns: field1, field2, field3
  • @konstantin_mitjurin #57481 04:47 PM, 03 Jul 2018
    @milovidov_an
  • @konstantin_mitjurin #57482 04:48 PM, 03 Jul 2018
    подскажете, что в моем запросе не так?
  • https://t.me/clickhouse_ru
    @orantius #57483 04:51 PM, 03 Jul 2018
    INSERT INTO x (a) SELECT 42 AS b, странно у меня такое работает.
  • @konstantin_mitjurin #57484 05:07 PM, 03 Jul 2018
    попробуйте на живых таблицах
  • https://t.me/clickhouse_ru
    @Shegloff #57485 05:09 PM, 03 Jul 2018
    Надо с подзапросом
  • уже пробую, но не выходит...
  • https://t.me/clickhouse_ru
    @Shegloff #57487 05:10 PM, 03 Jul 2018
    В подзапросе реальная filed3, а сверху фейковая
  • @konstantin_mitjurin #57488 05:11 PM, 03 Jul 2018
    да, так и делал
  • @konstantin_mitjurin #57489 05:11 PM, 03 Jul 2018
    теперь ругается, что кол-во колонок в селекте не соответсвует кол-ву колонок а инсерте
  • @konstantin_mitjurin #57490 05:11 PM, 03 Jul 2018
    хотя все 1 в 1...
  • https://t.me/clickhouse_ru
    @Shegloff ↶ Reply to #57486 #57491 05:12 PM, 03 Jul 2018

    insert into tableB (field1, field2, field3) select field1, field2, 'sometext' as field3 from (selext field1, field2 from tableA where date=today() and field3 = 'othertext')
  • @konstantin_mitjurin #57492 05:13 PM, 03 Jul 2018
    хм, я делал select *, 'sometext' as field3
  • @konstantin_mitjurin #57493 05:13 PM, 03 Jul 2018
    может по этому
  • @konstantin_mitjurin #57494 05:13 PM, 03 Jul 2018
    сейчас пропишу все поля
  • https://t.me/clickhouse_ru
    @Shegloff #57495 05:14 PM, 03 Jul 2018
    Еще можно вообще field3 не вставлять, а сделать его DEFAULT 'sometext'
  • @konstantin_mitjurin #57496 05:15 PM, 03 Jul 2018
    DB::Exception: Size of selector doesn't match size of column..
  • @konstantin_mitjurin #57497 05:15 PM, 03 Jul 2018
    бред...
  • @konstantin_mitjurin #57498 05:15 PM, 03 Jul 2018
    нельзя так сделать
  • https://t.me/clickhouse_ru
    @Shegloff #57499 05:15 PM, 03 Jul 2018
    После вставки уже проальтерить как надо
  • https://t.me/clickhouse_ru
    @Shegloff ↶ Reply to #57498 #57500 05:15 PM, 03 Jul 2018
    insert into tableB (field1, field2) select field1, field2 from tableA where date=today() and field3 = 'othertext'
  • @konstantin_mitjurin #57501 05:16 PM, 03 Jul 2018
    я говорю про дефолт значение
  • https://t.me/clickhouse_ru
    @Shegloff #57502 05:18 PM, 03 Jul 2018
    Почему нельзя
  • @konstantin_mitjurin #57503 05:21 PM, 03 Jul 2018
    в общем, получилось только так:
  • @konstantin_mitjurin #57504 05:21 PM, 03 Jul 2018
    1) создать временную таблицу из селекта
    2) интсерт селект из темп таблицы
  • https://t.me/clickhouse_ru
    @nordluf #57505 06:35 PM, 03 Jul 2018

    2018.07.03 18:34:38.751066 [ 25 ] <Error> HTTPHandler: Code: 50, e.displayText() = DB::Exception: Unknown type Array(String), e.what() = DB::Exception, Stack trace:

    А как указать в словаре массив строк правильно?
  • @193101629 #57506 07:03 PM, 03 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @blinkovivan #57508 07:14 PM, 03 Jul 2018
    Опубликована документация по ALTER TABLE ... DELETE: https://clickhouse.yandex/docs/ru/query_language/queries/#_7
  • https://t.me/clickhouse_ru
    В словаре массивы не поддерживаются, только простые типы. Есть запрос на добавление такой функции
  • https://t.me/clickhouse_ru
    @nordluf ↶ Reply to #57509 #57510 08:13 PM, 03 Jul 2018
    :( спасибо
  • https://t.me/clickhouse_ru
    @nordluf #57511 08:29 PM, 03 Jul 2018
    Хорошо, тогда я буду делать таблицу справочник и тогда есть вопрос - что эффективнее. Одна строка в которой будет два массива с множеством элементов (и дальше array join) или по строке на запись?
  • https://t.me/clickhouse_ru
    @madm1ke #57512 08:51 PM, 03 Jul 2018
    Привет. Вопрос на засыпку - как можно проверить, что макросы для реплицированных таблиц успешно подгрузились из отдельного файла, кроме как создать тестовую таблицу?
  • @garikanet #57513 09:07 PM, 03 Jul 2018
    Сообщество, а тут есть пользователи phpClickHouse ?
    Можете зайти и высказаться за отказ от php 5.6 в пользу 7.2 ))

    У меня рука не поднимается выкинуть "эпоху"
    спасибо!

    https://github.com/smi2/phpClickHouse/issues/69
    Drop support for legacy PHP versions #69

    I have mentioned it few times ago, creating this issue just to be notified, when it is dropped so I don't have to come back regularly and read commits :) Current PHP version is 7.2, 7.3 will be released soon. 5.6 is ~4 years old, current...

  • Для простой фильтрации мы делаем так: пишем массив строкой, в виде {,a,b,c,}, в WHERE пишем arr_col like '%,a,%'
  • Ставьте лайк :)
    https://github.com/yandex/ClickHouse/issues/1640
    поддержка массивов в словарях · Issue #1640 · yandex/ClickHouse

    Приветствую. Массивы в словарях на текущий момент, насколько я мог понять, не поддерживаются. В качестве источника словаря используем PostgreSQL, массивы в которых имеют вид "{el1, el2, .....

  • https://t.me/clickhouse_ru
    @nordluf #57516 09:41 PM, 03 Jul 2018
    Но ведь сравнение чисел будет работать гораздо быстрее чем поиск по строке
  • @Maritty #57517 09:59 PM, 03 Jul 2018
    Joined.
  • @f1yegor ↶ Reply to #57508 #57518 10:55 PM, 03 Jul 2018
    great
  • 04 July 2018 (233 messages)
  • @238773844 #57519 01:16 AM, 04 Jul 2018
    Всем привет.

    Возник вопрос: после заливки данных при запросе поочередно(после 2-3 раз запуска) меняются результаты:

    Таблица distributed которая смотрит на replicatedMergeTree(2 шардами: 2 реплики + 1 реплика)

    Куда копать?

    SELECT
    sum(some_field) / 10000,
    count()
    FROM some_table

    ┌─divide(sum(some_field), 10000)─┬───count()─┐
    │ 7103212.5257 │ 529082508 │
    └────────────────────────────────┴───────────┘

    ----

    SELECT
    sum(some_field) / 10000,
    count()
    FROM some_table

    ┌─divide(sum(some_field), 10000)─┬───count()─┐
    │ 7128549.5722 │ 535841204 │
    └────────────────────────────────┴───────────┘
  • @238773844 #57520 01:17 AM, 04 Jul 2018
    причем count только 535841204 или 529082508
  • @238773844 #57521 01:40 AM, 04 Jul 2018
    нашел
  • @238773844 #57522 01:41 AM, 04 Jul 2018
    на репликах одной шарды разный count() из relicatedmergeTree
  • @238773844 #57523 01:41 AM, 04 Jul 2018
    вопрос все тот же: куда копать?
  • @238773844 #57524 01:56 AM, 04 Jul 2018
    похоже нашел: напортачил с макросами. в definition таблицы на узлах одного шарда макросы <shard> разные
  • https://t.me/clickhouse_ru
    @dimzon541 #57525 06:24 AM, 04 Jul 2018
    Есть таблица engine= memory столбцов около 2000. По ней надо прогнать 1000 однотипных запросов каждый из запросов обращается к 2 разным столбцам. Один запрос отрабатывает практически мгновенно. 1000 запросов в цикле долговато при этом загрузка ядер на КХ никакая и памяти свободной море... Пробовал склеить 1000 запросов через union all - утилизация ядер улучшилась но всё равно ниже 50%... Долбить 1000 запросов из разных потоков не хочется... Есть идеи?
  • https://t.me/clickhouse_ru
    @xomaa #57526 06:30 AM, 04 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @xomaa #57527 08:10 AM, 04 Jul 2018
    Привет всем! Начали внедрять кликхаус для ряда задачек. Ищем простое и рабочее решение для репликации из мускула в кликхаус, пока смотрим на https://github.com/Altinity/clickhouse-mysql-data-reader
    Может есть что-то получше ?
    GitHub - Altinity/clickhouse-mysql-data-reader: utility to read mysql data

    utility to read mysql data. Contribute to Altinity/clickhouse-mysql-data-reader development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    мы просто через движок MySQL базу в CH подтянули
  • https://t.me/clickhouse_ru
    @xomaa #57529 08:12 AM, 04 Jul 2018
    А где почитать? Или как загуглить? =)
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    а не подскажите синтаксиси создания такого движка ? Нужно ли создовать все поля в КХ или они динамически подтянутся из msql ?
  • https://t.me/clickhouse_ru
    @leonido310 #57533 08:26 AM, 04 Jul 2018
    имена полей должны совпадать.
    структура - вроде не обязательно. если в CH полей объявлено меньше, чем в MySQL - у нас работает.
  • https://t.me/clickhouse_ru
    @leonido310 #57534 08:26 AM, 04 Jul 2018
    синтаксис - в доке вроде доступно описан.
  • https://t.me/clickhouse_ru
    а как решили проблему с джоинами ? если боьшинство таблиц нормализованно, джоины на уровне КХ ?
  • https://t.me/clickhouse_ru
    @leonido310 #57536 08:34 AM, 04 Jul 2018
    да
  • https://t.me/clickhouse_ru
    @leonido310 #57537 08:34 AM, 04 Jul 2018
    КХ делает запрос в Мускуль, берет оттуда данные и приджоиневает их к результату
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #57538 09:21 AM, 04 Jul 2018
    Создал реплицируемую таблицу, залил данные через INSERT INTO .. SELECT

    Вроде всё нормально, но в логе постоянно пишется такое
    2018.07.04 12:19:31.594641 [ 2 ] <Debug> load_stat (ReplicatedMergeTreeQueue): Not executing log entry for part 20180317_20180319_285_290_1 because source parts size (30.02 MiB) is greater than the current maximum (4.45 MiB).
    На что это влияет и что можно подкрутить в настройках чтобы такого не писало?
  • @antonio_antuan #57539 11:14 AM, 04 Jul 2018
    а нет ли в планах для внешних словарей убрать ограничение в 500к записей?
  • https://t.me/clickhouse_ru
    @Sablast ↶ Reply to #57539 #57540 11:17 AM, 04 Jul 2018
    вроде можно собрать самим увеличив лимит
  • было б неплохо, куда тыкать?
  • https://t.me/clickhouse_ru
    @Sablast ↶ Reply to #57541 #57542 11:19 AM, 04 Jul 2018
    это точно был параметр MAX_PAGES, надо только вспомнить где)
  • @antonio_antuan #57543 11:20 AM, 04 Jul 2018
    https://github.com/yandex/ClickHouse/blob/master/dbms/src/Dictionaries/FlatDictionary.cpp

    static const auto max_array_size = 500000;
    ...
    if (id >= max_array_size)
    throw Exception{name + ": identifier should be less than " + toString(max_array_size), ErrorCodes::ARGUMENT_OUT_OF_BOUND};
    yandex/ClickHouse

    ClickHouse is a free analytic DBMS for big data.

  • @antonio_antuan #57544 11:20 AM, 04 Jul 2018
    не знаю плюсов, но подозреваю, что собрать с другим значением таки сложновато)
  • @antonio_antuan #57545 11:21 AM, 04 Jul 2018
    ну, только подправив сорцы
  • @antonio_antuan #57546 11:21 AM, 04 Jul 2018
    :)
  • https://t.me/clickhouse_ru
    @Sablast #57547 11:21 AM, 04 Jul 2018
    у меня был кейс с iptrie
    https://github.com/yandex/ClickHouse/blob/master/contrib/libbtrie/include/btrie.h
    yandex/ClickHouse

    ClickHouse is a free analytic DBMS for big data.

  • https://t.me/clickhouse_ru
    @vstepankov #57548 11:21 AM, 04 Jul 2018
    размер словаря он же из-за потребления памяти ограничен, кажись
  • https://t.me/clickhouse_ru
    @vstepankov #57549 11:21 AM, 04 Jul 2018
    вроде проскакивало это где-то
  • https://t.me/clickhouse_ru
    @Sablast #57550 11:22 AM, 04 Jul 2018
    #if !defined(BTRIE_MAX_PAGES)
    /// 54 ip per page. 8 bytes memory per page when empty
    #define BTRIE_MAX_PAGES 1024 * 2048 /// 128m ips , ~16mb ram when empty
    // #define BTRIE_MAX_PAGES 1024 * 65535 /// 4g ips (whole ipv4), ~512mb ram when empty
    #endif
  • @antonio_antuan #57551 11:29 AM, 04 Jul 2018
    ясненько, спасибо
  • Вчера на митапе говорили что с Superset заводится без проблем (сам ещё не пробовал).
  • @antonio_antuan #57553 11:33 AM, 04 Jul 2018
    Кстати, со словарями ещё интересная петрушка. Есть легаси бд, в которой 10к записей, но айдишники начинаются они с 500к как раз (не спрашивайте :) ). Мигрануть не представляется возможным :(
    Any ideas?
  • ЕМНИП ограничение есть только для <flat> словарей. Попробуйте перейти на <hashed>.
  • <hashed> :D
  • словари используем в подзапросах, типа того:

    select ... from some_table where obj_id in (select id from dict where dict_attr = 'value')

    можно ли предположить из слова hash, что поиск по атрибутам словаря, а не по ключам, будет работать так себе?
  • @antonio_antuan #57558 11:37 AM, 04 Jul 2018
    хотя ладно, проще проверить самому :)
  • @antonio_antuan #57559 11:37 AM, 04 Jul 2018
    спасибо
  • Поиск по атрибутам словаря для любого способа хранения словаря в памяти - идея "так себе".
  • @mfilimonov #57561 11:41 AM, 04 Jul 2018
    Словарь он и есть словарь. Это не полнотекстовый поиск с секондари индексами и т.п. :)
  • @antonio_antuan #57562 11:41 AM, 04 Jul 2018
    само-собой
  • @antonio_antuan #57563 11:41 AM, 04 Jul 2018
    но нас устраивает, альтернативы слишком ужасны
  • @antonio_antuan #57564 11:41 AM, 04 Jul 2018
    особенно если учесть, что лежат в RAM)
  • @mfilimonov #57565 11:42 AM, 04 Jul 2018
    Если нужно по атрибутам искать - то можно ещё один словарь сделать - словарь "наоборот" :)
  • @antonio_antuan #57566 11:42 AM, 04 Jul 2018
    10 атрибутов - 10 словарей?)
  • @mfilimonov #57567 11:42 AM, 04 Jul 2018
    А по всем 10 нужно искать? :)
  • @antonio_antuan #57568 11:42 AM, 04 Jul 2018
    иначе бы их не было
  • @antonio_antuan #57569 11:42 AM, 04 Jul 2018
    плюс, что делать, если атрибут - массив?)
  • @antonio_antuan #57570 11:43 AM, 04 Jul 2018
    сейчас пишем {,a,b,c,}, ищем через like '%,a,%'
  • @antonio_antuan #57571 11:43 AM, 04 Jul 2018
    :)
  • https://t.me/clickhouse_ru
    @nordluf #57572 11:43 AM, 04 Jul 2018
    Почему не сделать справочную таблицу?
  • @antonio_antuan #57573 11:43 AM, 04 Jul 2018
    потому что данные в этих таблицах постоянно обновляются
  • @antonio_antuan #57574 11:44 AM, 04 Jul 2018
    replicatedMergeTree не годится
  • @antonio_antuan #57575 11:44 AM, 04 Jul 2018
    или как там его
  • @antonio_antuan #57576 11:44 AM, 04 Jul 2018
    replacingMergeTree
  • @mfilimonov #57577 11:45 AM, 04 Jul 2018
    Ну самый "книжный" пример использования словаря - это например чтоб не писать в каждой строке полный адрес - вместо них записать почтовый индекс. Словарь при этом почти статический и обратный поиск, если и нужен то например из жанра "а выбери мне все почтовые индексы для города Москва".
  • @antonio_antuan #57578 11:45 AM, 04 Jul 2018
    На самом деле нас всё устраивает. Просто смотрим в будущее - рано или поздно количество записей в каком-нибудь справочнике может превысить лимит
  • @antonio_antuan #57579 11:45 AM, 04 Jul 2018
    эт я знаю
  • @mfilimonov #57580 11:46 AM, 04 Jul 2018
    И как вы обновляете этот словарь? Полностью перечитываете?
  • @antonio_antuan #57581 11:46 AM, 04 Jul 2018
    Однако есть где-то в документации использование таблиц с engine=dictionary, где описан как раз наш случай. И про то, что "это плохо" ничего не сказано)
  • @antonio_antuan #57582 11:46 AM, 04 Jul 2018
    Угу, а как иначе
  • @antonio_antuan #57583 11:46 AM, 04 Jul 2018
    odbc
  • @mfilimonov #57584 11:46 AM, 04 Jul 2018
    Звучит как профили пользователей :)
  • @antonio_antuan #57585 11:46 AM, 04 Jul 2018
    и не только они ;)
  • @antonio_antuan #57586 11:52 AM, 04 Jul 2018
    подергал такие два запроса, время выполнения одинаково (~0,01с):

    select groupArray(id) from offers where id = 1;
    select groupArray(id) from offers where category = 3;

    во втором случае - 3200к интов в массиве получилось
  • @antonio_antuan #57587 11:52 AM, 04 Jul 2018
    Так что с производительностью, видимо, проблем нет.
  • @mfilimonov #57588 11:52 AM, 04 Jul 2018
    Мы думали над чем-то подобным, пробовали сделать обертку в виде HTTP-микросервисов. Так чтоб можно было в любом направлении запрашивать словари, и чтоб не нужно было целиком их перечитывать какждый раз (много данных), а только при наличии необходимости в определенных данных. Когда попробовали proof-of-concept оказалось что КХ крайне неэффективно работает с HTTP словарями (в один поток).
  • @mfilimonov #57589 11:53 AM, 04 Jul 2018
    У вас видимо словари относительно терпимых размеров.
  • @antonio_antuan #57590 11:53 AM, 04 Jul 2018
    >100к пока что нет
  • @antonio_antuan #57591 11:54 AM, 04 Jul 2018
    в большинстве кол-во строк несколько тысяч
  • @antonio_antuan #57592 11:54 AM, 04 Jul 2018
    ~50
  • @antonio_antuan #57593 11:54 AM, 04 Jul 2018
    и то, в паре-тройке
  • @antonio_antuan #57594 11:55 AM, 04 Jul 2018

    select groupArray(id) from prelandings where name like '%a%';
    ...
    1 rows in set. Elapsed: 0.198 sec. Processed 33.60 thousand rows, 1.66 MB (169.44 thousand rows/s., 8.39 MB/s.)
  • @kalombos #57595 11:56 AM, 04 Jul 2018
    Подскажите, как в CH сгруппировать если значение равно 0 или NULL?
  • https://t.me/clickhouse_ru
    Включить 0 или NULL в одну группу?
  • @kalombos #57597 11:57 AM, 04 Jul 2018
    Да
  • @mfilimonov #57598 12:01 PM, 04 Jul 2018
    GROUP BY assumeNotNull(x)
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #57599 12:02 PM, 04 Jul 2018
    SELECT if(a IS NULL OR a = 0, null, a) AS k1, COUNT(*) FROM (SELECT arrayJoin([null, 1, 0, 10, null]) AS a) GROUP BY k1
  • @mfilimonov #57600 12:02 PM, 04 Jul 2018
    GROUP BY ifNull(x,0)
  • @kalombos #57601 12:04 PM, 04 Jul 2018
    Спасибо
  • @kalombos #57602 12:04 PM, 04 Jul 2018
    Еще вроде можно GROUP BY or(0, x) щас нашел
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #57603 12:07 PM, 04 Jul 2018
    Это репликация по этим портам данные гонятет что ли?
  • https://t.me/clickhouse_ru
    @nordluf ↶ Reply to #57573 #57604 12:21 PM, 04 Jul 2018
    А почему не хотите сделать таблицы которые будут наполняться новыми данными, а потом два ренейма?
  • Не очень понял смысл этого священнодейства) Есть же уже словари нормально работающие.
  • https://t.me/clickhouse_ru
    @nordluf #57606 12:33 PM, 04 Jul 2018
    Ну я так буду решать проблему с массивами. А у вас, я так понял, есть проблема с поисками в словарях?
  • @antonio_antuan #57607 12:42 PM, 04 Jul 2018
    нет, у нас потенциально есть проблема с размером flat-словаря, есть вероятность, что рано или поздно один из них вырастет до 500к записей
  • а какая у вас проблема с массивами?
  • https://t.me/clickhouse_ru
    @nordluf ↶ Reply to #57515 #57609 12:44 PM, 04 Jul 2018
    вот
  • @antonio_antuan #57610 12:44 PM, 04 Jul 2018
    а, понял :)
  • @antonio_antuan #57611 12:45 PM, 04 Jul 2018
    Ну если речь про поиск внутри массивов - пока предложенный мной вариант нас устраивает
  • @geklmn #57612 12:49 PM, 04 Jul 2018
    Привет!
    Сталкивался ли кто или знаете причину такого?
    На всех машинах кластера схема одинаковая.
    Делаю запрос SELECT ... FORMAT JSON.Запрос делается в distributed таблицу.
    В ответе меня интересует поле rows_before_limit_at_least.

    Странность:
    Один из серверов отдает 0 в этом поле.
    Все остальные сервера отдают одинаковое значение не 0.
    Полезные данные - строки результата - совпадают на всех серверах.
  • https://t.me/clickhouse_ru
    Как оказалось, репликация идёт по отдельному порту 9009. Пробросил его и репликация пошла
  • угу. И там к тому же протокол HTTP. Т.е. он на этом порту запускает HTTP сервер, а в зукипере публикует "адреса" партиций которые оттуда можно (и нужно) скачать.
  • https://t.me/clickhouse_ru
    @alexdanilov #57615 12:59 PM, 04 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @bozerkins #57616 02:06 PM, 04 Jul 2018
    привет! мы делаем эксперименты в рамках clickhouse базы и разных BI тулзов. сейчас пытаемся подключить BI tool которые умеет работать с MySQL базок к Clickhouse базе. Поставили ProxySQL, который умеет переписывать синтаксис с MySQL на Clickhouse. Пока что оно заводится, держит connection, и в целом работает.
    Столкнулись пока что только с одним косяком - запросы типа
    SELECT col1
    FROM table
    GROUP BY 1
    не проходят. Rewrite rules в ProxySQL под такое писать не хотелось бы, потому что жесть. Есть ли в обозримом будущем в Clickhouse базе планы на поддержку GROUP BY 1,2 / ORDER BY 1,2 запросов?
  • https://t.me/clickhouse_ru
    @OrNixx #57617 02:19 PM, 04 Jul 2018
    всем привет. Запрос
    SELECT * FROM track_log t WHERE (track_id=462739066) AND (date='2018-05-20')
    на 1.1.54236-4.el7 работает мгновенно. Переехали на 1.1.54385-1.el7, там этот запрос 8 секунд работает. Что может быть, что посмотреть? Базу переливали Select ... format native | insert into
  • https://t.me/clickhouse_ru
    @Shegloff #57618 02:20 PM, 04 Jul 2018
    киньте структуру старой и новой таблиц
  • https://t.me/clickhouse_ru
    @Shegloff #57619 02:21 PM, 04 Jul 2018
    а также селект из клиента весь, с выводом доп.инфы
  • https://t.me/clickhouse_ru
    @OrNixx #57620 02:22 PM, 04 Jul 2018
    а структура разве разная? show create table — этой командой создал на новом сервере

    CREATE TABLE trk.track_log ( date Date DEFAULT toDate(unix_timestamp), unix_timestamp DateTime, track_id Int64, repeat_track_id Int64, campaign_id Int32, split_from_campaign_id Int32, source_id Int32, offer_id Int32, ip String, params String, status Int32, redirect_url String, price_rub Float32, price Float32, currency_id Int32, user_agent String, url String, fraudscore_status String, referrer String, device_locale String) ENGINE = MergeTree(date, (date, track_id), 8192)
  • https://t.me/clickhouse_ru
    @OrNixx #57621 02:23 PM, 04 Jul 2018
    1 rows in set. Elapsed: 7.698 sec. Processed 73.73 thousand rows, 51.42 MB (9.58 thousand rows/s., 6.68 MB/s.)

    1 rows in set. Elapsed: 0.016 sec. Processed 8.19 thousand rows, 5.28 MB (498.23 thousand rows/s., 321.26 MB/s.)
  • https://t.me/clickhouse_ru
    @Shegloff #57622 02:29 PM, 04 Jul 2018
    какой-то печальный сервер, 6.68 MB/s
  • https://t.me/clickhouse_ru
    @Shegloff #57623 02:30 PM, 04 Jul 2018
    таблицы-то точно одинаковые? Processed 73.73 thousand rows и Processed 8.19 thousand rows
  • https://t.me/clickhouse_ru
    @OrNixx #57624 02:30 PM, 04 Jul 2018
    в том-то и дело
  • https://t.me/clickhouse_ru
    @stufently #57625 02:30 PM, 04 Jul 2018
    ну у вас чтение в 15 раз медленее
  • https://t.me/clickhouse_ru
    @OrNixx #57626 02:30 PM, 04 Jul 2018
    что сервер совершенно не печальный. 48тредов, SSD
  • https://t.me/clickhouse_ru
    @stufently #57627 02:30 PM, 04 Jul 2018
    ну что то не так явно с чтением проверьте диск
  • https://t.me/clickhouse_ru
    @Shegloff #57628 02:31 PM, 04 Jul 2018
    а почему у вас индекс такой (date, track_id), а не (track_id, date), как в доке советуют
  • https://t.me/clickhouse_ru
    @Shegloff #57629 02:32 PM, 04 Jul 2018
    перелейте в (track_id, date), посмотрите, будет ли разница, для интереса
  • https://t.me/clickhouse_ru
    @OrNixx #57630 02:33 PM, 04 Jul 2018
    щас диск попробую по hdparmить
  • https://t.me/clickhouse_ru
    @OrNixx #57631 02:34 PM, 04 Jul 2018
    [root@gala3 etc]# hdparm -t /dev/nvme0n1
    /dev/nvme0n1:
    Timing buffered disk reads: 4414 MB in 3.00 seconds = 1470.86 MB/sec
  • https://t.me/clickhouse_ru
    @OrNixx #57632 02:34 PM, 04 Jul 2018
    буфферед конечно ни о чём. но всё же не 6mb/s
  • https://t.me/clickhouse_ru
    @OrNixx #57633 02:37 PM, 04 Jul 2018
    регресс из-за какого-то сильного бага в этой версии исключён?
  • https://t.me/clickhouse_ru
    @Shegloff #57634 02:39 PM, 04 Jul 2018
    у многих КХ на продакшене, тут бы ор стоял
  • https://t.me/clickhouse_ru
    @OrNixx #57635 02:41 PM, 04 Jul 2018
    ну явно что-то не то с КХ
  • https://t.me/clickhouse_ru
    +1. Явно есть какое-то несоответствие. Сам запрос прям к trk.track_log делается? Случайно не к какой-нибудь Disturbed-таблицы поверх trk.track_log?
  • https://t.me/clickhouse_ru
    @OrNixx #57637 02:42 PM, 04 Jul 2018
    да не. всё отлично работало на старом сервере
  • https://t.me/clickhouse_ru
    @OrNixx #57638 02:42 PM, 04 Jul 2018
    структуру данных никто не менял
  • https://t.me/clickhouse_ru
    Попробуйте перелить через tsv формат, может что-то не так с format native
  • https://t.me/clickhouse_ru
    @stufently #57640 02:47 PM, 04 Jul 2018
    А лучше просто скопируйте партиции
  • https://t.me/clickhouse_ru
    @OrNixx #57641 02:47 PM, 04 Jul 2018
    уже не получится, прод-данные со вчера льются в это новое глючащее место
  • https://t.me/clickhouse_ru
    @Shegloff #57642 02:52 PM, 04 Jul 2018
    Так не только кх новый, но и сервер под ним новый?
  • https://t.me/clickhouse_ru
    @Shegloff #57643 02:53 PM, 04 Jul 2018
    Странный ssd конечно
  • https://t.me/clickhouse_ru
    @OrNixx #57644 02:53 PM, 04 Jul 2018
    да, перееххали на новый сервер, на него же новая версия КХ прилетела
  • https://t.me/clickhouse_ru
    @Shegloff #57645 02:53 PM, 04 Jul 2018
    На тысячах строк оно должно работать моментально
  • https://t.me/clickhouse_ru
    @vstepankov #57646 02:53 PM, 04 Jul 2018
    может там рейд ребилдится по этому IO в ноль?
  • https://t.me/clickhouse_ru
    @OrNixx #57647 02:53 PM, 04 Jul 2018
    неа
  • https://t.me/clickhouse_ru
    @OrNixx #57648 02:57 PM, 04 Jul 2018
    # hdparm -t /dev/md1
    /dev/md1:
    Timing buffered disk reads: 4314 MB in 3.00 seconds = 1437.32 MB/sec

    с рэйда тоже нормально
  • https://t.me/clickhouse_ru
    @OrNixx #57649 02:57 PM, 04 Jul 2018
    iowait ваще нулевой
  • https://t.me/clickhouse_ru
    @stufently #57650 03:03 PM, 04 Jul 2018
    Обновите версию на старом просто и сразу будет ясно проблема в версии или сервере
  • https://t.me/clickhouse_ru
    @OrNixx #57651 03:04 PM, 04 Jul 2018
    кстати да
  • https://t.me/clickhouse_ru
    @ifoton #57652 03:15 PM, 04 Jul 2018
    Привет, кто скрещивал КХ с superset, может сталкивались с ошибкой `'str' object has no attribute 'db_type'` когда подключаешь базу. Когда жмешь тест пишет ОК, но потом выкидывает с ошибкой.
  • https://t.me/clickhouse_ru
    @OrNixx #57653 03:17 PM, 04 Jul 2018
    докладаю. в новой версии регресса нет. на новом сервере КХ отожрал слишком много памяти, 122G virt, 75G RES. после мучительного рестарта работает быстро
  • https://t.me/clickhouse_ru
    Я сталкивался что у него были проблемы с версий какого-то python-модуля, из-за чего при создании конекта к КХ падало (не с этой ошибкой). Покажи настройку подключения к КХ
  • https://t.me/clickhouse_ru
    @OrNixx #57655 03:18 PM, 04 Jul 2018
    что за утечка — непонятно
  • https://t.me/clickhouse_ru
    @voldaycev #57656 03:19 PM, 04 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @voldaycev #57657 03:19 PM, 04 Jul 2018
    подскажите как мониторить статус репликации кликхауса?
  • https://t.me/clickhouse_ru
    @ifoton ↶ Reply to #57654 #57658 03:20 PM, 04 Jul 2018
    все по умолчанию, там нужно что то еще прописывать кроме clickhouse://localhost:8123/ ?
  • @dIoMeDs ↶ Reply to #57657 #57659 03:31 PM, 04 Jul 2018
    По таблице system.replicas можно например
  • https://t.me/clickhouse_ru
    @voldaycev #57660 03:31 PM, 04 Jul 2018
    вот тоже смотрю. в документации хороший запрос приведен
  • https://t.me/clickhouse_ru
  • @dIoMeDs ↶ Reply to #57660 #57662 03:32 PM, 04 Jul 2018
    Я примерно как-то так и реализововал
  • https://t.me/clickhouse_ru
    Только что попробовал создать коннект - такая же ошибка
  • https://t.me/clickhouse_ru
    @ifoton #57664 03:36 PM, 04 Jul 2018
    Просто много людей писало что у них все работает, а тут бац, и чет не гуглится. Явно что то делаю не так.
  • https://t.me/clickhouse_ru
    @ifoton #57665 03:37 PM, 04 Jul 2018
    ставил на ubunte 18.04 может там что наломали
  • https://t.me/clickhouse_ru
    неа, я уже ловил на разных сборках (периодически обновляю контейнер) самые разные глюки
  • @dIoMeDs #57667 03:44 PM, 04 Jul 2018
    Скажите, а кто-нибудь натравливал на clickhouse-server.log обычный системный logrotate? Хочется логи по сутками все-таки разбивать.
  • https://t.me/clickhouse_ru
    @stufently #57668 03:51 PM, 04 Jul 2018
    А в чем проблема?
  • https://t.me/clickhouse_ru
    @stufently #57669 03:52 PM, 04 Jul 2018
    По дефолту в убунту вроде логротейтятся
  • @dIoMeDs #57670 03:53 PM, 04 Jul 2018
    По дефолту он сам за ротейт отвечает. По размеру.
  • https://t.me/clickhouse_ru
    @stufently #57671 03:57 PM, 04 Jul 2018
    а ну может быть
  • https://t.me/clickhouse_ru
    @OrNixx #57672 04:33 PM, 04 Jul 2018
    граждане, особенно разработчики.. нет ли в 1.1.54385-1.el7 проблемы с жором памяти?
  • https://t.me/clickhouse_ru
    @OrNixx #57673 04:33 PM, 04 Jul 2018
    час поработал после рестарта, опять память выжрал и тормозит
  • пока не было замечено. память может тратиться по многим причинам: кеши, словари, мержи. может просто удерживаться аллокатором про запас.
  • https://t.me/clickhouse_ru
    @OrNixx ↶ Reply to #57674 #57675 04:57 PM, 04 Jul 2018
    вот он после рестарта первое время работал очень быстро, пока памяти много не сожрал. потом сожрал 70гиг и начал тормозить на селектах
  • https://t.me/clickhouse_ru
    @OrNixx #57676 05:04 PM, 04 Jul 2018
    можно ли откатить версию на 1.1.54236-4.el7 обратно, или хранилище обратно не совместимо?
  • @kochetovnicolai #57677 05:08 PM, 04 Jul 2018
    можно
  • https://t.me/clickhouse_ru
    @OrNixx #57678 05:10 PM, 04 Jul 2018
    а есть где-нибудь самый свежак в RPM-пакетах?
  • https://t.me/clickhouse_ru
    @OrNixx #57679 05:11 PM, 04 Jul 2018
    щас это: https://packagecloud.io/altinity/clickhouse/el/7/$basearch
    не самый свежак
  • https://t.me/clickhouse_ru
    @OrNixx #57680 05:12 PM, 04 Jul 2018
    вопрос про репу снят, в личке добрый человек направил на путь истинный
  • https://t.me/clickhouse_ru
    @QuietFelix #57681 05:16 PM, 04 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @OrNixx #57682 05:28 PM, 04 Jul 2018
    нет, вопрос не снят. пытаюсь поставить из Яндекс-репы yum'ом:

    Transaction check error:
    файл / из устанавливаемого пакета clickhouse-server-1.1.54388-2.noarch конфликтует с файлом из пакета filesystem-3.2-21.el7.x86_64
    файл /lib из устанавливаемого пакета clickhouse-server-1.1.54388-2.noarch конфликтует с файлом из пакета filesystem-3.2-21.el7.x86_64
    файл /usr/bin из устанавливаемого пакета clickhouse-server-1.1.54388-2.noarch конфликтует с файлом из пакета filesystem-3.2-21.el7.x86_64
    файл /etc/init.d из устанавливаемого пакета clickhouse-server-1.1.54388-2.noarch конфликтует с файлом из пакета chkconfig-1.7.4-1.el7.x86_64
  • https://t.me/clickhouse_ru
    @OrNixx #57683 05:29 PM, 04 Jul 2018
    это я что-то не так делаю?
  • https://t.me/clickhouse_ru
    @nikitosiusis #57684 05:32 PM, 04 Jul 2018
    а при удалении он тебе / удалит, интересно?)
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #57538 #57685 05:46 PM, 04 Jul 2018
    max_block_size в 8192 можно выставить или подобрать какой там удобнее для вас
  • https://t.me/clickhouse_ru
    @kshvakov #57686 05:48 PM, 04 Jul 2018
    т.е. в сессии перед insert select нужо set max_block_size = 8192
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #57617 #57687 05:56 PM, 04 Jul 2018
    Там размер максимального куска увеличили с 100 до 150 gb, возможно он у вас мержами был занят и сильно на диск давил
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #57676 #57688 05:58 PM, 04 Jul 2018
    вы количество одновременных мержей временно уменьшите, он данные помержит спокойно и все будет ОК
  • https://t.me/clickhouse_ru
    @OrNixx ↶ Reply to #57688 #57689 05:59 PM, 04 Jul 2018
    А это что такое? Как меняется?
  • https://t.me/clickhouse_ru
    @kshvakov #57690 06:02 PM, 04 Jul 2018
    Для реплицируемых таблиц max_replicated_merges_in_queue в конфиге для merge_tree секции и background_pool_size там по дефолту по 16
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @kshvakov #57692 06:04 PM, 04 Jul 2018
    Для применения этих настроек нужен рестарт сервера КХ
  • https://t.me/clickhouse_ru
    @OrNixx #57693 06:04 PM, 04 Jul 2018
    Спасибо, завтра попробую
  • https://t.me/clickhouse_ru
    @kshvakov #57694 06:10 PM, 04 Jul 2018
    Joined.
  • @agcouper #57695 06:17 PM, 04 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @kshvakov #57696 06:20 PM, 04 Jul 2018
    Tima указание max_block_size/max_insert_block_size перед insert into select лучше взять за привычку, в зависимости от того как вы храните данные и какие они можно сильно уйти по памяти, возможно это нужно сделать в самом КХ или как-то адаптивно просчитывать его и размер мержей при этом @milovidov_an ?
  • https://t.me/clickhouse_ru
    @kshvakov #57697 06:22 PM, 04 Jul 2018
    ну и max_threads тоже в 1
  • https://t.me/clickhouse_ru
    Спасибо, буду пробовать
  • @Denimm #57699 06:29 PM, 04 Jul 2018
    Подскажите, а как программно понять, что при insert не хватило места на диске, есть какой-нибудь out_of_space exception?
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #57699 #57700 06:33 PM, 04 Jul 2018
    С этим тут проблемы во весь рост: если вы делаете просто insert он отвалиться и все будет ок, т.к. КХ пишет в папку tmp_name_of_block по max_insert_block_size или как вы ему блоки передаете и если все Ок то он просто папку переименует и в ZK статус блока поменяет, но если вы делаете insert select - вы попали, часть данных будет вставлена в таблицу. В ответах exception есть коды, но я не помню есть ли код на out_of_space
  • https://t.me/clickhouse_ru
    @kshvakov #57701 06:34 PM, 04 Jul 2018
    Можно по репозитарию поискать
  • https://t.me/clickhouse_ru
    кх отдас т ошибку что места нет
  • https://t.me/clickhouse_ru
    @kshvakov #57703 06:44 PM, 04 Jul 2018
    yandex/ClickHouse

    ClickHouse is a free analytic DBMS for big data.

  • @Denimm ↶ Reply to #57703 #57704 06:45 PM, 04 Jul 2018
    Спасибо. Думаю то, что надо
  • https://t.me/clickhouse_ru
    @ijsthee #57705 06:51 PM, 04 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @nordluf #57706 06:56 PM, 04 Jul 2018
    Скажите, а для complex_key_hashed как делать таблицу с движком Dictionary?
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #57706 #57707 06:57 PM, 04 Jul 2018
    там не таблицу, а базу нужно делать
  • https://t.me/clickhouse_ru
    @nordluf #57708 06:58 PM, 04 Jul 2018
    Из документации: create table products (product_id UInt64, title String) Engine = Dictionary(products);
  • https://t.me/clickhouse_ru
    @nordluf #57709 06:58 PM, 04 Jul 2018
    У меня есть словарь, я его теперь хочу отобразить в таблицу
  • https://t.me/clickhouse_ru
    @kshvakov #57710 06:59 PM, 04 Jul 2018
    CREATE DATABASE dict Engine=Dictionary;
  • https://t.me/clickhouse_ru
    @kshvakov #57711 06:59 PM, 04 Jul 2018
    В ней как таблицы будут все ваши словари
  • https://t.me/clickhouse_ru
    @nordluf #57712 06:59 PM, 04 Jul 2018
    Ох красота то какая.... Спасибо большое!
  • Достаточно просто поменять тип словаря с flat на hashed. Преимущество flat в производительности по сравнению с hashed незначительное и заметно только на простых запросах.
  • Спасибо. Документация ввела в заблуждение :)
  • Да, это обязательно будет. Более того, реализация очень простая и, по большей части, сделана. Сейчас основная проблема - не усложнять достаточно громоздкий код анализа запроса (ExpressionAnalyzer), а вместо этого разделить его на мелкие куски. Поэтому мы пока не спешим добавлять эту функциональность прямо сейчас.
  • А что там вводит в заблуждение? Кстати, прямо на странице документации есть кнопка "карандаш" - можно её самому быстро поправить. (Нужен только аккаунт на Github)
  • Да, logrotate - рабочий вариант, некоторые коллеги используют. В конфиге clickhouse-server для ротации логов можно указать <size>never</size> - тогда он не будет их ротировать и это остаётся на ваше усмотрение.
  • @dIoMeDs ↶ Reply to #57717 #57718 07:22 PM, 04 Jul 2018
    Спасибо большое! Для меня отличный вариант.
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #57616 #57719 07:22 PM, 04 Jul 2018
    Там сильно все сложно, я про ProxySQL, нужно делать поддержку какого-то wire протокола MySQL/PostgreSQL в самом КХ, но там сильно много нюансов.
  • слова "Это метод обеспечивает максимальную производительность среди всех доступных способов размещения словаря." :)
  • По нашему опыту проблем с потреблением памяти на версии 54385 не было. Тем не менее, надо изучить причину - попробовать старую версию (для быстрых экспериментов можно просто stop, cp бинарника, start). Потом изучить, что влияет. Могут влиять некоторые виды SELECT-запросов, а могут влиять большие INSERT-ы или наоборот, большое количество мелких INSERT-ов. Для того, чтобы это проверить, отключите часть нагрузки на одном из серверов.
  • Всё так и есть :) Действительно, производительность flat словаря выше. Это будет заметно, когда запрос выполняется со скоростью хотя бы несколько сотен млн. строк в секунду на одно процессорное ядро - то есть, несколько миллиардов строк в секунду.
  • https://t.me/clickhouse_ru
    @kshvakov #57723 07:27 PM, 04 Jul 2018
    В любом случае в этом направлении нужно идти, как пример в КХ нет подготовленных выражений и это сильно местами афектит, взять хотя бы cached словари которые в ряде случаев просто генерят "портянку" SQL который не пролезает по дефолтовым лимитам. Да и вообще с подготовленными запросами может быть сильно больше оптимизаций (а тут уже вышеупомянутый ExpressionAnalyzer:))
  • Эти rpm пакеты получены путём переупаковки .deb. Их можно установить, но неудобно: надо писать force чего-то там и, возможно, будут проблемы с некоторыми скриптами. Грубо говоря, они подходят, если готовы "допилить напильником".

    Есть нормальные пакеты от Altinity.
  • Данное сообщение означает одно из двух:
    - прямо сейчас уже выполняется много мержей; следующий мерж будет выполнен позже.
    - мало свободного места на диске.

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

    Для того, чтобы более детально посмотреть на ситуацию - сделайте, чтобы метрики ClickHouse выгружались в Graphite или куда-нибудь ещё и смотрите на графики Metrics.Merge, Metrics.BackgroundPoolTask, AsynchronousMetrics.MaxPartCountForPartition.
  • При INSERT ... SELECT, ClickHouse самостоятельно преобразует блоки в более крупные, при необходимости. См. настройки min_insert_block_size_rows, min_insert_block_size_bytes. По-умолчанию должно быть Ок.
  • https://t.me/clickhouse_ru
    @IvanS1993 #57727 07:46 PM, 04 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #57726 #57728 07:46 PM, 04 Jul 2018
    Вот не ОК, у нас просто сильно старая версия
  • Старая версия - в которой даже нет таких настроек?
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #57729 #57730 07:49 PM, 04 Jul 2018
    Не думаю что настолько сильно, сейчас нет доступа к серверам, 543* скорее всего, но, мы храним много данных в массивах ***Map и если не выставляться по блокам - мы сильно страдаем при переливе insert select, а такое бывает
  • https://t.me/clickhouse_ru
    @kshvakov #57731 07:50 PM, 04 Jul 2018
    страдаем так что пару дней назад я реально скрещивал пальци чтоб 128 gb хватило, и он дошол до 120 и OOM его не прибил
  • https://t.me/clickhouse_ru
    @nordluf #57732 07:50 PM, 04 Jul 2018
    Скажите, а как можно инициировать обновление mongo словаря? Есть SQL какой-то для этого?
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #57732 #57733 07:51 PM, 04 Jul 2018
    system reload dictionary name
  • https://t.me/clickhouse_ru
    @nordluf #57734 07:52 PM, 04 Jul 2018
    Спасибо!
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #57730 #57735 07:53 PM, 04 Jul 2018
    У нас внезапно по уникам в массив прилетело в 1500 раз больше данных, это не сильно проблема КХ, а того как у нас это хранится
  • https://t.me/clickhouse_ru
    @kshvakov #57736 07:54 PM, 04 Jul 2018
    И при мержах/ переливе данных там сейчас все страшно, мы решим - не сильно страшная вещь )
  • Наверное суть в том, что вам нужно уменьшить размер блока при INSERT SELECT, тогда как есть лишь функциональность - склеивать блоки в более крупные, и она используется по-умолчанию.
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #57737 #57738 07:57 PM, 04 Jul 2018
    Я примерно понимаю как оно работает и при самом аккуратном обращении у нас вот так, там 30кк уникальных элементов на одного из клиентов стало прилетать вместо 20к
  • https://t.me/clickhouse_ru
    @kshvakov #57739 07:58 PM, 04 Jul 2018
    Это для группировки в тот самый массив **Map
  • https://t.me/clickhouse_ru
    @kshvakov #57740 08:01 PM, 04 Jul 2018
    Мы просто на такое сильно не закладывались, такие вещи нужно хранить не так
  • @milovidov_an #57741 08:04 PM, 04 Jul 2018
    Да, для больших значений - больших массивов, тяжёлых состояний агрегатных функций, требуются некоторые доработки - это адаптивный выбор index_granularity и max_block_size.
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #57741 #57742 08:09 PM, 04 Jul 2018
    К сожаленюю я это тоже знаю и нам вот сильно в этом месте нехватает адаптивного index_granularity, сейчас чтоб сильно не афектить всех он сильно маленький, но он нужен не всем. Еще беда в том что в КХ нет транзакций и мы считаем стату в отдельных таблицах, но когда все это копировалось пришел OOM и все убил - как результыт куда-то что-то приехало, а куда-то нет. Может есть смысл расмотреть транзакции, как в том же посгреме (min/max видимости), но не на уровне строк (в КХ это бесполезно), а блоков ?
  • https://t.me/clickhouse_ru
    @kshvakov #57743 08:10 PM, 04 Jul 2018
    И, это был последний день месяца и соответственно чтоб порешать нужно было перелить месяц
  • Такие варианты рассматриваются - можно во время транзакции складывать и мержить part-ы в сторонке от основных данных и затем атомарно добавлять их при коммите. Пока не в ближайших планах.
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #57744 #57745 08:13 PM, 04 Jul 2018
    Я понял, там просто нужно сильно две вещи: во первых делать это в сторонке, а во вторых не мержить до совершения комита - это сильно не нужно и отъедает ресурсы когда так что-то считается
  • Вот со вторым проблема - добавить к таблице сразу тысячу part-ов - плохо.
  • https://t.me/clickhouse_ru
    @kshvakov #57747 08:14 PM, 04 Jul 2018
    Да, это факт, тут как бы сильно много проблем
  • https://t.me/clickhouse_ru
    @kshvakov #57748 08:22 PM, 04 Jul 2018
    @milovidov_an Еще о "боли" у нас "старенький" КХ и freeze partition не работают по префиксу с кастомными партициями. Но у нас больше чем одна таблица и хотелось бы freeze tables a,b,c partition 201805 или freeze a,b,c 2018 - мы сами можем добавить, нужно только синтаксис утвердить и, наверное, складывать не в increment, а от даты + какой-то постфикс
  • https://t.me/clickhouse_ru
    @Mike_Er ↶ Reply to #57672 #57749 08:27 PM, 04 Jul 2018
    С момента выхода сами собрали и гоняем кластер на этой версии, проблем нет
  • Мы ещё сами не решили, какой лучше синтаксис для FREEZE хотя бы просто многих партиций.
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #57750 #57751 08:33 PM, 04 Jul 2018
    Вот у нас сильно время пришло, мне просто не очень охота сидеть на кастомной версии КХ.
  • 05 July 2018 (126 messages)
  • @427366614 #57752 03:35 AM, 05 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @458528978 #57753 07:02 AM, 05 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    Оно сейчас достаточно не плохо работает, основная сложность что не все через rewrite rules можно сделать адекватно :)
  • https://t.me/clickhouse_ru
    Если будут какие-то вопросы по ProxySQL — пишите в Altinity или напрямую Рене, поддержка clickhouse протокола там была сделана по нашей просьбе, но далека от идеальной.
  • https://t.me/clickhouse_ru
    А какие у вас трудности с clickhouse-mysql? Обращайтесь — поможем настроить.
  • https://t.me/clickhouse_ru
    @xdmiodz #57757 09:04 AM, 05 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @xdmiodz #57758 09:05 AM, 05 Jul 2018
    привет. как вы бэкапите кликхаус? по одной табличке, делаете alter ... freeze, или есть менее замороченные методы?
  • https://t.me/clickhouse_ru
    @mlopotkov #57759 09:05 AM, 05 Jul 2018
    Подскажите, чем можно посмотрить логи запросов в clickhouse?
    Интересует какие запросы приходили от клиентов.
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Спасибо
  • @mingaylov #57762 09:14 AM, 05 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @Imaskar #57764 09:28 AM, 05 Jul 2018
    Joined.
  • @MentalSky #57765 10:40 AM, 05 Jul 2018
    Всем доброго дня!

    хочу использовать в одном SELECT одну и ту же колонку дважды, конечно под разными алиасами, например так:

    select a as a1, function(a) as a2 from ....

    но не получается, и в a1 и в a2 оказываются результаты выполнения function(a), а как правильно?
  • https://t.me/clickhouse_ru
    @Sablast ↶ Reply to #57765 #57766 10:44 AM, 05 Jul 2018
    а что вы ожидаете увидеть?
    вы же по факту делаете следующее:
    :) SELECT 1 as a1, AVG(1) as a2

    SELECT
    1 AS a1,
    AVG(1) AS a2

    ┌─a1─┬─a2─┐
    │ 1 │ 1 │
    └────┴────┘
  • @MentalSky #57767 10:44 AM, 05 Jul 2018
    ну у меня там строки лога, и во второй колонке будут результаты обработки этой строки... и хотелось видеть и raw-строку, и обработанную
  • https://t.me/clickhouse_ru
    SELECT a AS a1, splitByChar('b', a) AS a2 FROM (SELECT 'abc' AS a)
  • https://t.me/clickhouse_ru
    select number as n, pow(number, 2) as nn from system.numbers limit 10
    дак вроде работает же
  • https://t.me/clickhouse_ru
    @Sablast ↶ Reply to #57767 #57770 10:45 AM, 05 Jul 2018
    какую функцию вы пытаетесь использовать?
  • самописная, рекурсивная - куча регулярок
  • в смысле через рекурсию разворачивается в вызов многих вложенных replaceRegexpAll
  • ну у меня почему то нет, в случает с текстом
  • сейчас попробую
  • нашел в чем дело, нелья делать alias такой же как исходное название колонки
  • @MentalSky #57777 10:53 AM, 05 Jul 2018
    всем спасибо
  • https://t.me/clickhouse_ru
    @orantius #57778 10:54 AM, 05 Jul 2018
    делать можно, но работать будет не так как обычно.
  • @MentalSky #57779 10:56 AM, 05 Jul 2018
    ну да, что и получилось
  • https://t.me/clickhouse_ru
    @Imaskar #57780 11:02 AM, 05 Jul 2018
    кто-нибудь с таким сталкивался?
    [63/868] Building CXX object dbms/CMakeFiles/dbms.dir/src/Dictionaries/CacheDictionary.cpp.o
    FAILED: dbms/CMakeFiles/dbms.dir/src/Dictionaries/CacheDictionary.cpp.o
    /usr/bin/g++-7 <params> -c ../dbms/src/Dictionaries/CacheDictionary.cpp
    {standard input}: Assembler messages:
    {standard input}:212615: Warning: end of file not at end of a line; newline inserted
    {standard input}: Error: open CFI at the end of file; missing .cfi_endproc directive
    g++-7: internal compiler error: Killed (program cc1plus)
  • https://t.me/clickhouse_ru
    @Imaskar #57781 11:03 AM, 05 Jul 2018
    это при билде из исходников после запуска ninja
  • https://t.me/clickhouse_ru
    @nordluf #57782 11:39 AM, 05 Jul 2018
    Подскажите плз - max_bytes_before_external_group_by и max_bytes_before_external_sort работают? Я делаю запрос с жирным groupby, который валится по отсутствию памяти, но выставление max_bytes_before_external_group_by не помогает (и в system.settings я его не вижу)
  • @mr_ehbr #57783 11:59 AM, 05 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @Imaskar ↶ Reply to #57782 #57784 12:02 PM, 05 Jul 2018
    в англ чате только что писали о похожем. это настройки MergeTree, а не system
  • @dIoMeDs ↶ Reply to #57784 #57785 12:02 PM, 05 Jul 2018
    Английский чат по КХ есть?
  • https://t.me/clickhouse_ru
    @nordluf #57786 12:02 PM, 05 Jul 2018
    А как тогда правильно из применить к таблице?
  • https://t.me/clickhouse_ru
    @Imaskar ↶ Reply to #57785 #57787 12:03 PM, 05 Jul 2018
    ну да, вмето ru напиши en
  • @dIoMeDs ↶ Reply to #57787 #57788 12:04 PM, 05 Jul 2018
    Благодарю
  • https://t.me/clickhouse_ru
    @Imaskar ↶ Reply to #57786 #57789 12:04 PM, 05 Jul 2018
    я на вторую часть ответил. запросить можно через SELECT *
    FROM settings
    WHERE name = ''
  • https://t.me/clickhouse_ru
    @nordluf ↶ Reply to #57789 #57790 12:12 PM, 05 Jul 2018
    Да, нашёл, у меня из-за лимита не показывалось
  • https://t.me/clickhouse_ru
    @dimzon541 #57791 12:18 PM, 05 Jul 2018
    господа вопрос а как можно узнать сколько RAM съела engine=Memory()
  • https://t.me/clickhouse_ru
    @Imaskar ↶ Reply to #57780 #57792 12:37 PM, 05 Jul 2018
    нашёл, не хватало памяти компилятору
  • @pirshtuk #57793 12:39 PM, 05 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    Господа, есть табличка соответствий число-строка. Общее количество порядка 30 штук. Сия табличка будет использоваться в десятке-другом запросов. Как правильнее сделать применение сего соответствия в паре десятков запросов? Таки словарь? Если да, то печально - хотел дать возможность поредактировать табличку человеку с r/o правами.
  • https://t.me/clickhouse_ru
    @Imaskar #57795 12:50 PM, 05 Jul 2018
    как же он будет редактировать с р/о правами? если словарь будет внешний, например монго, а у оператора будут права на соответсвующую запись в монго, то он может править там. а потом настроить возможность релоада в кх по запросу.
  • https://t.me/clickhouse_ru
    r/o - в кликхаусе и других БД.
  • https://t.me/clickhouse_ru
    Меняться будет в любом случае не чаще раза в месяц, так что проще попросить перечитать с бОльшими правами.
  • https://t.me/clickhouse_ru
    @Imaskar #57798 12:52 PM, 05 Jul 2018
    вот в варианте со внешним словарём, в кх у него р/о, а в словаре будут права. или напрямую таблицу в кх завести. я что-то не вижу проблемы таблицу из 30 записей заджойнить. кх её должен в памяти держать.
  • https://t.me/clickhouse_ru
    Впрочем, увидел https. Вопросы по нему такие:
    1) что выразит кликхаус, если будут проблемы с коннектом?
    2) что выразит кликхаус, если в конце/начале/середине будут лишние пустые строки?
    Остальное - не проблема, товарищ достаточно аккуратен, чтоб написать простой txt (он же csv)
  • https://t.me/clickhouse_ru
    @MrCrazyFork #57800 01:03 PM, 05 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @den_crane #57801 01:06 PM, 05 Jul 2018
    В обоих случаях будет ошибка и останется предыдущая версия данных в словаре.
  • @YaroslavMakarov #57802 01:13 PM, 05 Jul 2018
    Всем привет! Заметил в доках, что в ReplicatedMergeTree, если указан ключ партиционирования Date, то в первичном ключе его указывают последним. Как это работает? Просто необходимо потом делать селекты с условием prewhere date between .... В этом случае необходимо добавить Date в начало кортежа с первичным ключом или все так же в конце?
  • https://t.me/clickhouse_ru
    @stufently #57803 01:14 PM, 05 Jul 2018
    по дате оно и так у вас будет отсортировано, поэтому дату ставят в конец
  • https://t.me/clickhouse_ru
    В первичном ключе его вообще можно не указывать, если есть партиционирование по дате
  • @YaroslavMakarov #57805 01:14 PM, 05 Jul 2018
    спасибо
  • https://t.me/clickhouse_ru
    @yourock88 #57806 01:14 PM, 05 Jul 2018
    Но если нужно делать выборки по сильно меньшему диапазону, чем партиционирование, то тогда первым, конечно
  • https://t.me/clickhouse_ru
    @yourock88 #57807 01:15 PM, 05 Jul 2018
    Но всё зависит от ваших данных
  • https://t.me/clickhouse_ru
    @orantius ↶ Reply to #57802 #57808 01:17 PM, 05 Jul 2018
    если у вас есть запрос id = 42 and date between date1 and date2, и при этом партиционирование по месяцам и сортировка по id, date, то данные по диапазону дат окажутся (в каждой партиции) одним куском, а если сортировка по date, id, то данные по каждому дню будут в своем куске, т.е. менее локальны.
  • https://t.me/clickhouse_ru
    @orantius #57809 01:17 PM, 05 Jul 2018
    при других запросах и других данных могут лучше работать другие варианты.
  • https://t.me/clickhouse_ru
    Благодарю. Осталось отловить ошибку.
  • @YaroslavMakarov #57811 01:18 PM, 05 Jul 2018
    партиционирование по суткам, поэтому думаю можно его вообще убрать
  • https://t.me/clickhouse_ru
    Вопрос по регекспам. Читаю https://clickhouse.yandex/docs/ru/functions/string_replace_functions/#replaceregexponehaystack-pattern-replacement
    Делаю и получаю:
    SELECT replaceRegexpOne('voip.in.123.answered', '(\\d{3})', '\\1') AS num

    ┌─num──────────────────┐
    │ voip.in.123.answered │
    └──────────────────────┘
  • https://t.me/clickhouse_ru
    Это только у меня так? Или требуется как-то обозначить, что регексп может быть не в начале строки?
  • https://t.me/clickhouse_ru
    Просто в документации никак не отражено, что регекспы требуют совпадения всей строки.
  • @ztlpn #57815 01:39 PM, 05 Jul 2018
    Так тут получилось, что вы заматчились на число и его же вставили
  • https://t.me/clickhouse_ru
    Э... И каким образом тут строка с буквами заматчилась на число?
  • https://t.me/clickhouse_ru
    @stufently #57817 01:39 PM, 05 Jul 2018
    а d3 разве не число ?
  • https://t.me/clickhouse_ru
    Тут регексп не сработал и не заменил. Правильный регексп тут .*(\\d{3}).*
  • @ztlpn #57819 01:40 PM, 05 Jul 2018
    SELECT replaceRegexpOne('voip.in.123.answered', '(\\d{3})', 'abc') AS num

    ┌─num──────────────────┐
    │ voip.in.abc.answered │
    └──────────────────────┘
  • @ztlpn #57820 01:40 PM, 05 Jul 2018
    регэксп сработал
  • https://t.me/clickhouse_ru
    @Imaskar #57821 01:41 PM, 05 Jul 2018
    он вырезать хочет
  • https://t.me/clickhouse_ru
    @stufently #57822 01:41 PM, 05 Jul 2018
    ну пусть там пустую строку оставит )
  • https://t.me/clickhouse_ru
    Не-не-не! Хочу получить из строки цифрами только цифры.
  • https://t.me/clickhouse_ru
    Но вообще - понятно.
  • https://t.me/clickhouse_ru
    Правда, не из документации.
  • @ztlpn #57826 01:42 PM, 05 Jul 2018
    SELECT extract('voip.in.123.answered', '\\d{3}') AS num

    ┌─num─┐
    │ 123 │
    └─────┘
  • https://t.me/clickhouse_ru
    Впрочем, мне, видимо, больше подойдёт extract, а не replace
  • https://t.me/clickhouse_ru
    @jusamorez #57828 02:19 PM, 05 Jul 2018
    У меня вопрос по использованию индексов.
    Есть таблица с движком merge tree, каждый день в нее льется порядка миллиарда записей. Есть строковый столбец, выглядящий примерно так: a.b.c.d.{*id*}.e, где в качестве id может быть разношорстная информация, а сам id может располагаться в разных частях строки, но всегда обрамлён и его можно без проблем выкинуть регуляркой. А a.b.c.d. определяют класс принадлежности значений.
    Обычно субд не используют индексы, если в левой части условия столбец из индекса каким либо способом преобразуется. Но кх то необычный :)
    Поэтому я решил попробовать добавить в индекс столбец с регекспом, который выбросит из него все айдишики (как-то так MergeTree(date_column, (date_column, replaceRegexpAll(str_column, *regexp*, '')))). Ну и в дальнейшем в условиях запроса указывать этот регексп + конкретное условие с id.
    Некоторый отчёт по этой таблице за сутки рассчитывается за ~30-40 минут.
    После добавления индекса с регэкспом он стал выполняться за 10-20 секунд. Похоже, что индекс таки используется, несмотря на то, что в условии запроса к нему применяется регексп. Ну и собственно вопрос: насколько адекватен такой подход? Какие могут быть подводные камни?

    P.S. да, разумно было бы хранить класс где-нибудь рядом, и положить в индекс его, но представим, что мы не можем на это повлиять (:
  • https://t.me/clickhouse_ru
    @rheinx ↶ Reply to #57828 #57829 02:24 PM, 05 Jul 2018
    O_o
  • https://t.me/clickhouse_ru
    @Imaskar #57830 02:27 PM, 05 Jul 2018
    так регэкспы совпадают в запросе и индексе или нет?
  • https://t.me/clickhouse_ru
    @dimzon541 #57831 02:37 PM, 05 Jul 2018
    а сделать вычисляемую колонку (materialized) и ее проиндексировать? заодно тип со String на UInt64 поменять?
  • https://t.me/clickhouse_ru
    @Imaskar #57832 02:42 PM, 05 Jul 2018
    что-то вроде
    valueclass UInt64 default replaceRegexpAll(str_column, *regexp*, ''),
  • https://t.me/clickhouse_ru
    да, совпадают
  • https://t.me/clickhouse_ru
    @Imaskar #57834 02:42 PM, 05 Jul 2018
    хз, сработает или нет
  • https://t.me/clickhouse_ru
    @Imaskar ↶ Reply to #57833 #57835 02:43 PM, 05 Jul 2018
    тогда всё логично
  • https://t.me/clickhouse_ru
    а можно делать индекс по materialized колонке? она ж на лету вроде считается всегда?
  • https://t.me/clickhouse_ru
    @dimzon541 #57837 02:43 PM, 05 Jul 2018
    на лету alias считается.
  • https://t.me/clickhouse_ru
    хм, ну если хранится, то индекс по ней будет более подходящим решением. Спасибо :)
  • https://t.me/clickhouse_ru
    @dimzon541 #57839 03:09 PM, 05 Jul 2018
    Меня раздирают противоречия "В таблице типа MergeTree обязательно должен быть отдельный столбец, содержащий дату, здесь это столбец EventDate. Тип столбца с датой — обязательно Date (а не DateTime)." - у меня в любом случае есть колонка DateTime, получается мне этот столбец надо дублировать а потом еще и в WHERE указывать (у меня запрос по диапазону DateTime)... Никак низя чтобы оно "само" без лишних ухищрений?
  • https://t.me/clickhouse_ru
    @neiwick #57840 03:11 PM, 05 Jul 2018
    date_column Date DEFAULT toDate(dateTime_column). А в WHERE все-таки придется указать
  • После введения кастомового партиционирования - поле типа Date в принципе не обязательно. Но если у вас данные имеют какой-то таймстамп - наличие колонки типа Date очень сильно поможет для партиционирования и для выборки данных за определенный диапазон дат.
  • @mfilimonov #57842 03:36 PM, 05 Jul 2018
    Даже при том что они будут дублировать "полный" таймстамп.
  • https://t.me/clickhouse_ru
    @dimzon541 #57843 03:45 PM, 05 Jul 2018
    а никак не планируется в будущих версиях КХ пофиксить чтобы можно было вместо чистого date указывать datetime чтобы оно "само" внутри toDate при партиционировании делала и при запросах сама в where "дублировала" ограничения наложенные на datetime?
  • https://t.me/clickhouse_ru
    @Imaskar #57844 03:50 PM, 05 Jul 2018
    А зачем? Так же быстрее.
  • https://t.me/clickhouse_ru
    @dimzon541 #57845 03:50 PM, 05 Jul 2018
    еще очень унизительно - нужно буквально пяток "нормальных" табличек небольших и ненагруженных - настроечки там хранить, простейшие справочники итп ради этого мускул рядом подымать... прикрутили бы какой-нить engine=SqlLite()
  • https://t.me/clickhouse_ru
    кому быстрее? движок может сам все это сделать и производительность будет идентичная зачем повторять два раза то? Если ему нужно поле типа date пусть создаст невидимое для меня поле и извлекает в него дату из datetime. А при поиске если видит константные ограничения на datetime пусть время отбросит и сам к date применит. зачем мне это дублировать то?
  • https://t.me/clickhouse_ru
    @Imaskar #57847 03:56 PM, 05 Jul 2018
    Разработчик всего одну строчку добавит и всё будет работать. А невидимо городить - можно сделать лишнюю работу или не сделать нужную.
  • https://t.me/clickhouse_ru
    Я думаю, что может быть с кастомным партиционированием так можно сделать. Т.е. завести primary key на DateTime и партиционирование по toYYYYMM(time) и оно будет работать. Но лучше проверить, конечно.
  • https://t.me/clickhouse_ru
    @yourock88 #57849 03:57 PM, 05 Jul 2018
    Просто зачастую Date добавляют именно в primary key и тогда она становится нужна. Пример, как у Яндекс.Метрики:

    (CounterID, Date, cityHash64(userID)) — и по последнему полю сэмплирование
  • Будет работать. Date не является необходимым, как писал выше. Единственная проблема что по полю типа DateTime сканирование - в два раза медленнее, и при отсутствии поля типа Date некоторые вещи могут немного некорректно работать.
  • https://t.me/clickhouse_ru
    Ну так я и предлагаю эту date создавать автоматом из datetime чтобы корректно работало
  • Создайте :) Помочь вам написать CREATE TABLE? :)
  • https://t.me/clickhouse_ru
    Вам лучше Date Materialized toDate(datetime)
  • https://t.me/clickhouse_ru
    EventDate materialized as toDate(EventDateTime) то я смогу ;) вот только в WHERE писать EventDateTime>=toDateTime(...) AND EventDateTime<=toDateTime(...) AND EventDate>=toDate(toDateTime(...)) AND EventDate<=toDate(toDateTime(...)) - вторая часть унизительна
  • https://t.me/clickhouse_ru
    Чего-то не прокатило. Спустя пару десятков инсертов начало падать не очень информативное Code: 44, e.displayText() = DB::Exception: Cannot insert column str_column_mask, e.what() = DB::Exception. Этот str_column_mask materialized колонка над str_column. В инсерте ее не указано.
  • https://t.me/clickhouse_ru
    @jusamorez #57856 04:17 PM, 05 Jul 2018
    Запись через буффер. Может буффер не учитывает, что в родительской таблице есть materialized колонка и явно перечисляет все при вставке?
  • https://t.me/clickhouse_ru
    @dimzon541 #57857 04:22 PM, 05 Jul 2018
    Уважаемые разработчики, а вот скажите x between 10 and 20 это для движка (не логически а именно для движка) тождественно x>=10 and x<=20? Если x проиндексирован никаких хитростей не применяется? Вообще поиск по вхождению в диапазон можно представить на поиск пересечения точки с отрезком - для этого есть очень быстрые spartial-индексы. КХ их часом не поддерживает?
  • https://t.me/clickhouse_ru
    @orantius ↶ Reply to #57857 #57858 04:25 PM, 05 Jul 2018
    between при парсинге разворачивается в >= and <=, на этом при желании можно например экспоненциальную длину ast получить.
  • https://t.me/clickhouse_ru
    понятно т.е. это именно синтаксический сахар.
  • https://t.me/clickhouse_ru
    @orantius #57860 04:26 PM, 05 Jul 2018
    select ((1 between 2 and 3) between 4 and 5) between 6 and 7
  • https://t.me/clickhouse_ru
    @orantius ↶ Reply to #57859 #57861 04:28 PM, 05 Jul 2018
    да. что касается оптимизации попадания в отрезок, обычно у вас один отрезок (запрос) и много точек (строк), два неравенства и без индекса вроде ок.
  • https://t.me/clickhouse_ru
    жесть... но вторая часть вопроса была об использовании геометрических индексов для ускорения поиска в диапазоне значений. Особенно при обратном поиске: where 10 between column1 and column2
  • https://t.me/clickhouse_ru
    @orantius #57863 04:35 PM, 05 Jul 2018
    чего-то специального, думаю, нет.
  • @antonio_antuan #57864 05:15 PM, 05 Jul 2018
    подскажите, а словари можно только в памяти хранить, нельзя ли заставить кх держать данные для словаря на диске?
  • Держать словари на диске средствами ClickHouse нет возможности. Можно частично кэшировать из внешнего источника - см. тип словаря cache.
  • @milovidov_an #57866 05:30 PM, 05 Jul 2018
    Опубликованы материалы с митапа в Берлине:

    http://yandex.github.io/clickhouse-presentations/meetup16/introduction.pdf
    http://yandex.github.io/clickhouse-presentations/meetup16/spotify.pdf
    http://yandex.github.io/clickhouse-presentations/meetup16/internals.pdf
  • @antonio_antuan #57867 05:31 PM, 05 Jul 2018
    Это читал, думал есть какая хитрость. Спасибо за ответ.
  • @vstakhov #57868 07:52 PM, 05 Jul 2018
    @milovidov_an а вы там не с heinlein в Берлине делали этот митап?
  • Нет - с DeliveryHero.
  • @milovidov_an #57870 08:02 PM, 05 Jul 2018
    У нас началось согласование митапа в Спб. Предположительное время - середина августа.
  • https://t.me/clickhouse_ru
    @OrNixx #57871 08:04 PM, 05 Jul 2018
    подскажите, куда сунуть background_pool_size ?
  • https://t.me/clickhouse_ru
    @OrNixx #57872 08:04 PM, 05 Jul 2018
    сунул в конфиг в виде xml, рестартанул, не схавало
  • https://t.me/clickhouse_ru
    @OrNixx #57873 08:05 PM, 05 Jul 2018
    <background_pool_size>8</background_pool_size>
  • https://t.me/clickhouse_ru
    @OrNixx #57874 08:05 PM, 05 Jul 2018
    а то всё очень плохо, упал в out of memory
  • @milovidov_an #57875 08:06 PM, 05 Jul 2018
    В users.xml, профиль default.

    https://www.google.com/search?source=hp&q=background_pool_size+clickhouse
  • https://t.me/clickhouse_ru
    @OrNixx #57876 08:07 PM, 05 Jul 2018
    всё равно SELECT *
    FROM system.settings
    WHERE name = 'background_pool_size'
    16
  • https://t.me/clickhouse_ru
    @OrNixx #57877 08:08 PM, 05 Jul 2018
    получилось, спасибо
  • https://t.me/clickhouse_ru
    @OrNixx #57878 08:08 PM, 05 Jul 2018
    в acl совал
  • @brntsrs #57879 08:31 PM, 05 Jul 2018
    Joined.
  • 06 July 2018 (173 messages)
  • https://t.me/clickhouse_ru
    @Imaskar ↶ Reply to #57862 #57880 05:50 AM, 06 Jul 2018
    так если у вас индекс (column1,column2), то он достаточно быстро найти должен
  • https://t.me/clickhouse_ru
    @skarzhinets #57881 05:56 AM, 06 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @Vasyaabr #57882 05:58 AM, 06 Jul 2018
    Пишем в Clickhouse маленькие пачки событий, по 1000-2000 строк (плюс мат вью, которые их копируют). Но в течении суток отмечаем, что несколько событий в базу не попадает (из десятков миллионов). Может ли бытьпричина где то в Clickhouse? Куда можно копнуть?
    Непонятных ошибок в логах нет. Используется кворумная запись.
    Скорее всего причина всё таки не в Clickhouse, но хочется как-то проверить и его.
  • https://t.me/clickhouse_ru
    @QuietFelix #57883 06:07 AM, 06 Jul 2018
    Именно несколько, а не 1000..2000 строк?
  • https://t.me/clickhouse_ru
    @Imaskar #57884 06:08 AM, 06 Jul 2018
    а тип таблицы какой? не collapsing какой-нибудь?
  • https://t.me/clickhouse_ru
    @Vasyaabr #57885 06:30 AM, 06 Jul 2018
    Обычный ReplicatedMergeTree. Именно несколько, причем интервалы между ниим бывают 30-40 строк.
  • @tomazov #57886 07:13 AM, 06 Jul 2018
    у меня тоже такое встречается, если вставки идут паралельно, то инсерт может не пройти, просто отправляю его еще раз
  • Вряд ли кликхаус. Там в реплицируемых таблицах идентичные блоки выкидываются (но вы говорите что это не ваш случай), если какие-то проблемы с форматом входных данных (например плохой JSON) и включенаа толеранция ошибок - то несколько строк могут пропасть. Ну и если используете движок типа Replacing / Collapsing. Если тем не менее подозреваете кликхаус - то можете например включить query_log и при каждом инсерте записывать количество отправленных в кликхаус строк в какое-нибудь внешнее хранилище (да хоть в логфайл, таймстамп и кол-во отправленных строк). Потом можете сравнить что было выслано, с тем что кликхаус получил согласно query_log.
  • @mfilimonov #57888 07:31 AM, 06 Jul 2018
    Ага, кстати не знаю как поведет себя кликхаус если при передаче данных произойдет разрыв соединения.
  • https://t.me/clickhouse_ru
    @Imaskar #57889 07:33 AM, 06 Jul 2018
    вот, кстати, хотел похожий вопрос задать, но более теоретический - можно ли в кх хранить важные данные, которые нельзя терять?
  • https://t.me/clickhouse_ru
    @Imaskar #57890 07:33 AM, 06 Jul 2018
    так что мне этот случай интересен
  • https://t.me/clickhouse_ru
    @Vasyaabr ↶ Reply to #57887 #57891 07:34 AM, 06 Jul 2018
    Ага, спасибо! Наметил пути.
    "включенаа толеранция ошибок" - каким образом это делается? Не гуглится что-то.
  • @mfilimonov #57892 07:34 AM, 06 Jul 2018
    Точно знаю что кликхаус "на замечает" разрыва соединения если выполняет большой селект. Селект выполнится до конца, даже если результат уже никому не нужен. См. https://github.com/yandex/ClickHouse/issues/1403
    HTTP interface: kill queries after disconnect. · Issue #1403 · yandex/ClickHouse

    If you will just close the HTTP connection with lasting query, the execution of that query is not stopped. May be for DDL queries that bahaviour can be considered as acceptable, but for usual SELEC...

  • https://t.me/clickhouse_ru
    @Vasyaabr ↶ Reply to #57889 #57893 07:36 AM, 06 Jul 2018
    Мы вот например пытаемся :) Теоретически да, при соблюдении ряда условий: реплицировать, использовать кворумную запись, использовать sequential select (пока что нельзя, т.к. баги)
  • input_format_allow_errors_num / input_format_allow_errors_ratio
    https://github.com/yandex/ClickHouse/blob/7fcf609812325d0addb5b00da8ce19a39870be4e/dbms/src/Interpreters/Settings.h#L168
    yandex/ClickHouse

    ClickHouse is a free analytic DBMS for big data.

  • https://t.me/clickhouse_ru
    @Vasyaabr #57895 07:37 AM, 06 Jul 2018
    При этом sequential select уже относится только к "чистому" чтению, а не к хранению.
  • Кликхаус - инструмент для аналитики, в аналитике важны тенденции и обобщения, тренды, а не конкретные единичные события. Кликхаус не соответствует требованиям ACID - хотя бы по причине отсутствия транзакций. Если вам нужно выполнять аналитику на каких-то очень важных данных, то просто копируйте это данные из вашей любимой базы соответствующей требованиям ACID в кликхаус.
  • @mfilimonov #57897 08:02 AM, 06 Jul 2018
    В принципе КХ довольно прост и при определенной ловкости обращения с ним можно считать что всё надежно. Тем не менее как главную БД например для финансовых организаций я бы советовал выбрать что-нибудь другое :)
  • https://t.me/clickhouse_ru
    @Imaskar #57898 08:03 AM, 06 Jul 2018
    идея была в том, чтобы сделать больше на тех же ресурсах.
  • И в этом кликхаус поможет. Если вам нужна аналитика на суперважных (например финансовых) данных, то пишите ваши важные данные в какой-нибудь MS SQL / Oracle / Postgres / или что вы там любите. Копируйте их в КХ. И делайте аналитические запросы в КХ, а транзакционные запросы в вашу главную БД. Ваша главная база данных будет гарантировать вам атомарность, целостность и остальные ACID требования. При этом аналитические запросы в ней будут работать в сотни раз медленнее чем в КХ, поэтому поставив КХ "рядом" вы освободите вашу главную БД от необходимости выполнять что она делать не умеет и она будет заниматься только тем что она делает хорошо, а КХ - тем что он делает хорошо.
  • @mfilimonov #57900 08:11 AM, 06 Jul 2018
    Т.е. ваш аналитический отчет по финансовым данным будет выполняться за пару минут вместо десятков часов. Во время его выполнения главная база данных не будет "лежать" из-за блокировок и т.п.
  • @mfilimonov #57901 08:11 AM, 06 Jul 2018
    Плюсы налицо.
  • https://t.me/clickhouse_ru
    @Imaskar #57902 08:11 AM, 06 Jul 2018
    у нас не финансы, а данные с датчиков. старая база на вставку не справляется(
  • @mfilimonov #57903 08:13 AM, 06 Jul 2018
    Если это датчики АЭС, то я бы вам советовал задуматься над тем как это исправить без помощи КХ. :) Если это датчики не с АЭС, то я бы советовал задуматься - так ли важно каждое единичное значение датчика в конкретную секунду.
  • https://t.me/clickhouse_ru
    @Imaskar #57904 08:14 AM, 06 Jul 2018
    99% можно потерять иногда, но есть один вид сигналов, который обязательно нужен. возможно есть смысл только его дублировать в ACID базу
  • https://t.me/clickhouse_ru
    @QuietFelix #57905 08:25 AM, 06 Jul 2018
    А есть штатный механизм, с помощью которого можно узнавать, что при живой сети и живом КХ и без ошибок строки не вставились по какой-нибудь КХ-причине?
  • https://t.me/clickhouse_ru
    @QuietFelix #57906 08:25 AM, 06 Jul 2018
    Ну т.е. жить в ситуации "угадай, сколько строк КХ сохранил" чёт больно. :)
  • @mfilimonov #57907 08:25 AM, 06 Jul 2018
    Можно ещё сделать так: в течение относительно короткого промежутка времени хранить данные в 2 местах. Потом (в конце дня / недели / месяца) выполнять проверку целостности данных в КХ сравнивая их с данными в другой системе. Если все совпало - то записать бэкап данных на ленты / Glacier / или что вы там любите, и удалить кусок данных из главной БД, оставив данные в КХ.
  • Штатный механизм = если кликхаус вернул статус 200, значит ВСЕ данные вставились. Исключение - если подкручены настройки типа input_format_allow_errors_num (выключенные по умолчанию).
  • https://t.me/clickhouse_ru
    @QuietFelix #57909 08:31 AM, 06 Jul 2018
    О. Этого хватит. Спасибо.
  • https://t.me/clickhouse_ru
    @skarzhinets #57910 08:38 AM, 06 Jul 2018
    Подскажите, почему запрос с GLOBAL IN может выводить данные с одного узла, а не со всех? т.е. запрос:
    SELECT *
    FROM tbl
    preWHERE EntityID GLOBAL IN (
    SELECT EntityID
    FROM tbl
    preWHERE EntityID = 'value'
    )
    показывает меньше данные чем запрос
    SELECT *
    FROM tbl
    preWHERE EntityID = 'value'
  • https://t.me/clickhouse_ru
    @skarzhinets #57911 08:42 AM, 06 Jul 2018
    и ещё: почему запрос:
    SELECT *
    FROM tbl
    WHERE EntityID = 'value'
    зависает, а с prewhere отрабатывает, хотя столбец "EntityID" - первый в индексе, и, согласно документации, where и prewhere должны в этом случае отрабатывать одинаково
  • https://t.me/clickhouse_ru
    @skarzhinets #57912 08:43 AM, 06 Jul 2018
    Если дело в конфигурации, подскажите какие настройки нужно проверить
  • Случайно не используете поля типа ALIAS в таблице?
  • https://t.me/clickhouse_ru
    Это какой-то ссылочный тип? Нет, в таблице только строки, числа и даты
  • Это "вычислимое" поле которое физически в базе не хранится, а вычисляется "на лету".
  • https://t.me/clickhouse_ru
    Хм, вроде нет
  • Действительно, у меня разница по скорости вышла в 10 раз, вызвана разным количеством прочитанных данных. Там есть оптимизация optimize_move_to_prewhere, но она не работает с primary key. А где написано что "согласно документации, where и prewhere должны в этом случае отрабатывать одинаково"?
  • @YaroslavMakarov #57918 09:53 AM, 06 Jul 2018
    Всем привет! Часовой пояс для DateTime можно указывать прямо в фкнции преобразования toDateTime(timestamp, 'UTC'). Но почему то если указываю такое выражение в DEFAULT, то часовой пояс игнорируется. Кто-нибудь сталкивался?
  • @YaroslavMakarov #57919 09:56 AM, 06 Jul 2018
    ┌─toDateTime(1527640610.101, \'UTC\')─┐
    │ 2018-05-30 00:36:50 │
    └─────────────────────────────────────┘

    localhost :) desc test
    ┌─name───────┬─type─────┬─default_type─┬─default_expression──────────────┐
    │ date │ Date │ │ │
    │ time_utc │ DateTime │ DEFAULT │ toDateTime(time_epoch, \'UTC\') │
    │ time_epoch │ Float64 │ │ │
    └────────────┴──────────┴──────────────┴─────────────────────────────────┘

    insert into test (date, time_epoch) values (toDate(now()), 1527640610.101)

    localhost :) select * from test
    ┌───────date─┬────────────time_utc─┬─────time_epoch─┐
    │ 2018-07-06 │ 2018-05-30 03:36:50 │ 1527640610.101 │
  • https://t.me/clickhouse_ru
    @dimzon541 #57920 10:08 AM, 06 Jul 2018
    а подскажите если запрос в файле на жестком диске - как его выполнить из интерактивного режима clickhouse-client ?
  • https://t.me/clickhouse_ru
    как source в mysql?
  • https://t.me/clickhouse_ru
    этого я тож не знаю ;( надо чтобы зачитал с винта sql и выполнил
  • https://t.me/clickhouse_ru
    @dimzon541 #57923 10:11 AM, 06 Jul 2018
    cat sql.sql | clickhouse-client работает вроде но хочется из интерактивного режима
  • https://t.me/clickhouse_ru
    @rheinx ↶ Reply to #57923 #57924 10:12 AM, 06 Jul 2018
    А в чем разница? Все равно ошибки выползень в аутпут.

    А вообще такой команды вроде нет.
  • Дело в типе данных. Если тип данных DateTime тогда будет форматировать дату в соотвествии с часовым поясом сервера или клиента. Если нужно чтобы по умолчанию использовалась определенная таймзона - то просто указываете её в типе данных, т.е. в вашем случае CREATE TABLE ... ( time_utc DateTime('UTC') DEFAULT ... )
  • https://t.me/clickhouse_ru
    @dimzon541 #57926 10:13 AM, 06 Jul 2018
    мне не ощибки мне статус с прогресс-баром итд... запрос очень жирный через клипбоард тормозно вставлять
  • clickhouse-client --help
    Main options:
    ...
    -t [ --time ] print query execution time to stderr in
    non-interactive mode (for benchmarks)
    --stacktrace print stack traces of exceptions
    --progress print progress even in non-interactive
    mode
    --echo in batch mode, print query before
    execution
    ...
  • Спасибо!
  • А можно ли как-то безболезнено сделать alter поля, которое уже содержит данные, c DateTime на DateTime('UTC')
  • @YaroslavMakarov #57930 10:23 AM, 06 Jul 2018
    он просто ругается на несоответствие типов
  • @afadeev #57931 10:48 AM, 06 Jul 2018
    Joined.
  • @shtokhov #57932 10:55 AM, 06 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @dimzon541 #57933 10:56 AM, 06 Jul 2018
    господа я тут бъюсь над одним страшным запросом, может быть есть мысли как можно ускорить? https://pastebin.com/9kDPTXB7
  • https://t.me/clickhouse_ru
    @dimzon541 #57934 11:06 AM, 06 Jul 2018
    упирается с CPU я так понимаю.
  • https://t.me/clickhouse_ru
    @makrushin_evgenii #57935 11:26 AM, 06 Jul 2018
    Joined.
  • Должно быть безболенно, но увы нет. Создал issue: https://github.com/yandex/ClickHouse/issues/2602
    Type mismatch: Column has type DateTime('UTC'), got type DateTime #2602

    Test case: create table x2 ( ts_utc DateTime DEFAULT toDateTime(ts, 'UTC'), ts DateTime )Engine = MergeTree ORDER BY ts; INSERT INTO x2(ts) values ( now() ); alter table x2 modify column ts_utc DateTime('UTC') DEFAULT toDateTime(ts, 'UTC...

  • сделать группировку по sessionid, checkpoint_code и вытащить any(synchronized_event_time) из каждой группы. А потом на результате сделать группировку по sessionid и перенести нужные значение в отдельные колонки.
  • @mfilimonov #57938 11:39 AM, 06 Jul 2018
    Так будет намного быстрее чем миллион if
  • https://t.me/clickhouse_ru
    Как именно перенести результаты в нужную колонку? Я как раз через anyif это делаю
  • https://t.me/clickhouse_ru
    Следует иметь ввиду, что указывать в PREWHERE только столбцы, по которым существует индекс, имеет мало смысла, так как при использовании индекса и так читаются лишь блоки данных, соответствующие индексу.
    https://clickhouse.yandex/docs/ru/query_language/queries/#prewhere
  • @475966210 #57941 11:52 AM, 06 Jul 2018
    Joined.
  • @mfilimonov #57942 11:53 AM, 06 Jul 2018
    Если нужно обязательно по колонкам разнести (зачем?) то можно потом с помощью if. Разница в том что сейчас на каждой ИСХОДНОЙ строке выполняется миллион if, а тут был бы миллион if на сгруппированных строках, которых я полагаю будет значительно меньше.
  • @475966210 #57943 11:56 AM, 06 Jul 2018
    Господа, не подскажите с одной проблемой. В clickhouse держу базу для графита с движком GraphiteMergeTree, если указываю агрегацию по sum на определенных интервалах, то clickhouse начинает агрегировать какую то дичь. Например для метрик типа counter последнее значение может быть меньше предыдущего.
  • @ztlpn ↶ Reply to #57936 #57944 11:57 AM, 06 Jul 2018
    Это в 54388 было исправлено
  • https://t.me/clickhouse_ru
    неа, в 99.9999% в рамках одной session_id только одно событие "xxx", сверткой не спасешься... по колонкам разнести - надо считать дельту времени между различными событиями и выявлять нарушение максимально допустимого времени. этих правил (дельт которые надо считать и контролировать) в макете 2000... Думается сначала собрать такую широкую таблицу в memory а потом тейблсканами по ней 2000 запросов...
  • @mfilimonov #57946 12:24 PM, 06 Jul 2018
    А в таблицу не хотите это сгруппировать?
  • Performance of WHERE vs PREWHERE when selecting by primary key · Issue #2601 · yandex/ClickHouse

    According to docs: "Keep in mind that it does not make much sense for PREWHERE to only specify those columns that have an index, because when using an index, only the data blocks that match th...

  • https://t.me/clickhouse_ru
    что именно? данные о событиях летят кладутся отдельными записямив КХ.
  • @harry_truman #57949 12:59 PM, 06 Jul 2018
    Подскажите, а как сгруппировать данные по 3 месяца?
  • https://t.me/clickhouse_ru
    @orantius #57950 01:01 PM, 06 Jul 2018
    toStartOfQuarter
  • Ну можно это в несколько шагов сделать.
    1) трансформируйте ваши значения в номера колонок,
    типа такого transform( checkpoint_code , [ 'B_rule_1sec_0', 'A_rule_1sec_1', 'B_rule_1sec_1', ... ], [1,2,3, ...], 0) as arr_index,2) погруппируйте данные по session_id, arr_index cобирая попутно synchronized_event_time select session_id, transform( ... ) as arr_index, any(synchronized_event_time) as some_synchronized_event_time group by session_id, arr_index3) поверх всего этого сделайте группировку по session_id и собирая таймстампы в таблицы в нужные позиции с помощью groupArrayInsertAt: select session_id, groupArrayInsertAt( some_synchronized_event_time, arr_index ) from ( ... предыдущий селект ... ) group by session_id4) на выходе получите примерно то на что расчитывали, только не в колонках а в таблице. и должно работать ощутимо быстрее. Таблицы могут не иметь хвостовых элементов, но это ни в чем не мешает.
    5) потом по этим таблицам можно ездить аггрегациями c -ForEach или функциями высшего порядка. Или тупо повытаскивать отдельные элементы таблицы в колонки и делать то что вам там нужно.
  • Спасибо! А как быть с группировкой по 6 месцев?
  • https://t.me/clickhouse_ru
    @Valenvaryon #57953 01:14 PM, 06 Jul 2018
    Привет!
    Есть табличка с полем UInt8
    При фильтрации типа field = 1 все работает нормально,
    но при фильтрации типа field in (1,2) кликхаус ругается на нестыковку типов
    Как тут правильно сделать?
  • вы нас обманываете... :)
    create temporary table www ( w UInt8 );
    insert into www values (1),(2),(3);
    select * from www where w in (1,2);
    ┌─w─┐
    │ 1 │
    │ 2 │
    └───┘

    2 rows in set. Elapsed: 0.012 sec.
  • https://t.me/clickhouse_ru
    вот так точно ошибка выглядит:
    DB::Exception: Types of column 1 in section IN don't match: Int8 on the right, UInt8 on the left
    походу разобрался, читаем из merge-таблицы, в ней Int8, а в нижележащих таблицах UInt8
  • https://t.me/clickhouse_ru
    @Valenvaryon #57956 01:25 PM, 06 Jul 2018
    причем ошибка повторяется только в prewhere
  • https://t.me/clickhouse_ru
    @508124506 #57957 01:26 PM, 06 Jul 2018
    Привет.
    Есть web api, который возвращает данные в формате json. Пример: [{"id": 1, "name":"abc"}].
    При подключении api к clickhouse в качестве внешнего словаря, получаю ошибку: Format JSON is not suitable for input.
    Существуют ли какие то варианты использования такого формата?
  • Только JSONEachRow.
  • Например так: group by intDiv(toRelativeMonthNum(date), 6)
  • https://t.me/clickhouse_ru
    Progress: 554.31 million rows, 16.63 GB (9.62 million rows/s., 288.67 MB/s.) 99% дошло до 99% и думает, КХ при этом непонятно чем занимается (ядро даже одно полностью не занято)....
  • Ага. Кликхаус те вещи для которых не может оценить время выполнения на последнем проценте выполняет :) Потерпите :)
  • https://t.me/clickhouse_ru
    спасибо
  • https://t.me/clickhouse_ru
    @nikitosiusis #57963 01:48 PM, 06 Jul 2018
    а не знаете аналога toStartOfFifteenMinutes в mysql? ну так совершенно случайно:)
  • Супер!!! Спасибо большое!
  • https://t.me/clickhouse_ru
    Так и не дождался. Переписал запрос чуток (раскрыл скодбки убрал any вообще) https://pastebin.com/6azBGvVQ → Progress: 19.86 million rows, 595.22 MB (198.30 thousand rows/s., 5.94 MB/s.) 3%Received exception from server (version 1.1.54388):
    Code: 1001. DB::Exception: Received from localhost:9000, ::1. DB::Exception: std::bad_alloc.
    120.525
  • https://t.me/clickhouse_ru
    преобразовать в unix-timestamp (получится чиселко) потом разделить на 900, отбросить дробную часть, умножить на 900 и потом FROM_UNIXTIMESTAMP-получится дата/время
  • @dkhrustalev #57967 02:25 PM, 06 Jul 2018
    Joined.
  • Н-да. Это у вас конспирация такая сильная что все столбцы каждый раз меняются? :)
    Что должно означать groupArrayInsertAt(0,4000)?
  • https://t.me/clickhouse_ru
    @dimzon541 #57969 02:45 PM, 06 Jul 2018
    просто со строк перешел на числа (ID-ы) - сравнивать проще. groupArrayInsertAt(0,4000) - выделить сразу 4000 элементов, заполнить нулями. Пофиг и с ним и без него падает
  • https://t.me/clickhouse_ru
    @tairesh #57970 02:45 PM, 06 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    Как-то слишком жирно 4000 элементов на строку, не находите? Зачем столько? По моему опыту с таким порядком цифр вам не к КХ, а куда-то в сторону Hadoop и ему подобных
  • https://t.me/clickhouse_ru
    требование заказчика - макет с 10+ кратным запасом по объемам
  • Ну вы там пытаетесь всё это ещё в таблицу с движком Memory запихать.
  • @mfilimonov #57974 02:48 PM, 06 Jul 2018
    Может memory кончается у вас? :)
  • @mfilimonov #57975 02:49 PM, 06 Jul 2018
    с groupArrayInsertAt(0,4000) так делать не надо. Хвостовые элементы в таблице низачем не нужны
  • @thodin #57976 02:49 PM, 06 Jul 2018
    кстати, а есть какие-то цифры, какое количество элементов в строке для CH предел по эффективности?
  • https://t.me/clickhouse_ru
    ИМХО - больше 100 байт - уже много
  • Array с 4000 тысячами элементов - должно быть терпимо.
  • https://t.me/clickhouse_ru
    поменял на Log жду...
  • https://t.me/clickhouse_ru
    Терпимо, но зачем так делать? Я пока не очень понимаю какую проблему пытаются решить создавая такой массив
  • https://t.me/clickhouse_ru
    сделать PIVOT по 4000 точек
  • https://t.me/clickhouse_ru
    @dimzon541 #57984 02:53 PM, 06 Jul 2018
    сделал engine=Log не взлетело... ← Progress: 20.05 million rows, 601.11 MB (108.74 thousand rows/s., 3.26 MB/s.) 3%Received exception from server (version 1.1.54388):
    Code: 1001. DB::Exception: Received from localhost:9000, ::1. DB::Exception: std::bad_alloc.
    186.830
  • https://t.me/clickhouse_ru
    Попробуйте MergeTree
  • @seregamoog #57986 02:56 PM, 06 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @dimzon541 #57987 02:57 PM, 06 Jul 2018
    ест 128 гигов и падает....
  • @mfilimonov #57988 03:12 PM, 06 Jul 2018
    4000 * 20 млн строк - это довольно много. У вас включена агрегация с использованием диска?
  • https://t.me/clickhouse_ru
    нет наверное
  • https://t.me/clickhouse_ru
    @dimzon541 #57990 03:15 PM, 06 Jul 2018
    я счас развернул алгоритм... сначала отбираю в memory table "окно" с событиями. А потом уже "разворачиваю" для каждого правила из 2-х тысяч
  • https://t.me/clickhouse_ru
    @dimzon541 #57991 03:15 PM, 06 Jul 2018
    такое чуство что быстрее
  • https://t.me/clickhouse_ru
    @dimzon541 #57992 03:16 PM, 06 Jul 2018
    окно строилось 16 секунд, 250 правил вычисляются одним запросом за 15 секунд
  • https://t.me/clickhouse_ru
    @dimzon541 #57993 03:17 PM, 06 Jul 2018
    все правила в union all не получается говорит AST Complexitiy Превышен
  • https://t.me/clickhouse_ru
    @dimzon541 #57994 03:17 PM, 06 Jul 2018
    можно кстати как-то его подкрутить?
  • https://t.me/clickhouse_ru
    Насколько я знаю - да, сейчас посмотю
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #57998 03:20 PM, 06 Jul 2018
    max_ast_elements
  • https://t.me/clickhouse_ru
    @dimzon541 #57999 03:32 PM, 06 Jul 2018
    2000 запросов через union all
  • https://t.me/clickhouse_ru
    @dimzon541 #58000 03:32 PM, 06 Jul 2018
    ↓ Progress: 12.04 billion rows, 336.98 GB (287.62 million rows/s., 8.05 GB/s.) Received exception from server (version 1.1.54388):
    Code: 1001. DB::Exception: Received from localhost:9000, ::1. DB::Exception: Resource temporarily unavailable.
    42.069
  • https://t.me/clickhouse_ru
    @dimzon541 #58001 03:33 PM, 06 Jul 2018
    запросики идентичные только цифры меняются
  • https://t.me/clickhouse_ru
    @dimzon541 #58002 03:33 PM, 06 Jul 2018
    select 1705 rule,
    ts,
    c1,
    c2
    from
    (
    select
    toStartOfMinute(toDateTime(t1)) ts,
    count() c1,
    countIf(t1 - t0 > 900) c2
    from
    (
    select
    b>0?b:(b+901) t1,
    a t0
    from
    (select sid, anyIf(ts,cc=11078065251486343680) a, anyIf(ts,cc=10964831536725407699) b
    from tmp0.`t_2018-07-04 10:00:00_c6eeccb44e75416b8ff51fa8e7b26e52_d`
    where ts >= toUInt32(toDateTime('2018-07-04 10:00:00', 'UTC')) -1021
    AND ts <= toUInt32(toDateTime('2018-07-04 10:00:00', 'UTC'))
    and cc in (11078065251486343680,10964831536725407699)
    group by sid)
    WHERE
    a >= toUInt32( toDateTime('2018-07-04 10:00:00','UTC')) - 1021
    )
    where
    t1 > 0
    group by
    ts
    )
    where ts>=toStartOfMinute(toDateTime('2018-07-04 10:00:00','UTC') - 120)
  • https://t.me/clickhouse_ru
    @den_crane #58003 04:28 PM, 06 Jul 2018
    Создаю таблицу

    create table x (a Int64) Engine=MergeTree Partition by tuple() order by tuple()
    settings max_bytes_to_merge_at_max_space_in_pool = 214748364800

    А как потом поменять max_bytes_to_merge_at_max_space_in_pool?
    alter ...
    detach поправить x.sql attach

    какой легальный путь вообще?

    таблица репликейтид
  • @584940187 #58004 04:33 PM, 06 Jul 2018
    Joined.
  • @vstakhov #58005 05:33 PM, 06 Jul 2018
    гм, а как из всех этих вот разрозненных вкладок таббикса сделать бы какую-то аналитическую морду (типа кибаны)? или я многого хочу?
  • В будущих версиях это будет, сейчас никак(
  • https://t.me/clickhouse_ru
    @kenota ↶ Reply to #58005 #58007 06:37 PM, 06 Jul 2018
    Посмотрите в сторону redash. Он умеет с кликхаусом работать.
  • @vstakhov #58008 06:38 PM, 06 Jul 2018
    за деньги я и сам, что нужно, напишу, но спасибо
  • https://t.me/clickhouse_ru
    @kenota ↶ Reply to #58008 #58009 06:39 PM, 06 Jul 2018
    Вы про redash? Он абсолютно бесплатен хостить у себя. Опенсорсный, есть докер компоуз.
  • @vstakhov #58010 06:40 PM, 06 Jul 2018
    ох, тогда я сильно проглядел это, спасибо еще раз
  • https://t.me/clickhouse_ru
    У меня так и не получилось увеличить встроеный в redash таймаут на 30 секунд. Причем запрос выполняется 1 секунду, а redash тупит 30 секунд и всё
  • https://t.me/clickhouse_ru
    @kenota ↶ Reply to #58011 #58012 06:58 PM, 06 Jul 2018
    Хм, не сталкивался. А у вас точно все нормально поднялось? У редаш там сложная архитектура, постгря, мессадж сервис, экзекьютор... Нужно что бы все друг друга видели. Пробовали свежие версии?
  • https://t.me/clickhouse_ru
    Пробовал в докере, пару месяцев назад. Простой запрос типа count проходит, просто в консоле запрос за десятую секунды выполняется. А в редаш полминуты непонятно-что делается
  • @mfilimonov #58015 08:16 PM, 06 Jul 2018
    Ещё superset слышал что хвалили
  • @mfilimonov #58016 08:17 PM, 06 Jul 2018
    Zeppelin тоже без особых проблем можно подружить с КХ
  • https://t.me/clickhouse_ru
    @ifoton ↶ Reply to #58015 #58017 08:18 PM, 06 Jul 2018
    superset с последней версией КХ не работает https://github.com/cloudflare/sqlalchemy-clickhouse/issues/23
    Does not work with ClickHouse no more #23

    Current version does not work with latest ClickHouse (1.1.54385). Please grab a patch from https://github.com/JustOnce/sqlalchemy-clickhouse, it's fixed there with latest commit.

  • https://t.me/clickhouse_ru
    именно на Executing query висит или другое сообщение? пользуемся redash+clickhouse почти два года, такого не замечали. могу посмотреть, если опишете подробнее
  • А что этот патч? Не помогает?
  • https://t.me/clickhouse_ru
    @ifoton ↶ Reply to #58019 #58020 08:22 PM, 06 Jul 2018
    еще не пробывал, хочется конечно чтобы все работало из коробки😔
  • https://t.me/clickhouse_ru
    +1. Пока табикс стабильнее всего
  • https://t.me/clickhouse_ru
    @ifoton #58022 09:33 PM, 06 Jul 2018
    Да, но там с интерфейсом не ок)
  • А что не нравится? Что не устраевает?
    Я сейчас как раз полностью переписываю на 100% весь код
  • https://t.me/clickhouse_ru
    @ifoton #58024 09:44 PM, 06 Jul 2018
    три скрола на странице например
  • @garikanet #58025 09:44 PM, 06 Jul 2018
    ого
  • https://t.me/clickhouse_ru
    @ifoton #58026 09:45 PM, 06 Jul 2018
    может это только у меня конечно беда, 4к монитор и браузер эдж
  • даже и не знал о таком, в текущей не поправлю - т.к все больше обновлять эту версию не буду ) а в новой может само исправится
  • в edge вообще не должен он работать)
  • @garikanet #58029 09:47 PM, 06 Jul 2018
    я даже и не знал что он в нем работает)
  • https://t.me/clickhouse_ru
    @nordluf ↶ Reply to #58023 #58030 09:47 PM, 06 Jul 2018
    То что он лучше всего остального - факт. Но есть проблемы. Баги, неудобный скрол результатов, непонятные подсказки
  • https://t.me/clickhouse_ru
    @ifoton #58031 09:47 PM, 06 Jul 2018
    я думаю это проблема с маштабированием, если ставлю дпай как у всех становится один скрол, но разглядеть тогда уже не реально)
  • Скроллы в новой версии будут другие - т.к компоненты совсем "другие")

    а про подсказки заведите issue - обсудим что не нравится
  • https://t.me/clickhouse_ru
    @nordluf #58033 09:50 PM, 06 Jul 2018
    В текущем скролле мне не нравится что для горизонтальной прокрутки надо крутить пару экранов вниз
  • попробуйте chrome/firefox - может лучше будет, под edge честно даже не планировал поддержку (
  • https://t.me/clickhouse_ru
    @nordluf #58035 09:51 PM, 06 Jul 2018
    И очень не хватает нормального хелпа по горячим клавишам
  • https://t.me/clickhouse_ru
    @ifoton ↶ Reply to #58033 #58036 09:52 PM, 06 Jul 2018
    о я даже не знал что он есть) жал стрелки
  • https://t.me/clickhouse_ru
    @nordluf #58037 09:53 PM, 06 Jul 2018
    А вообще хорошо иметь возможность выразить лично благодарность за классный ui :)
  • да есть такое, у меня magicmouse - там это проще
  • @garikanet #58039 09:53 PM, 06 Jul 2018
    поставлю обычную мышку попробую - спасибо за замечание
  • https://t.me/clickhouse_ru
    @nordluf #58040 09:55 PM, 06 Jul 2018
    А не было идеи сделать переименование используемого поля или переменной везде где она используется?
  • да мое упущение -- добавлю в доку хот кеи
  • https://t.me/clickhouse_ru
    @nordluf #58042 09:55 PM, 06 Jul 2018
    Спасибо большое!
  • https://t.me/clickhouse_ru
    @ifoton ↶ Reply to #58034 #58043 09:55 PM, 06 Jul 2018
    очень не хочется ставить лишнего в систему когда встроенное работает, если новая версия не заведется то тогда уж да, а пока я к этом интерфейсу привык)
  • https://t.me/clickhouse_ru
    @ifoton ↶ Reply to #58037 #58044 09:56 PM, 06 Jul 2018
    Присоединяюсь, респект!
  • не понял, можно пример , есть простые переменные, но они криво реализованы в плане ui
  • Нзч)
  • https://t.me/clickhouse_ru
    @nordluf ↶ Reply to #58045 #58047 10:00 PM, 06 Jul 2018
    что-то типа такого - иннплейс рефакторинг. Ну, вдруг
    https://www.youtube.com/watch?v=RExpDf3xG4Y
    In-place Rename Refactoring

    In PhpStorm when you need to rename a variable, parameter, class, method, constant or goto label, you can do it in-place, right in the editor pane.

  • подумаю - но это не просто реплейс, с "заковыркой")
  • Я начал писать статью, и бросил т.к в том виде табикса больше не будет)

    Список хот кеев

    https://github.com/tabixio/tabix.docs/blob/master/articles/article01.md
    tabixio/tabix.docs

    tabix.io docs & articles. Contribute to tabixio/tabix.docs development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    @nordluf #58050 10:04 PM, 06 Jul 2018
    да, он еще в контексте смотрит, то есть не затрагивает другие област видимости.
    но я так подумал, кажется что это далеко не самый частый юзкейс
  • https://t.me/clickhouse_ru
    @nicname #58051 10:05 PM, 06 Jul 2018
    присоединяюсь к благодарностям за табикс. а когда новый можно будет пощупать? )
  • Ctrl-H или Command-Option-F
    replace
  • сейчас очень активно пилится, и появился отдельный dev)

    я думаю к "осеннему" митапу будет stable(((
    пощупать надеюсь к концу августа(((
  • https://t.me/clickhouse_ru
    @nicname #58054 10:08 PM, 06 Jul 2018
    здорово, ждем
  • https://t.me/clickhouse_ru
    @nordluf #58055 10:09 PM, 06 Jul 2018
    А митапы в Германии раз в год только бывают, кстати?
  • Пока невозможно сказать, насколько часто они бывают.

    Изначально планировали проводить европейские митапы примерно 1-2 раза в год, в разных местах.

    Последний митап организовывала компания DeliveryHero: когда есть готовая площадка и организация - то всё упрощается, и можно проводить мероприятия чаще.
  • 07 July 2018 (9 messages)
  • https://t.me/clickhouse_ru
    @ph_maxx #58057 08:48 AM, 07 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    Скинь ссылку на репу, если есть
  • https://t.me/clickhouse_ru
    Спасибо
  • @550510657 #58061 12:22 PM, 07 Jul 2018
    Joined.
  • @405065631 #58062 04:34 PM, 07 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @OrNixx #58063 04:53 PM, 07 Jul 2018
    привет. есть проблема с взрывным ростом потребления памяти, непонятно чем вызванным.
    http://joxi.ru/823jnOahJPEl5m
    https://pastebin.com/1tmB76Ga в еррор-логе с этого момента, но это наверное следствие, а не причина
  • https://t.me/clickhouse_ru
    @OrNixx #58064 04:55 PM, 07 Jul 2018
    количество бэкграунд-воркеров снизил с 16 до 8, потом до 6. разницы нет
  • https://t.me/clickhouse_ru
    @nicname #58065 11:23 PM, 07 Jul 2018
    @garikanet Игорь, подскажите пожалуйста, а вы для вывода таблиц таких универсальных какой-то собственный компонент используете или это что-то опенсорсное?
  • 08 July 2018 (5 messages)
  • Включите query_log, посмотрите - возможно какие запросы съедают память.
  • @525885066 #58068 08:45 AM, 08 Jul 2018
    Joined.
  • @597103465 #58069 02:50 PM, 08 Jul 2018
    Joined.
  • @613450536 #58070 11:19 PM, 08 Jul 2018
    Joined.
  • 09 July 2018 (97 messages)
  • https://t.me/clickhouse_ru
    @skarzhinets #58071 02:40 AM, 09 Jul 2018
    Подскажите, почему запрос с GLOBAL IN может выводить данные с одного узла, а не со всех? т.е. запрос:
    SELECT *
    FROM tbl
    preWHERE EntityID GLOBAL IN (
    SELECT EntityID
    FROM tbl
    preWHERE EntityID = 'value'
    )
    показывает меньше данные чем запрос
    SELECT *
    FROM tbl
    preWHERE EntityID = 'value'
  • https://t.me/clickhouse_ru
    Уточнение по вопросу:
    CH развёрнут на 3-х шардах: 1, 2, 3.
    На каждой есть копия таблички со своими данными + представление, выводящее данные со всех шард.
    Я подключаюсь к шарду 1, выполняю запрос к представлению, и из результатов выпдают данные с шарда 1. Что не так с настройками или запросом?
  • https://t.me/clickhouse_ru
    GLOBAL IN don't return results from all nodes

    Why when I use "GLOBAL IN", I do not get results from all nodes? Example 1: SELECT * FROM tbl PREWHERE EntityID GLOBAL IN ( SELECT EntityID FROM tbl PREWHERE EntityID = 'value' ) Exa...

  • https://t.me/clickhouse_ru
    @napaHouk99 #58074 06:54 AM, 09 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @bsideup #58075 08:25 AM, 09 Jul 2018
    А что происходит с MATERIALIZED views когда исходная таблица из запроса меняется?
  • https://t.me/clickhouse_ru
    @Shegloff ↶ Reply to #58072 #58077 09:41 AM, 09 Jul 2018
    дайте CREATE TABLE всех таблиц и представлений, тогда будет понятней
  • https://t.me/clickhouse_ru
    @Shegloff #58078 09:41 AM, 09 Jul 2018
    через pastebin какой-нибудь
  • https://t.me/clickhouse_ru
    @bsideup #58079 10:01 AM, 09 Jul 2018
    > We don't recommend using POPULATE, since data inserted in the table during the view creation will not be inserted in it.

    А как лучше всего достигать consistent views, если POPULATE не позволяет этого, а без него только новые данные попадают в view?
  • https://t.me/clickhouse_ru
    @Shegloff #58080 10:04 AM, 09 Jul 2018
    останавливать запись в таблицу при POPULATE
  • https://t.me/clickhouse_ru
    @bsideup #58081 10:10 AM, 09 Jul 2018
    а это можно сделать в СН?
  • https://t.me/clickhouse_ru
    Мы изначально приняли решение, что все записи идут через кафку с одним универсальным сервисом-консюмером, который пишет в кх, и я с тех пор только радуюсь этому - подобные ситуации вообще не составляют проблемы. Рекомендую
  • https://t.me/clickhouse_ru
    @molo4ko007 #58083 10:14 AM, 09 Jul 2018
    В смысле, мы просто останавливаем консюмер, делаем мейнтенанс и дальше продолжаем
  • https://t.me/clickhouse_ru
    @Imaskar #58084 10:15 AM, 09 Jul 2018
    так а если этот 1 сервис не справится?
  • https://t.me/clickhouse_ru
    @molo4ko007 #58085 10:15 AM, 09 Jul 2018
    Консюмеры масштабируются горизонтально
  • https://t.me/clickhouse_ru
    @molo4ko007 #58086 10:16 AM, 09 Jul 2018
    @milovidov_an а какой юзкейс многоуровневого шардирования?
  • https://t.me/clickhouse_ru
    @Imaskar #58087 10:18 AM, 09 Jul 2018
    так всё-таки масштабируются, а не один
  • https://t.me/clickhouse_ru
    @bsideup ↶ Reply to #58082 #58088 10:19 AM, 09 Jul 2018
    у нас так же, но тогда нужен глобальный лок для всех consumer-ов. Так же, views создаются вне consumer-ов, аналитиками
  • https://t.me/clickhouse_ru
    @molo4ko007 #58089 10:21 AM, 09 Jul 2018
    @Imaskar имеется в виду сервис как логическая единица. Нет других источников трафика в кх, кроме кафка-консюмеров.
  • https://t.me/clickhouse_ru
    @molo4ko007 #58090 10:21 AM, 09 Jul 2018
    @bsideup в смысле лок? Между консюмерами одной группы записи раунд-робинятся
  • https://t.me/clickhouse_ru
    @molo4ko007 #58091 10:23 AM, 09 Jul 2018
    Можно аналитикам выдать строго контролируемую кнопку “остановить запись” (со всеми предосторожностями), которая будет их всех останавливать. Хотя, наверное, создание вью - не такая уж и частая операция, можно по договоренности это делать.
  • https://t.me/clickhouse_ru
    @dimzon541 #58092 10:55 AM, 09 Jul 2018
    люди а подскажите оптимальную последовательность полей в индексе. Если было бы строгое равенство при поиске то все понятно но тут и диапазоны итд, нужно минимизировать индекс скан. условие where такое: WHERE event_date IN (constDate1, constDate2) and event_datetime >= constDateTime1 and event_datetime<=constDateTime2 and event_name in (constString1, constString2)
  • https://t.me/clickhouse_ru
    @dimzon541 #58093 11:00 AM, 09 Jul 2018
    по "обычным" реляционкам и если бы не было event_date я бы сделал event_name первым, выполнял бы 2 запроса со строгим равенством event_name и собирал бы их через union all т.е.: where event_name=const1 and eventr_datetime between .... UNION ALL ... where event_name=const2 and eventr_datetime between ....
  • https://t.me/clickhouse_ru
    Здесь достаточно хорошо расписана логика работы индексов
    https://groups.google.com/forum/#!searchin/clickhouse/%D0%B8%D0%BD%D0%B4%D0%B5%D0%BA%D1%81%7Csort:relevance/clickhouse/eUrsP30VtSU/p4-pxgdXAgAJ
  • @d_0x1337 #58095 11:30 AM, 09 Jul 2018
    Всем привет! Кто-нибудь подскажет, почему некорректно totals считаются?

    SELECT
    uniqExact(visit_id) AS visits,
    domain(page)
    FROM my_big_table
    SAMPLE 100
    ARRAY JOIN page
    WHERE (project_id = 1337) AND (dt <= toDate('2018-03-31')) AND (dt >= toDate('2018-03-01'))
    GROUP BY page
    WITH TOTALS
    ORDER BY visits DESC

    ┌─visits─┬─domain(page)────────────┐
    │ 2 │ news.yandex.ru │
    │ 1 │ music.yandex.ru │
    │ 1 │ mail.yandex.ru │
    │ 1 │ news.yandex.ru │
    │ 1 │ music.yandex.ru │
    └────────┴─────────────────────────┘

    Totals:
    ┌─visits─┬─domain(external_links)─┐
    │ 4 │ │
    └────────┴────────────────────────┘
  • https://t.me/clickhouse_ru
    @orantius #58096 11:31 AM, 09 Jul 2018
    а что именно некорректно?
  • @d_0x1337 #58097 11:32 AM, 09 Jul 2018
    По идее totals же должно быть суммой visits?
  • https://t.me/clickhouse_ru
    @orantius #58098 11:32 AM, 09 Jul 2018
    почему?
  • @d_0x1337 #58099 11:32 AM, 09 Jul 2018
    А что тогда тоталс в таком случае?
  • https://t.me/clickhouse_ru
    @orantius #58100 11:33 AM, 09 Jul 2018
    результат вызова агрегатной функции при группировке по пустому туплу
  • @d_0x1337 #58101 11:33 AM, 09 Jul 2018
    🤔
  • @d_0x1337 #58102 11:46 AM, 09 Jul 2018
    Короче, походу проблема с SAMPLE. Цитата из доков: « SAMPLE n, где n - достаточно большое целое число».
  • Многоуровневое шардирование оправдано использовать при наличии большого количества шардов (примерно больше 20) и одновременно большого количества коротких запросов в единицу времени (примерно больше 100 QPS).
  • https://t.me/clickhouse_ru
    @Shegloff ↶ Reply to #58101 #58104 11:53 AM, 09 Jul 2018
    по идее это uniqExact(visit_id) AS visits без группировки по page
  • https://t.me/clickhouse_ru
    @Imaskar #58105 11:55 AM, 09 Jul 2018
    тогда возможно, что один из юзеров на 3 страницы заходил, остальные по однй. и тогда сходится
  • https://t.me/clickhouse_ru
    @Shegloff ↶ Reply to #58105 #58106 11:57 AM, 09 Jul 2018
    этот же селект сделайте без GROUP BY page
  • https://t.me/clickhouse_ru
    @Shegloff #58107 11:57 AM, 09 Jul 2018
    должно быть 4
  • @mingaylov #58108 12:14 PM, 09 Jul 2018
    привет. поделитесь плиз ссылкой на инструкцию, как установить кликхаус+графана
  • https://t.me/clickhouse_ru
    А зачем их вместе-то устанавливать?
  • https://t.me/clickhouse_ru
    Всё ж разные сервисы
  • @kalombos #58111 12:20 PM, 09 Jul 2018
    Подскажите, где посмотреть у функции pointInPolygon какие параметры? Я что-то запутался, что на первом месте latitude или longitude всё-таки.
  • @vstakhov ↶ Reply to #58009 #58112 12:22 PM, 09 Jul 2018
    поставил и протестировал, очень похоже, что это как раз то, что я искал
  • @YaroslavMakarov #58113 12:26 PM, 09 Jul 2018
    Всем привет, возникла проблема при работе с zookeeper. Всего один шард, на локальной машине (таблицы ReplicatedMergeTree). Никогда такого не было, но сейчас очень часто возникает ошибка:

    Code: 122. DB::Exception: Received from localhost:9000, ::1. DB::Exception: Table structure in ZooKeeper is too different from local table structure.

    Пробовал удалять таблицу через zookeeper-cli, из папки /var/lib. Где zookeeper хранит данные о таблице??? Можно ли как-то удалить данные о всех таблицах из zookeeper?
  • На первом x, на втором y :D Обычно Long = X а Lat = Y. Но если сделать наоборот - тоже все будет работать (тсс!..), главное последовательно использовать.
  • Когда сделаете DROP TABLE со всех реплик - само удалится.
  • @kalombos ↶ Reply to #58114 #58116 12:29 PM, 09 Jul 2018
    Спасибо, предполагал, что так, но не был уверен.
  • Путь к параметрам таблицы в зукипере вы задаете при CREATE TABLE.
  • https://t.me/clickhouse_ru
    @kenota ↶ Reply to #58112 #58118 12:31 PM, 09 Jul 2018
    Рад был помочь :)
  • а вручную как-то можно снести все полностью, что он знает о таблицах?
  • https://t.me/clickhouse_ru
    @Imaskar ↶ Reply to #58114 #58120 12:31 PM, 09 Jul 2018
    а разве за счёт схождения сетки на полюсах там не особые правила расчёта? tile38 говорит об этом явно. тогда если поменять местами, могут быть и расхождения.
  • AFAIK pointInPolygon работает просто на плоскости. Плоскости всё равно где у неё x, а где y, разве нет?
  • Ну если у вас уже нет этих реплик, то можно просто снести соответствующие папки, например с помощью cli-клиета zookeeper: https://www.tutorialspoint.com/zookeeper/zookeeper_cli.htm
    Zookeeper - CLI - Tutorialspoint

    Zookeeper - CLI - ZooKeeper Command Line Interface (CLI) is used to interact with the ZooKeeper ensemble for development purpose. It is useful for debugging and working around wi

  • @YaroslavMakarov #58123 12:43 PM, 09 Jul 2018
    спасибо, но не помогает, уже пробовал это. Он все равно где-то видит старую структуру.....
  • @mfilimonov #58124 12:47 PM, 09 Jul 2018
    Не может быть :) Может у вас какая-то другая таблица на том же хосте в ту же папку смотрит?
  • @mfilimonov #58125 12:49 PM, 09 Jul 2018
    Загляните ещё так: SELECT * FROM system.zookeeper WHERE path='/clickhouse/ ... путь к вашей таблице ...'
  • @YaroslavMakarov #58126 12:51 PM, 09 Jul 2018
    SELECT *
    FROM system.zookeeper
    WHERE path = '/clickhouse'

    ┌─name───────┬─value─┬─czxid─┬─mzxid─┬───────────────ctime─┬───────────────mtime─┬─version─┬─cversion─┬─aversion─┬─ephemeralOwner─┬─dataLength─┬─numChildren─┬─pzxid─┬─path────────┐
    │ tables │ │ 6 │ 6 │ 2018-07-09 15:40:59 │ 2018-07-09 15:40:59 │ 0 │ 4 │ 0 │ 0 │ 0 │ 0 │ 41 │ /clickhouse │
    │ task_queue │ │ 3 │ 3 │ 2018-07-09 15:40:50 │ 2018-07-09 15:40:50 │ 0 │ 1 │ 0 │ 0 │ 0 │ 1 │ 4 │ /clickhouse │
    └────────────┴───────┴───────┴───────┴─────────────────────┴─────────────────────┴─────────┴──────────┴──────────┴────────────────┴────────────┴─────────────┴───────┴─────────────┘

    localhost :) select * from system.zookeeper WHERE path='/clickhouse/tables'

    Ok.

    0 rows in set. Elapsed: 0.005 sec.
  • @YaroslavMakarov #58127 12:51 PM, 09 Jul 2018
    нет ничего)
  • @YaroslavMakarov #58128 12:51 PM, 09 Jul 2018
    localhost :) show tables

    SHOW TABLES

    Ok.

    0 rows in set. Elapsed: 0.007 sec.
  • @YaroslavMakarov #58129 12:51 PM, 09 Jul 2018
    и таблиц нет
  • @YaroslavMakarov #58130 12:52 PM, 09 Jul 2018
    причем до сегодняшнего дня все отлично работало)
  • @YaroslavMakarov #58131 12:52 PM, 09 Jul 2018
    вот я и думаю, что он куда то может скинул данные о моих таблицах, которые были
  • @YaroslavMakarov #58132 12:53 PM, 09 Jul 2018
    $ cat nginx.sql | clickhouse-client -n -m
    Received exception from server (version 1.1.54385):
    Code: 122. DB::Exception: Received from localhost:9000, ::1. DB::Exception: Table structure in ZooKeeper is too different from local table structure.
  • @mfilimonov #58133 12:53 PM, 09 Jul 2018
    А базы данных другие есть? SHOW DATABASES?
  • @YaroslavMakarov #58134 12:54 PM, 09 Jul 2018
    localhost :) show databases

    SHOW DATABASES

    ┌─name────┐
    │ default │
    │ system │
  • @mfilimonov #58135 12:55 PM, 09 Jul 2018
    Может вы поудаляли данные из зукипера пока таблицы ещё были? Попробуйте перезапустатить Clickhouse.
  • @YaroslavMakarov #58136 12:57 PM, 09 Jul 2018
    то же самое...
  • @YaroslavMakarov #58137 12:58 PM, 09 Jul 2018
    zookeeper можно как-то снести полностью, чтобы он за собой все подчистил свои данные?
  • https://t.me/clickhouse_ru
    А что это вообще такое? У вас нет презентаций или видео про это? Я пытаюсь понять, как это работает, по упоминанию в документации и пока не осилил)
  • https://t.me/clickhouse_ru
    Можно только руками подчистить базы после удаления.
  • https://t.me/clickhouse_ru
    Обычно в /var/lib/zookeeker всё лежит.
  • https://t.me/clickhouse_ru
    Если требуется не удалить, а получить свежеустановленный зукипер - достаточно остановить, удалить базы (у меня лежат в /var/lib/zookeeper/version-2) и потом запустить.
  • Это значит - у вас есть очень большой кластер.

    Его можно рассматривать и как единое целое - для глобальных запросов, и как совокупность небольших кластеров - для запросов по одному клиенту.

    На каждом сервере создано две Distributed таблицы и в конфиге объявлено два кластера - один большой, а другой - маленький, для части данных.

    Для примера, у нас всего серверов в одном кластере - 584. Они разбиты на 39 маленьких кластеров, которые мы называем "слои". Данные каждого счётчика Метрики (сайта) располагаются в пределах одного слоя. Каждый слой содержит от 4 до 16 шардов - от 8 до 32 серверов.

    Слои можно масштабировать независимо. В рамках слоя схема шардирования - произвольная (random).
  • https://t.me/clickhouse_ru
    Лично мне это понадобилось только когда у кластера съехала крыша (неправильно расчитал требуемый объём памяти) и его содержимое пришлось восстанавливать из бекапа, выбирая узел с самым последним сбекапленым содержимым и очищая остальные...
  • https://t.me/clickhouse_ru
    @vladyslavkr #58144 02:30 PM, 09 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @d_zotov #58145 03:31 PM, 09 Jul 2018
    Joined.
  • @githubreleases_bot #58146 b o t 03:37 PM, 09 Jul 2018
    yandex/ClickHouse was tagged: v1.1.54390-stable
    Link: https://github.com/yandex/ClickHouse/releases/tag/v1.1.54390-stable
    Release notes:
    v1.1.54390-stable
    ClickHouse/ClickHouse

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

  • https://t.me/clickhouse_ru
    @xammett ↶ Reply to #58146 #58147 03:45 PM, 09 Jul 2018
    а где можно список изменений глянуть?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @xammett #58149 03:49 PM, 09 Jul 2018
    спасибо
  • Неверно.
  • @milovidov_an #58151 03:53 PM, 09 Jul 2018
    yandex/ClickHouse

    ClickHouse is a free analytic DBMS for big data.

  • https://t.me/clickhouse_ru
    @dmitrikr ↶ Reply to #58151 #58152 03:57 PM, 09 Jul 2018
    так гораздо больше :) но удаления пока нет?
  • @milovidov_an #58153 04:05 PM, 09 Jul 2018
    ALTER DELETE есть и в предыдущем релизе.
  • https://t.me/clickhouse_ru
    @dmitrikr ↶ Reply to #58153 #58154 04:47 PM, 09 Jul 2018
    👍
  • @pookieShmukie #58155 06:58 PM, 09 Jul 2018
    @milovidov_an а почему alter delete только для реплицируемых таблиц? В чем особенность?
  • Никакой особенности. Сейчас доделывается для нереплицируемых тоже.
  • @pookieShmukie #58157 07:00 PM, 09 Jul 2018
    Просто мне казалось, что в обратном порядке делать проще :) Или вы начали POC делать на примере посложнее обычной таблички на одном сервере?
  • Вся сложность сосредоточена в ReplicatedMergeTree. Было бы бессмысленно делать для MergeTree будучи неуверенным, что на ReplicatedMergeTree выбранный подход будет хорошо работать.

    К тому же, нам самим на практике нужно именно для ReplicatedMergeTree (обычные MergeTree почти не используются в продакшене).
  • Логично :) Мы оооооочень сильно ждали эту штуку! Спасибо большое! Пошел играться :)
  • Сейчас ещё ожидаются некоторые доработки. Например, в последнем релизе, насколько я знаю, ещё нет отсечения не затронутых партиций. CC @ztlpn
  • @pookieShmukie #58161 07:06 PM, 09 Jul 2018
    У нас просто есть блок работ в котором есть вилка из мигратора данных из партиций с устаревшими данными в новые и потом удаление старых партиций, либо использование функционала удаления. Мы пока доберемся с этим блоком в работу, глядишь вы допилите полноценную поддержку!
  • @pookieShmukie #58162 07:06 PM, 09 Jul 2018
    Мы планируем активно этой штукой пользоваться
  • Отлично, мы тоже :)
  • @70532431 #58164 07:14 PM, 09 Jul 2018
    Кто-нибудь пробовал ограничивать память для пользователя clickhouse в security/limits.conf, чтобы избежать ситуации возможных ООМ-ов? Работало/работает ли?
  • https://t.me/clickhouse_ru
    @alexey_laptev #58165 08:43 PM, 09 Jul 2018
    всем привет, запрос возвращает значения колонки

    1
    2
    3
    4

    можно сделать так, чтобы вернулась одной строкой: 1,2,3,4?

    тк нужен по сути хеш последовательности
  • @111876410 #58166 09:05 PM, 09 Jul 2018
    Joined.
  • SELECT groupArray(number)
    FROM numbers(1, 4)

    ┌─groupArray(number)─┐
    │ [1,2,3,4] │
    └────────────────────┘
  • https://t.me/clickhouse_ru
    @alexey_laptev #58168 09:24 PM, 09 Jul 2018
    то что надо, спс
  • 10 July 2018 (119 messages)
  • @238773844 #58169 03:42 AM, 10 Jul 2018
    /clickhouse
  • https://t.me/clickhouse_ru
    Всем привет. Подскажите пожалуйста. У меня есть данные в json по типу
    {"number":1,"string":1}
    {"string":9,"number":2}.
    Мне нужно их разложить в следующем виде:
    number,1
    string,1
    string,9
    number,2
    Искал в доке функции для работы с json или регулярками, но ничего подходящего не нашел.
  • @238773844 #58178 06:16 AM, 10 Jul 2018
    как в селекте из distributed таблы принудительно подставить значение из словаря только когда данные попадут на локальный сервер? только create table as select … ? потом select getDict,* из таблицы?
  • https://t.me/clickhouse_ru
    @Krashuevina #58179 07:14 AM, 10 Jul 2018
    /clickhouse
  • @konstantin_mitjurin #58181 07:51 AM, 10 Jul 2018
    Добрый день!
  • @konstantin_mitjurin #58182 07:51 AM, 10 Jul 2018
    vast_tracking.Distributed.DirectoryMonitor: Code: 209, e.displayText() = DB::NetException: Timeout exceeded while reading from socket (192.168.0.12:9000)
  • @konstantin_mitjurin #58183 07:52 AM, 10 Jul 2018
    имею такую ошибку на кластере
  • @konstantin_mitjurin #58184 07:52 AM, 10 Jul 2018
    на хосте 192,168,0,12 - все в порядке
  • @konstantin_mitjurin #58185 07:52 AM, 10 Jul 2018
    консоль КХ работает
  • @konstantin_mitjurin #58186 07:53 AM, 10 Jul 2018
    хост виден и пингуется:

    ING 192.168.0.12 (192.168.0.12) 56(84) bytes of data.
    64 bytes from 192.168.0.12: icmp_seq=1 ttl=64 time=12.2 ms
    64 bytes from 192.168.0.12: icmp_seq=2 ttl=64 time=12.0 ms
  • https://t.me/clickhouse_ru
    файрволлом лишнего не прикрыто? В частности, коннект с/на соседний сервер. И на соседнем сервере.
  • @konstantin_mitjurin #58188 07:53 AM, 10 Jul 2018
    нет, внутри сети серверов нет ничего такого
  • @konstantin_mitjurin #58189 07:54 AM, 10 Jul 2018
    вот даже попробовал приконектить консоль к тому серверу:

    @s1:/var/log/clickhouse-server# clickhouse-client —host 192.168.0.12 —multiline
    ClickHouse client version 1.1.54164.
    Connecting to 192.168.0.12:9000.
    Connected to ClickHouse server version 1.1.54164.

    :)
  • @konstantin_mitjurin #58190 07:55 AM, 10 Jul 2018
    однако, дистрибуция данных сбоит...
  • https://t.me/clickhouse_ru
    @proller #58191 07:55 AM, 10 Jul 2018
    Ошибка единичная или постоянная ?
  • @konstantin_mitjurin #58192 07:56 AM, 10 Jul 2018
    я сейчас перезапустил ту ноду
  • @konstantin_mitjurin #58193 07:56 AM, 10 Jul 2018
    посомтрю
  • @konstantin_mitjurin #58194 07:57 AM, 10 Jul 2018
    а так да, лог весь усупан
  • @konstantin_mitjurin #58195 07:59 AM, 10 Jul 2018
    вроде рестарт ноды помог
  • https://t.me/clickhouse_ru
    @vse_chetk0 #58196 08:10 AM, 10 Jul 2018
    Кто нибудь подскажет почему так рапарсилась CSV строка, проблема возникает именно с полем типа DateTime когда оно имеет пустрое значение
  • https://t.me/clickhouse_ru
    @stufently #58197 08:12 AM, 10 Jul 2018
    но она у вас наверно первичныйключ, и не должно быть пустым?
  • @70532431 ↶ Reply to #58196 #58198 08:24 AM, 10 Jul 2018
    DateTime вставляете как epoch без скобочек по бокам?
  • https://t.me/clickhouse_ru
    @Imaskar #58199 08:26 AM, 10 Jul 2018
    по-моему проблема уже в 33 строке, даже раньше
  • https://t.me/clickhouse_ru
    @Imaskar #58200 08:27 AM, 10 Jul 2018
    потому что он String (не наллабл) распарсил как эмпти, а потом строку из тучи запятых выдал
  • @70532431 ↶ Reply to #58200 #58201 08:39 AM, 10 Jul 2018
    Я на то же намекаю.
  • https://t.me/clickhouse_ru
    @Imaskar #58202 08:40 AM, 10 Jul 2018
    так начала не видно. там колонка Nullable(DateTime), в которую пришёл null? а если поставить кавычки двойные?
  • Встроенных (и быстрых) способов итерации по ключам JSON в кликхаус, увы, нет. Похожую задачу решал примерно регулярными выражениями, примерно так:
    WITH
    extractAll(json_field, '[{,]"([^"]*)":') as json_keys,
    extractAll(json_field, ':(".*?")[,}]') as json_values
    SELECT ...Но по понятным причинам с регулярными выражениями это все мало стабильно, и только один очень жестко определенный формат JSON может прочитать, притом довольно медленно.
  • https://t.me/clickhouse_ru
    нет, это не первичный ключ
  • https://t.me/clickhouse_ru
    проблема именно в строке 33, про нее и спрашиваю
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #58206 08:49 AM, 10 Jul 2018
    Запустил команду удаления на реплицированой таблице, в system.mutations появилась команда, parts_to_do упало до 1568 и дальше не идёт. В логе КХ ничего криминального нет. Что может быть не так? Где-то ещё можно посмотреть что с операцией удаления?
  • https://t.me/clickhouse_ru
    вставка работает корректно, если в поля с типом DiteTime вставить дату, с кавычками не работает
  • https://t.me/clickhouse_ru
    @vse_chetk0 #58208 09:03 AM, 10 Jul 2018
    Простой пример при котором вставка пустой даты не работает, может кто ни будуть подсказать почему так происходит
    CREATE TABLE apps (
    date Date,
    name Nullable(String),
    birthday DateTime
    ) ENGINE MergeTree PARTITION BY (date) ORDER BY (date);
    INSERT INTO apps FORMAT CSV 2018-01-01,,;
  • https://t.me/clickhouse_ru
    @Imaskar ↶ Reply to #58208 #58209 09:04 AM, 10 Jul 2018
    в этом примере DateTime не указано как nullable
  • https://t.me/clickhouse_ru
    это не влияет, в доке написанно что при отсутсвтие значение у поля DateTime будет использованно дефолтное значание
  • https://t.me/clickhouse_ru
    @Imaskar #58211 09:06 AM, 10 Jul 2018
    так в таблице не задано дефолтное
  • https://t.me/clickhouse_ru
    @Imaskar #58212 09:06 AM, 10 Jul 2018
    и тут в csv строке именно null. некоторое время назад проверял, и кликхаус не заменял null на дефолтное
  • https://t.me/clickhouse_ru
    @Imaskar #58213 09:07 AM, 10 Jul 2018
    INSERT INTO apps FORMAT CSV 2018-01-01,; а вот так сработает?
  • https://t.me/clickhouse_ru
    документация говорит следующее

    Если выражение для значения по умолчанию не указано, то в качестве значений по умолчанию будут использоваться нули для чисел, пустые строки для строк, пустые массивы для массивов, а также 0000-00-00 для дат и 0000-00-00 00:00:00 для дат с временем. NULL-ы не поддерживаются.
  • https://t.me/clickhouse_ru
    @Imaskar #58215 09:08 AM, 10 Jul 2018
    думаю, проблема именно с парсингом, а не вставкой в таблицу. да, таблица поддерживает. но парсинг строится на описании таблицы и работает дальше по нему.
  • https://t.me/clickhouse_ru
    насколько я помню, что бы указать null можно сделать вот так
    INSERT INTO apps FORMAT CSV 2018-01-01,,\N;
  • https://t.me/clickhouse_ru
    @vse_chetk0 #58217 09:09 AM, 10 Jul 2018
    и это рабочая схема, но мне не подходит
  • https://t.me/clickhouse_ru
    проьлема точно в парсинге, я так понимаю что ожидается именно дата и ни чего другого
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #58219 09:57 AM, 10 Jul 2018
    Всем привет. Подскажите, а можно как-то ускорить запрос OPTIMIZE TABLE table_name PARTITION $date FINAL
    Потому-что когда происходит эта операция постоянно валятся <Error> ServerErrorHandler: Poco::Exception. Code: 1000, e.code() = 104, e.displayText() = Connection reset by peer, e.what() = Connection reset by peer
  • https://t.me/clickhouse_ru
    @akisin #58220 10:55 AM, 10 Jul 2018
    Коллеги, добрый день! Есть кластер из 3 шардов по 2 реплики + еще одна нода, на которой есть распределенная таблица смотрящая на эти шарды. Подскажите имеет ли смысл настраивать zookeeper на машине с Distributed таблицей? Кроме нее ничего на ноде нет. И как настроить репликацию на уровне шардов,а не только реплик?
  • https://t.me/clickhouse_ru
    @Shegloff ↶ Reply to #58219 #58221 11:03 AM, 10 Jul 2018
    этот запрос вряд ли получится ускорить, при FINAL он же в любом случае будет все данные в партиции шерстить и пытаться схлпнуть. Диски побыстрее поставить...
  • https://t.me/clickhouse_ru
    @Shegloff ↶ Reply to #58220 #58222 11:05 AM, 10 Jul 2018
    Для Distributed не нужен zookeeper. А что значит репликация на уровне шардов?
  • @vstakhov #58223 11:06 AM, 10 Jul 2018
    а снимите с ручника: нужно показать значения вида count(x where some codition), count(y where another condition) - как лучше это сделать? union all делает не то, что я хочу
  • https://t.me/clickhouse_ru
    @valyala ↶ Reply to #58223 #58224 11:07 AM, 10 Jul 2018
    см. countIf
  • @vstakhov #58226 11:13 AM, 10 Jul 2018
    нашел, спасибо
  • @nukker7 #58227 11:42 AM, 10 Jul 2018
    Привет! Пытаюсь вставить данные в TSV-формате в ReplicatedMergeTree через консольный клиент, получаю отлуп
    Code: 32. DB::Exception: Attempt to read after eof
    В логах ошибок ничего нет, в обычном логе есть запись о том, что запрос таки был. Сервер версии 1.1.54327, клиент 1.1.54390
    В файле с данными вроде ничего криминального нет. При попытке вставить кусочек данных, откусив его через например head, одни и те же данные то вставляются, а то нет с аналогичной ошибкой. В чем может быть косяк?
  • @ztlpn ↶ Reply to #58206 #58228 12:06 PM, 10 Jul 2018
    Надо посмотреть part_mutations_in_queue в таблице system.replicas. Если ненулевое, то процесс идёт. Ещё может быть назначено много мержей (столбец merges_in_queue) и они мешают.
  • https://t.me/clickhouse_ru
    @akisin ↶ Reply to #58222 #58229 12:14 PM, 10 Jul 2018
    Все вопрос отпал, спасибо
  • https://t.me/clickhouse_ru
    Можете уточнить как эти параметры влияют. Я их меняю, но не вижу разницы, в логе по прежнему сыпится
    ReplicatedMergeTreeQueue): Not executing log entry for part 20180119_20180122_0_6_1 because source parts size (43.08 MiB) is greater than the current maximum (4.45 MiB)
    И команду удаления не проходят
  • https://t.me/clickhouse_ru
    @vse_chetk0 #58231 12:44 PM, 10 Jul 2018
    коллеги а как то можно дать доступ только к одной БД в КХ ?
  • https://t.me/clickhouse_ru
    <allow_databases>
    <database>telegraf</database>
    </allow_databases>
  • https://t.me/clickhouse_ru
    Правда, system всё равно доступна, как и список БД.
  • https://t.me/clickhouse_ru
    @leidruid #58234 12:58 PM, 10 Jul 2018
    ПОдскажите, обязательно ли в запросе insert into ... select ... результат select должен поместиться в memory limit ?
  • https://t.me/clickhouse_ru
    спасибо
  • https://t.me/clickhouse_ru
    а какой тип у последнего столбца ?
  • https://t.me/clickhouse_ru
    @leidruid ↶ Reply to #58234 #58237 01:01 PM, 10 Jul 2018
    И произойдет ли вставка, если запрос сфэйлится по памяти?
  • Непарные кавычки например. Т.е. видит открывающую кавычку и в попытках найти закрывающую "доезжает" до конца файла.
  • @nukker7 ↶ Reply to #58236 #58239 01:15 PM, 10 Jul 2018
    String
  • @nukker7 ↶ Reply to #58238 #58240 01:15 PM, 10 Jul 2018
    Спасибо, попытаюсь это как-то проверить. Вроде старался экранировать.
  • @konstantin_mitjurin #58241 01:20 PM, 10 Jul 2018
    Добрый день! Такой вопрос, можно ли внутри кластера подключать таблицы между нодами, если они не реплицируемые?
  • @konstantin_mitjurin #58242 01:21 PM, 10 Jul 2018
    допустим, у меня есть нода-Б на ней уникальная таблица, я хочу ее использовать на ноде А
  • https://t.me/clickhouse_ru
    @stufently #58243 01:21 PM, 10 Jul 2018
    ну скопируйте данные ее , но вообще это что то странное
  • @konstantin_mitjurin #58244 01:22 PM, 10 Jul 2018
    не-не
  • @konstantin_mitjurin #58245 01:22 PM, 10 Jul 2018
    копировать нет
  • @konstantin_mitjurin #58246 01:22 PM, 10 Jul 2018
    надо иметь к ней доступ
  • Трехстрочник на питоне, которым помогал кликхаусу понять непонятные ему CSV разновидности: https://gist.github.com/filimonov/57e270104a3e48d7fd6f70a3d4ec2b95
  • Спасибо, правильно я понял, что используется так: select .... from remote(....);???
  • Ну ограничение на память касается любого селекта, иначе получите Exception. Т.е. если например будете делать какую-то сложную агрегацию и память закончится так и не успев подготовить результат - то получите исключение и ничего не вставится. Но если это относительно простой селект (типа простая фильтрация исходной таблицы) - то он будет его выполнять в поточном режиме, типа "немного данных прочитал - немного вставил, немного прочитал - немного вставил" и т.д. Для этого памяти нужно немного и всем данным в память помещаться совсем не обязательно.
  • Правильно. Примеры можете в тестах найти: https://github.com/yandex/ClickHouse/search?l=SQL&q=remote
    yandex/ClickHouse

    ClickHouse is a free analytic DBMS for big data.

  • Спасибо!
  • @lnpj12 #58253 01:42 PM, 10 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @leidruid ↶ Reply to #58250 #58254 01:44 PM, 10 Jul 2018
    Я пробовал с простой фильтрацией по одному индексному и одному не входящему в индекс полю.
    Упало по памяти
  • https://t.me/clickhouse_ru
    @leidruid #58255 01:44 PM, 10 Jul 2018
    Я же тоже помню, что память не должна сильно использоваться
  • @mfilimonov #58256 01:46 PM, 10 Jul 2018
    Может инсерт был в Temporary / Memory таблицу ?
  • @mfilimonov #58257 01:47 PM, 10 Jul 2018
    Или селект с сортировкой?
  • https://t.me/clickhouse_ru
    @QuietFelix #58258 01:54 PM, 10 Jul 2018
    А в какую сторону начинать копать, если периодически натыкаемся на "Another quorum insert has been already started"? При этом не системно, выявить закономерность не получается пока.
  • @lnpj12 #58259 01:58 PM, 10 Jul 2018
    Привет всем.
    пытаюсь перемножить попарно элементы 2х массивов, пока ничего другого не придумал:
    arrayMap(i -> amount[i + 1] * price[i + 1], range(length(amount)))

    Можно как то это по красивше это сделать? и я так понимаю ничего для работы с индексами массивов в лямбдах нет?
  • https://t.me/clickhouse_ru
    И я правильно догадываюсь, что это может быть следствием попытки записать что-то до того, как подтвердился кворум предыдущей записи?
  • Чуть корректнее ваш вариант:
    arrayMap(i -> amount[i] * price[i], arrayEnumerate(amount))Вариант "в лоб"
    arrayMap( (a,p) -> a*p, amount, price )
  • @mfilimonov #58262 02:11 PM, 10 Jul 2018
    arrayEnumerate - как раз для работы с индексами массивов.
  • https://t.me/clickhouse_ru
    @leidruid ↶ Reply to #58256 #58263 02:11 PM, 10 Jul 2018
    неа, обычный, из MergeTree в ReplicatedMergeTree
  • https://t.me/clickhouse_ru
    @nordluf ↶ Reply to #58261 #58264 02:18 PM, 10 Jul 2018
    Хм, а что лучше? Мап выглядит красивее, почему вы его выделили как "в лоб"?
  • В смысле без ненужных (в этом случае) развлечений с индексами массивов. Вот просто берем 2 массива и поэлементно перемножаем. В лоб и без посредников в виде индексов массивов :)
  • @lnpj12 ↶ Reply to #58261 #58266 02:20 PM, 10 Jul 2018
    благодарствую
  • https://t.me/clickhouse_ru
    @nordluf ↶ Reply to #58265 #58267 02:20 PM, 10 Jul 2018
    Спасибо за разьяснение!
  • Похоже на то.
    https://github.com/yandex/ClickHouse/blob/d5f8e4a1a511fd0f55c9db3674056b5878e0e0d3/dbms/src/Storages/MergeTree/ReplicatedMergeTreeBlockOutputStream.cpp#L259

    @milovidov_an действительно нельзя >1 кворумного инсерта одновременно?
    yandex/ClickHouse

    ClickHouse is a free analytic DBMS for big data.

  • https://t.me/clickhouse_ru
    @mary_fischer #58269 02:30 PM, 10 Jul 2018
    Joined.
  • @60242961 #58270 02:35 PM, 10 Jul 2018
    всем привет, а у кликхауса есть https интерфейс?
  • https://t.me/clickhouse_ru
    @orantius #58271 02:36 PM, 10 Jul 2018
    localhost:8123
  • https://t.me/clickhouse_ru
    @orantius #58272 02:36 PM, 10 Jul 2018
    а, https
  • https://t.me/clickhouse_ru
    @orantius #58273 02:36 PM, 10 Jul 2018
    тогда не думаю.
  • https://t.me/clickhouse_ru
    Но при этом в доке: As there is no quorum acknowledgment of inserts, just-inserted data might be lost if one node fails.
    Вроде бы понятно, но ошибка выше очень смахивает на недо-ack.
  • @60242961 #58275 02:36 PM, 10 Jul 2018
    в конфиге есть такое

    <!-- For HTTPS and SSL over native protocol. -->
    <!--
    <https_port>8443</https_port>
    <tcp_port_secure>9440</tcp_port_secure>
    -->

    @orantius
  • Есть. Нужно раскомментировать <https_port> в конфиге и настроить openSSL: https://clickhouse.yandex/docs/en/operations/server_settings/settings/#server_settings-openSSL

    Как вариант - есть ещё chproxy: https://github.com/Vertamedia/chproxy
  • @60242961 ↶ Reply to #58276 #58277 02:41 PM, 10 Jul 2018
    понял, спасибо
  • https://t.me/clickhouse_ru
    Добрый день. Удалось ли решить эту проблему? Возможно ли достать вложенные атрибуты в описании словаря?
  • @mchernyakov #58280 04:06 PM, 10 Jul 2018
    Joined.
  • @YaroslavMakarov #58281 05:02 PM, 10 Jul 2018
    Делаю выборку из таблицы, в условии необходимо указать имя и диапазон дат. Первичный ключ состоит из имени, диапазона дат и cityHash. Партиции по суткам. Как я понял для того, чтобы эффективнее найти можно написать условие prewhere log_date='нужный день'. А как быть с условиями остальными? Куда их правильнее поместить в where или prewhere? В документации сказано не указывать в prewhere индексы.
  • @YaroslavMakarov #58282 05:03 PM, 10 Jul 2018
    диапазон времени*
  • @VitalVas #58283 05:23 PM, 10 Jul 2018
    Можна ли запустить зукипер на одной ноде?
  • https://t.me/clickhouse_ru
    @leidruid ↶ Reply to #58283 #58284 05:31 PM, 10 Jul 2018
    можно
  • https://t.me/clickhouse_ru
    Покажите запрос создания таблицы и сам запрос
  • https://t.me/clickhouse_ru
    @Shegloff ↶ Reply to #58281 #58286 05:35 PM, 10 Jul 2018
    Если я правильно все понял, вам вообще не нужно юзать prewhere, все поля из условий есть в индексе, prewhere отсекает данные, по которым нет индекса.
  • https://t.me/clickhouse_ru
    @Shegloff #58287 05:38 PM, 10 Jul 2018
    Например, вы дополнительно указываете type=2 в prewhere, которого нет в ключе, и prewhere просто отсекает другие type, а потом по type=2 уже начинает работать where
  • https://t.me/clickhouse_ru
    @Shegloff #58288 05:39 PM, 10 Jul 2018
    Если не ошибаюсь, поправьте если что
  • @YaroslavMakarov #58289 05:46 PM, 10 Jul 2018
    спасибо, про это и хотел узнать, что если поля указаны в первичном ключе, то есть ли смысл их в prewhere писать
  • @e45456 #58290 05:47 PM, 10 Jul 2018
    Есть поле с массивом id-шников. Хочу получить массив наименований с использованием внешнего словаря.
    Т.е. вызвать dictGetString для каждого элемента в массиве.
    Можно это как то сделать?
  • @ztlpn ↶ Reply to #58290 #58291 05:55 PM, 10 Jul 2018
    SELECT arrayMap(key -> dictGetString('dict', 'attr', key), arr) - как-то так
  • https://t.me/clickhouse_ru
    @tairesh #58292 05:56 PM, 10 Jul 2018
    Какой ужас
  • https://t.me/clickhouse_ru
    @tairesh #58293 05:57 PM, 10 Jul 2018
    Верните мне SQL из 2007
  • https://t.me/clickhouse_ru
    @QuietFelix #58294 06:02 PM, 10 Jul 2018
    Почему 2007? Не было ж стандартов этого года.
  • https://t.me/clickhouse_ru
    @Imaskar #58295 06:10 PM, 10 Jul 2018
    зато сентябрь горел
  • https://t.me/clickhouse_ru
    @fahreeve #58296 06:56 PM, 10 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    create table test.test(a UInt64,b UInt64) Engine=MergeTree partition by a order by tuple ();
    insert into test.test select round(number/1000000), throwIf(number=8000000) from numbers(15000000);
    select count() from test.test
    7340032

    drop table test.test;
    create table test.test(a UInt64,b UInt64) Engine=MergeTree partition by a order by tuple ();
    set max_block_size = 15000000;
    set max_insert_block_size = 15000000;
    insert into test.test select round(number/1000000), throwIf(number=8000000) from numbers(15000000);
    select count() from test.test
    0 rows in set.

    правда max_block_size наоборот, увеличивает расход памяти.
  • 11 July 2018 (132 messages)
  • @e45456 ↶ Reply to #58291 #58299 01:28 AM, 11 Jul 2018
    Спасибо вам
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #58230 #58300 04:07 AM, 11 Jul 2018
    На самом деле эти параметры позволяют чуть меньше ушатывать сервер при insert select, обычно этого достаточно. Эта запись в логе означает что, условно, сейчас работают несколько тредов на мерж которые суммарно превышают max_bytes_to_merge_at_min_space_in_pool, там немного сложнее, но примерно так. Как только будут ресурсы сервер эти куски помержит. Если критично, можно копаться дальше, если нет то можно понизить уровень логирования с debug на какой-нибудь более приемлемый.
  • https://t.me/clickhouse_ru
    @kshvakov #58301 04:19 AM, 11 Jul 2018
    Т.е. они влияют косвено
  • https://t.me/clickhouse_ru
    Таких записей в логе много, и судя по всему из-за этого у меня мутация зависает примерно посередине. Вот и хочу разобраться как делать INSERT INTO чтобы таких больших блоков не появлялось
  • https://t.me/clickhouse_ru
    CREATE TABLE log.AggregateEventsLog (
    SysRowDate Date,
    SysRowKey FixedString(36),
    EntityID FixedString(36)
    ...
    ) ENGINE = Distributed(central, 'log', 'EventsLog')

    CREATE TABLE log.EventsLog (
    SysRowDate Date,
    SysRowKey FixedString(36),
    EntityID FixedString(36),
    ...
    ) ENGINE = ReplicatedMergeTree(
    '/clickhouse/tables/{shard}/EventsLog',
    '{replica}',
    SysRowDate,
    (EntityID, SysRowKey),
    8192
    )
  • https://t.me/clickhouse_ru
    @fahreeve #58304 07:05 AM, 11 Jul 2018
    Товарищи, нигде в документации не нашел информацию о том могут ли в репликами быть разные версии кликхауса? Например такой кейс возможен при обновлении
  • https://t.me/clickhouse_ru
    @stufently #58305 07:12 AM, 11 Jul 2018
    вроде в докее было написано что не могут
  • https://t.me/clickhouse_ru
    @stufently #58306 07:12 AM, 11 Jul 2018
    насколько помню раньше точно не могли
  • https://t.me/clickhouse_ru
    @stufently #58307 07:12 AM, 11 Jul 2018
    и это на мой взгляд правильно
  • Могуг, разные версии КХ совместимы на уровне протокола. В некоторых (очень редких) случаях могут вноситься изменения, нарушающие эту совместимость, информация об этом и инструкции обновления при этом будут появляться в changelog.
  • https://t.me/clickhouse_ru
    @Imaskar #58309 07:13 AM, 11 Jul 2018
    а как обновлять кластер тогда? весь разом? это было бы странно
  • https://t.me/clickhouse_ru
    @stufently #58310 07:13 AM, 11 Jul 2018
    обновляем по очереди проблем нет
  • Алексей говорил, что в яндексе тоже реплики обновляют по очереди.
  • https://t.me/clickhouse_ru
    @stufently #58312 07:16 AM, 11 Jul 2018
    ну реально даже если репликация не работаеет на время обновления данные подтянутся как только оно закончится
  • https://t.me/clickhouse_ru
    @stufently #58313 07:16 AM, 11 Jul 2018
    а это реально быстрый процесс
  • Там вопрос только в том как правильно "инициализировать" данные в матвью. Можно создать матвью без populate, сохранив момент создания матвью (все данные "новее" будут автоматически приезжать в матвью) а потом доинициализировать старшие данные с помощью INSERT ... SELECT ... WHERE timestamp < mat_view_creation_ts.
  • https://t.me/clickhouse_ru
    @akisin #58315 07:21 AM, 11 Jul 2018
    Всем привет, может сталкивался кто-то, добавлял табличку ReplicatedMergeTree на одной из нод, таббикс повис, а после рестарта стали валиться ошибки вида

    2018.07.11 09:36:57.253583 [ 1 ] <Warning> ZooKeeper: Error on attempt 0: connection loss. Retry
    2018.07.11 09:37:07.254277 [ 1 ] <Warning> ZooKeeper: Error on attempt 1: connection loss. Retry
    2018.07.11 09:37:17.257471 [ 1 ] <Warning> ZooKeeper: Error on attempt 2: connection loss. Retry
    2018.07.11 09:37:17.259287 [ 1 ] <Error> Application: zkutil::KeeperException: connection loss, path: /clickhouse

    После это CH падает.
  • https://t.me/clickhouse_ru
    @bsideup ↶ Reply to #58314 #58316 07:22 AM, 11 Jul 2018
    Блин, опяь хаки :(
    Было бы круто если б можно было параметром взять лок на исходную таблицу
  • https://t.me/clickhouse_ru
    на всех нодах падает? судя по всему что то сильно сломалось в зукипере, проверьте есть ли там пути кх
  • https://t.me/clickhouse_ru
    @akisin ↶ Reply to #58317 #58318 07:24 AM, 11 Jul 2018
    Другие не трогал пока, одну ноду мучаю
  • https://t.me/clickhouse_ru
    @stufently #58319 07:27 AM, 11 Jul 2018
    ну проверьте с нее коннект до зукипера через телнет
  • Не знаю какой там юзкейс у вас, но если представить себе что таблица имеет размер в несколько терабайт и данные в неё валятся со скоростью сотен тысяч строк в секунду, то идея "лока на запись" в эту таблицу пока инициализируется матвью (а оно при большой исходной таблице может часами инициализироваться) - выглядит так себе. Это можно сделать без локов, но задача не очень простая. Workaround существует и довольно тривиален, поэтому я так понимаю эта задача не приоритетна. Если вы считаете иначе - код Кликхауса открыт, пулл-реквесты принимаются :)
  • https://t.me/clickhouse_ru
    @Imaskar #58321 07:34 AM, 11 Jul 2018
    достаточно ведь лочить мерджи, а не запись в таблицу. тогда можно будет точно знать, из каких партов осталось докинуть данные
  • https://t.me/clickhouse_ru
    @Imaskar #58322 07:34 AM, 11 Jul 2018
    мерджи и создание новых партов*
    всё валить в один новый парт. вью проинициализировать из старых + текущих. потом снять лок на парты. всё.
  • Отличная идея. Можем расчитывать на пулл-реквест? :)
  • https://t.me/clickhouse_ru
    @bsideup ↶ Reply to #58320 #58324 07:35 AM, 11 Jul 2018
    У нас как раз юзкейс где можно остановить запись т.к. стримим из кафки, а вот каждому аналитику объяснять как делать заполнение после создания вьюшки - это боль
  • https://t.me/clickhouse_ru
    @Imaskar ↶ Reply to #58323 #58325 07:38 AM, 11 Jul 2018
    на плюсах не пишу(
    хотя возможно стоит начать
  • https://t.me/clickhouse_ru
    @bsideup #58326 07:38 AM, 11 Jul 2018
    Аналогичная проблема с крестами :D
  • "Каждому аналитику". Сорри, но если их много - то правильно ли было бы если бы все они могли менять структуру базы, выполняя DDL, на произвольное количество времени останавливая запись (для всех остальных)?
  • @mfilimonov #58328 07:42 AM, 11 Jul 2018
    Если остановка записи допустима - то значит допустимо и отсутствие самых свежих данных в матвью. Отсюда вопрос - правда ли в этом кейсе необходим матвью?
  • https://t.me/clickhouse_ru
    @bsideup #58329 07:43 AM, 11 Jul 2018
    Угу, на нашем объёме это минуты, плюс они не меняют структуру, они заводят под себя вьюшки, этакий self service
  • https://t.me/clickhouse_ru
    @bsideup #58330 07:45 AM, 11 Jul 2018
    Eventual consistency здесь ок, а вот матвьюшки очень нужны т.к. исходный поток - события юзера, где потеря одного события может полностью исковеркать результат :(
  • https://t.me/clickhouse_ru
    @fahreeve #58331 07:45 AM, 11 Jul 2018
    Господа, а кликхаус из коробки умеет мониторить и показывать состояние кластера?
  • https://t.me/clickhouse_ru
    @leidruid ↶ Reply to #58331 #58332 07:46 AM, 11 Jul 2018
    смотря что вы имеете в виду
  • https://t.me/clickhouse_ru
    @leidruid #58333 07:46 AM, 11 Jul 2018
    На каждом сервере есть таблицы в system
  • https://t.me/clickhouse_ru
    @fahreeve ↶ Reply to #58332 #58334 07:46 AM, 11 Jul 2018
    Ну задетектить что нода упала
  • https://t.me/clickhouse_ru
    @leidruid #58335 07:47 AM, 11 Jul 2018
    Мы это делаем другим способом
  • https://t.me/clickhouse_ru
    @leidruid #58336 07:47 AM, 11 Jul 2018
    zabbix например
  • https://t.me/clickhouse_ru
    @leidruid #58337 07:47 AM, 11 Jul 2018
    Он ещё и в нотификацию умеет
  • У нас аналитики пишут запросы, а view / matview добавляют программисты. Если какой-то запрос аналитиков оказывается настолько замечательным что захотим его видеть в realtime - тогда и создается mat view. У матвью на самом деле есть немало ограничений, и поэтому далеко не из каждого запроса аналитиков можно сделать matview. Объяснять им какие есть ограничения и что можно считать в realtime, а что нет - в общем вещь не тривиальная. Если ваши аналитики настолько опытны в кликхаус, что понимают ограничения матвью, то и workaround с "ручным" populate для mat view не должен составлять проблемы.
  • Используйте внешние инструменты - nagios / zabbix / Pandora. Для метрик - например Grafana. См.
    https://www.altinity.com/blog/2018/4/20/clickhouse-monitoring-with-graphite
    https://groups.google.com/forum/#!topic/clickhouse/iwIWWPwneqM
    ClickHouse Monitoring with Graphite

    Monitoring is an important part of operating any software in production. The proper monitoring solution needs to store metrics somewhere as well as provide visualization capabilities. ClickHouse does not have such a tool packaged, but there are several 3rd-party monitoring solutions that can be used. In this article, we will describe how to configure Graphite for monitoring ClickHouse metrics.

  • @mfilimonov #58340 08:11 AM, 11 Jul 2018
    Это на самом деле часть философии UNIX - каждый инструмент должен делать одну вещь, но должен делать её хорошо. Кликхаус - это база данных для аналитики. И делает это хорошо :)
  • https://t.me/clickhouse_ru
    @Alexevna #58341 08:11 AM, 11 Jul 2018
    Joined.
  • @mfilimonov #58342 08:13 AM, 11 Jul 2018
    А для мониторинга есть другие инструменты :)
  • @YaroslavMakarov #58343 10:09 AM, 11 Jul 2018
    возможно ли для типа float64 в функции toString, например, указать нужное количество цифр после запятой?
  • https://t.me/clickhouse_ru
    @sharthZ23 #58344 10:28 AM, 11 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    можно так
    select toString(round(1234.5678, 2))
  • @YaroslavMakarov #58346 10:32 AM, 11 Jul 2018
    спасибо, но мне нужно нулями заполнить недостающие
  • @Olegmygryn #58347 10:41 AM, 11 Jul 2018
    Поделитесь, пожалуйста, Вашим опытом как правильно поддерживать масштабируемость и расширяемость ClickHouse c точки зрения DevOps.
    Мы переезжаем на новое железо - сейчас в CH 4 ноды (2 реплики 2 шарда + куча намешанных решений, большая разрозненность).

    Есть желание держать гомогенный кластер: все таблицы distributed, две реплики. Насколько это хорошая идея?
    Добавление нового железа в кластер должно быть относительно простым (возможно c апдейтом weights).

    Кластер может расти до десятков нод, мой вопрос: как правильно организовать фреймворк конфигов для реплик/шардов - или в любом случае это ручные изменения в .xml ?
  • @mfilimonov #58348 11:08 AM, 11 Jul 2018
    С ручными изменениями - уже на двух серверах начинается боль - типа тут поправили, а там забыли. Почти все можно автоматизровать с помощью соотвествующих инструментов типа puppet / chef / ansible / salt / cfengine
  • https://t.me/clickhouse_ru
    @stufently #58349 11:10 AM, 11 Jul 2018
    Мы ансиблом рулит, он генерит конфиги кх
  • https://t.me/clickhouse_ru
    @rheinx ↶ Reply to #58349 #58350 11:46 AM, 11 Jul 2018
    Самописное что-то?
  • https://t.me/clickhouse_ru
    @stufently #58351 11:46 AM, 11 Jul 2018
    нет ансибл не самописный
  • https://t.me/clickhouse_ru
    @rheinx ↶ Reply to #58351 #58352 11:47 AM, 11 Jul 2018
    я имею в виду модули конечно же)
  • https://t.me/clickhouse_ru
    @stufently #58353 11:48 AM, 11 Jul 2018
    вроде не использую
  • https://t.me/clickhouse_ru
    @stufently #58354 11:48 AM, 11 Jul 2018
    там же конфиг простой
  • https://t.me/clickhouse_ru
    @stufently #58355 11:48 AM, 11 Jul 2018
    пару циклов и готово
  • https://t.me/clickhouse_ru
    @stufently #58356 11:48 AM, 11 Jul 2018
    ну и в целом у нас по себе кх простой
  • https://t.me/clickhouse_ru
    @alexunderside #58357 11:50 AM, 11 Jul 2018
    ,
  • https://t.me/clickhouse_ru
    @VadimPlh #58358 12:16 PM, 11 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @Vasyaabr ↶ Reply to #58268 #58359 12:21 PM, 11 Jul 2018
    Увы, нельзя. И это засада, если всё строится на обязательной кворумной записи, как у нас, например - больше одного потока записи не пустишь. И воркеры, которые иногда просыпаются чтобы внести корректировки в данные, в результате иногда спотыкаются - приходится это учитывать и повторять операцию.
  • https://t.me/clickhouse_ru
    @metikovvadim #58360 12:23 PM, 11 Jul 2018
    Есть 2 таблички одинаковой структуры с частично дублирующимися записями, как скопировать данные в третью, но что бы все строки были уникальными. Кто знает?
  • https://t.me/clickhouse_ru
    @Imaskar #58361 12:25 PM, 11 Jul 2018
    CollapsingMergeTree ?
  • Например так:
    create table_c engine=... as select ... from (select * from table_a union all select * from table_b) group by ...
  • https://t.me/clickhouse_ru
    @Imaskar #58363 12:26 PM, 11 Jul 2018
    или insert as (select ... union select ...)
  • https://t.me/clickhouse_ru
    @Imaskar #58364 12:26 PM, 11 Jul 2018
    так если union all, то дубликаты не удалятся
  • https://t.me/clickhouse_ru
    @Shegloff #58365 12:27 PM, 11 Jul 2018
    так группирнуть надо
  • https://t.me/clickhouse_ru
    @Shegloff #58366 12:27 PM, 11 Jul 2018
    чтоб дубликаты схлопнуть
  • @mfilimonov #58367 12:27 PM, 11 Jul 2018
    Или движок Merge https://clickhouse.yandex/docs/en/table_engines/merge/ с последующим GROUP BY.
  • https://t.me/clickhouse_ru
    @metikovvadim #58368 12:28 PM, 11 Jul 2018
    таблички GraphiteMergeTree
    Спасибо, буду пробовать.
  • Действительно засада. По идее каждый инсерт отдельно и независимо должен ждать кворума. Можно бы как-то сверху ограничить количество одновременно ожидающих кворума инсертов, и после этого переставать принимать новые. Но переставать принимать новые инсерты сразу же, из-за единственного не завершенного инсерта - засада.
  • @mfilimonov #58370 12:34 PM, 11 Jul 2018
    Возможно так сделано чтобы не было колизий с фоновыми слияниями.
  • "Only UNION ALL is supported. The regular UNION (UNION DISTINCT) is not supported."
  • @mfilimonov #58372 12:35 PM, 11 Jul 2018
    Поэтому UNION ALL + GROUP BY
  • https://t.me/clickhouse_ru
    Спасибо обоим. Ушёл думать о том, как жить дальше.
  • @milovidov_an #58374 01:03 PM, 11 Jul 2018
    Добрый день! Столкнулась с такой задачей по связи mongobd и внешних словарей. Можно ли как-то описать словарь, чтобы вытащить в атрибут вложенное поле или поле элемента массива? Например есть коллекция со структурой {"name" : "user", "details" : {"sex" : "male", "age" : 20}, "languages" : [{"name" : "java", "lines" : 10000}, {"name" : "c", "lines" : 6000}]}. Во-первых, интересует, как сделать атрибутом словаря, например, пол. Во-вторый, возможно ли сделать словарь из элементов массива languages с соответствующими атрибутами name и lines? В документации подобного не нашла, буду крайне признательна за ответ.
  • @milovidov_an #58375 01:03 PM, 11 Jul 2018
    Добрый день. Насколько я знаю, нет способа работы с вложенными элементами.
  • @VitalVas #58376 02:48 PM, 11 Jul 2018
    как долго нужно ждать для удаления данных с системной таблици system.mutations ?
  • @ztlpn #58377 02:56 PM, 11 Jul 2018
    Пока что записи о мутациях остаются навечно (в следующих версиях будет клинер). Если их стало слишком много, можно вручную удалить ноды из ZK.
  • https://t.me/clickhouse_ru
    Пока parts_to_do не опуститься до 0 и is_done не станет 1
  • @ztlpn #58379 02:58 PM, 11 Jul 2018
    Ага, это значит, что мутация полностью выполнилась. Но сама запись о мутации будет висеть.
  • https://t.me/clickhouse_ru
    @stufently #58380 03:01 PM, 11 Jul 2018
    а кто нибудь расширял зукипер с 3 нод до 5 ? нет ли каких то проблем?
  • https://t.me/clickhouse_ru
    @kolosslava #58381 03:02 PM, 11 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #58382 03:04 PM, 11 Jul 2018
    Есть способ выполнить OPTIMIZE TABLE, который падает по памяти?
    Code: 241. DB::Exception: Received from localhost:9000, ::1. DB::Exception: Memory limit (for query) exceeded: would use 12.11 GiB (attempt to allocate chunk of 131072 bytes), maximum: 12.11 GiB: (while reading column originalUrl): (while reading from part /clickHouse/clickhouse/data/default/prodstats/20160715_20160715_61128_61128_0/ from mark 0 with max_rows_to_read = 8192).

    Размер указаного парта на диске 2.1 Мб
  • @mfilimonov #58383 03:24 PM, 11 Jul 2018
    Странно. Он вроде во время слияний сильно память не ест. Или у вас какие-то сложные агрегации при слияниях? Да и размер части небольшой...
  • https://t.me/clickhouse_ru
    Я на такое поведение натыкался при обычных запросах, что-то типа
    SELECT url FROM table WHERE id = 1 LIMIT 1
    и такой запрос выедал 10 Гб и падал. Хотя видно что вернуть должно одну запись. И куда делись 10 Гб - не ясно (до сих пор)
  • https://t.me/clickhouse_ru
    @Shegloff #58385 03:30 PM, 11 Jul 2018
    может парт битый? select <не помню как размер посмотреть> from prodstats where _part = '20160715_20160715_61128_61128_0'
  • https://t.me/clickhouse_ru
    @Shegloff #58386 03:30 PM, 11 Jul 2018
    или в system.parts на этот кусок глянуть
  • https://t.me/clickhouse_ru
    @Shegloff ↶ Reply to #58382 #58387 03:36 PM, 11 Jul 2018
    select sum(cityHash64(originalUrl)) from default.prodstats where _part = '20160715_20160715_61128_61128_0'
  • Тоже об этом подумал, но тогда вроде как должен сильно материться про контрольные суммы, пробовать скачать битый парт с другой ноды и т.п.
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @Shegloff #58390 03:40 PM, 11 Jul 2018
    да по идее норм
  • @mfilimonov #58391 03:40 PM, 11 Jul 2018
    Ну сумма и сумма :) главное что прочиталось. А в логах сервера нет чего-то интересного?
  • https://t.me/clickhouse_ru
    @Shegloff #58392 03:41 PM, 11 Jul 2018
    у меня просто когда был битый парт, не хватало оперативы сделать такой селект
  • https://t.me/clickhouse_ru
    @Shegloff #58393 03:41 PM, 11 Jul 2018
    я бы попробовал отцепить этот part и сделать optimize без него
  • https://t.me/clickhouse_ru
    @Shegloff #58394 03:42 PM, 11 Jul 2018
    ну или просто сделать detach partition и attach partition, может прочекает этот кусок, если что отцепит, скачает с другой реплики...
  • https://t.me/clickhouse_ru
    Таблица prodstats типа ReplacingMergeTree, сегодня перезалили большой кусок данных за несколько месяцев из прошлого, залили не сильно большими кусками и словили ошибку "Too much parts". Стали выполнять ручками OPTIMIZE TABLE и словили указаную выше ошибку
  • https://t.me/clickhouse_ru
    У нас нет репликации (похоже это очередной сигнал сделать её)
  • https://t.me/clickhouse_ru
    Спасибо, буду пробовать
  • https://t.me/clickhouse_ru
    Это больше всего и напрягает. Спасибо
  • @mfilimonov #58399 03:53 PM, 11 Jul 2018
    Можно включить part_log посмотреть что там происходит.
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #58400 03:58 PM, 11 Jul 2018
    Я уже удалил парт, завтра перезалью и посмотрим что будет
  • https://t.me/clickhouse_ru
    @antaev #58401 04:48 PM, 11 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @antaev #58402 04:52 PM, 11 Jul 2018
    Можно ли применить bitOr в качестве агрегатной функции к столбцу? Или к массиву?
  • https://t.me/clickhouse_ru
    @k0st1an #58403 05:27 PM, 11 Jul 2018
    “это фича, не баг” - есть реплицируемая таблица, есть партиции, две реплики, если на одной из реплик сделать alter table … detach partition … запрос реплицируется без проблем, далее alter table … attach partition … - локально отработаеть норм, а на соседней реплике данных так и не будет. Оказывается подобные запросы надо делать на лидере. Вопрос в том, почему detach/attach работают так не предсказуемо (хоть бы ошибку показал)? 🙂
  • https://t.me/clickhouse_ru
    @k0st1an #58404 05:30 PM, 11 Jul 2018
    ой, если потом на лидере выполнить alter table … attach partition … данные будут реплицировать по новой и на соседней будет задваиваение данных 🙂 это ж так круто!
  • https://t.me/clickhouse_ru
    @k0st1an #58405 05:41 PM, 11 Jul 2018
    version 1.1.54390
  • https://t.me/clickhouse_ru
    @stufently #58406 05:43 PM, 11 Jul 2018
    Ну вроде все логично, кх не может знать есть у вас в детаче на реплике данные или нет
  • https://t.me/clickhouse_ru
    @k0st1an #58407 05:49 PM, 11 Jul 2018
    я потому и написал “это фича, не баг”. это такие тонкости КХ о которых надо знать, ибо будет очень весело это потом это исправлять..
  • https://t.me/clickhouse_ru
    @stufently #58408 05:50 PM, 11 Jul 2018
    Ну в этом плане они пока что логичные
  • https://t.me/clickhouse_ru
    @k0st1an #58409 05:52 PM, 11 Jul 2018
    с другой стороны так можно данные легко попортить. в доке об это сказано не очевидно. ИМХО запретить делать диттач не на лидере
  • https://t.me/clickhouse_ru
    @stufently #58410 05:54 PM, 11 Jul 2018
    А какая разница где сделать детач?
  • https://t.me/clickhouse_ru
    @k0st1an #58411 05:55 PM, 11 Jul 2018
    чтоб понимать где потом делать аттач 🙂 ну или в документации описать внятно
  • https://t.me/clickhouse_ru
    @stufently #58412 05:57 PM, 11 Jul 2018
    А какая разница где сделать аттач?
  • https://t.me/clickhouse_ru
    @stufently #58413 05:58 PM, 11 Jul 2018
    Атач разве реплицируется как команда?
  • https://t.me/clickhouse_ru
    @k0st1an #58414 05:58 PM, 11 Jul 2018
    я выше описал к чему это может привести
  • https://t.me/clickhouse_ru
    @k0st1an #58415 05:59 PM, 11 Jul 2018
    реплицируется если сделать на лидере, дитач можно делать где угодно
  • https://t.me/clickhouse_ru
    @stufently #58416 05:59 PM, 11 Jul 2018
    Ну я не понял как это может привести к задваиванию данных, а если реплицируется то по идее задваивания данных быть не должно
  • https://t.me/clickhouse_ru
    @stufently #58417 06:00 PM, 11 Jul 2018
    Кх просто увидит что парты такие уже есть и не будет реплицировать
  • https://t.me/clickhouse_ru
    @k0st1an #58418 06:01 PM, 11 Jul 2018
    в тестовой среде у меня выходит на одной реплике 2k зписей, на другой 1k, ранее везде было 1000
  • https://t.me/clickhouse_ru
    @k0st1an #58419 06:01 PM, 11 Jul 2018
    я думаю разработчики могут прояснить проблему и почему это работает так как работает.
  • https://t.me/clickhouse_ru
    @k0st1an #58420 06:05 PM, 11 Jul 2018
    я конечно могу замарочится написанием скрипта эмуляции поведения, но только если разработчики скажу “что то тут не то и это баг” 🙂
  • https://t.me/clickhouse_ru
    @k0st1an #58421 06:22 PM, 11 Jul 2018
    В доке есть такое

    ALTER TABLE [db.]table DETACH PARTITION 'name'

    The query is replicated – data will be moved to the 'detached' directory and forgotten on all replicas. The query can only be sent to a leader replica. To find out if a replica is a leader, perform SELECT to the 'system.replicas' system table. Alternatively, it is easier to make a query on all replicas, and all except one will throw an exception.

    Но исключения нет ни в каком случае 🙂 похоже таки на баг
  • https://t.me/clickhouse_ru
    @stufently #58422 06:28 PM, 11 Jul 2018
    Ну с детачем понятно
  • https://t.me/clickhouse_ru
    @stufently #58423 06:29 PM, 11 Jul 2018
    Проблема же не в нем
  • https://t.me/clickhouse_ru
    @stufently #58424 06:29 PM, 11 Jul 2018
    А в аттаче
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #58302 #58425 08:16 PM, 11 Jul 2018
    А они в любом случае появлятся будут, тут можно смотреть либо в сторону увеличения max_bytes_to_merge_at_min_space_in_pool либо уменьшения количества тредов для мержа. По сути это нормально что он откладывает мержи и ждет появления ресурсов. Насчет мутации не совсем понял, почему она должна зависить от insert'a?
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #58321 #58426 08:20 PM, 11 Jul 2018
    так себе идея, можно на время отсановить запись и запустить insert into select и включить запись )
  • https://t.me/clickhouse_ru
    А вот и я не знаю почему мутация не проходит, если делать её по таблице, заполненой через INSERT INTO
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #58427 #58428 08:22 PM, 11 Jul 2018
    Если есть пример для воспроизведения то, я думаю, @ztlpn с удовольствием посмотрит )
  • https://t.me/clickhouse_ru
    Попробую сделать
  • @616971047 #58430 11:00 PM, 11 Jul 2018
    Joined.
  • 12 July 2018 (251 messages)
  • https://t.me/clickhouse_ru
    @artemsergienko #58431 03:17 AM, 12 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @artemsergienko #58432 03:23 AM, 12 Jul 2018
    Коллеги, привет.
    Есть около 1,5ТБ данных, запись и чтение каждую секунду, но небольшими партиями.
    Какие будут требования по железу?
    Понятно, что никаких HDD, только SSD.
    Два CPU, вопрос по объему RAM, читал что CH очень любит память.
  • https://t.me/clickhouse_ru
    @artemsergienko #58433 03:23 AM, 12 Jul 2018
    И второй вопрос, по поводу репликации мастер-мастер, насколько повышенные требования к каналу между ДЦ?
  • https://t.me/clickhouse_ru
    @leidruid ↶ Reply to #58380 #58434 03:34 AM, 12 Jul 2018
    Никаких
  • https://t.me/clickhouse_ru
    @leidruid ↶ Reply to #58432 #58435 03:38 AM, 12 Jul 2018
    Это полностью зависит от вас. Для самого КХ памяти нужно немного. Остальное - память для запросов. Или должно целиком влазить или применять до определенной степени хитрости. С телефона неудобно подсказать, но поищите здесь по сообщениям что-то вроде query limit, будет ссылка на презентацию.
  • https://t.me/clickhouse_ru
    У нас такой объем на хдд нормально лежит, память наверно больше зависит не от данных а от запросов
  • https://t.me/clickhouse_ru
    У кх только один тип репликации, канал не важен, что не подтянулось сейчас, подтянется потом.
  • https://t.me/clickhouse_ru
    @stufently #58438 04:11 AM, 12 Jul 2018
    По памяти у нас кстати ноды кх по шесть гигов памяти или по семь
  • @mfilimonov #58439 05:18 AM, 12 Jul 2018
    А я поддерживаю официальные рекомендации
    clickhouse.yandex/docs/ru/operations/tips/

    Памяти - чем больше, тем лучше. Идеально - если объем данных который необходим для большинства запросов будет помещаться в памяти. Т.е. если у вас 1.5 Тб данных, к примеру за год, а большая часть запросов запрашивают последний месяц и только половину колонок, то хорошо бы было если б у вас было получено крайней мере 1.5тб/12/2 примерно 64 Гб, больше - лучше. Если памяти достаточное количество, то количество обращений к диску минимально, и быстрый диск становится менее важен.
  • https://t.me/clickhouse_ru
    @akisin #58440 07:26 AM, 12 Jul 2018
    Доброе утро, в документации CH есть описание конфиг-файла ZK zoo.cfg, но там не прописаны ноды:
    #server.1=xxx.xxx.xxx.xxx:2888:3888
    #server.2=xxx.xxx.xxx.xxx:2888:3888
    Если их не указывать, ZK запускается в режиме standalone. Соответственно где прописывать ноды? Только в конфиге CH?
  • https://t.me/clickhouse_ru
    можно положить отдельным файликом в config.d
  • https://t.me/clickhouse_ru
    А, пардон, вы про сам zookeeper
  • https://t.me/clickhouse_ru
    Если нужен кластер - таки надо прописать все ноды в каждом конфиге зукипера
  • https://t.me/clickhouse_ru
    Что-то типа такого:
    server.1=192.168.110.101:2888:3888
    server.2=192.168.110.102:2888:3888
    server.3=192.168.110.103:2888:3888
  • https://t.me/clickhouse_ru
    @akisin ↶ Reply to #58443 #58445 07:29 AM, 12 Jul 2018
    Спасибо, проблема в том, что при указании серверов кластера ZK, zk-сервер не стартует...
  • https://t.me/clickhouse_ru
    А они друг для друга доступны вообще?
  • https://t.me/clickhouse_ru
    @akisin #58447 07:30 AM, 12 Jul 2018
    Только 2 из трех, без кворума не стартанет вообще?
  • https://t.me/clickhouse_ru
    Ну а накой кластер без кворума?
  • https://t.me/clickhouse_ru
    @akisin #58449 07:32 AM, 12 Jul 2018
    спасибо, сейчас проделаю все тоже самое с кворумом
  • https://t.me/clickhouse_ru
    кстати, у зукиперов должны быть разные id, иначе таки да, друг друга не признают
  • https://t.me/clickhouse_ru
    @masterdizer #58451 07:36 AM, 12 Jul 2018
    И 3 для зукипера мало, лучше 5 хотя бы
  • https://t.me/clickhouse_ru
    А с чем связано количество?
  • https://t.me/clickhouse_ru
    @stufently #58453 07:38 AM, 12 Jul 2018
    ну с тем что из трех может отвалиться один а из пяти два могут отвалиться и система будет работать , если в кз нет кворума или он упал полностью блокируется записть в кх
  • https://t.me/clickhouse_ru
    А... Я почему-то про быстродействие подумал.
  • https://t.me/clickhouse_ru
    @leidruid ↶ Reply to #58454 #58455 07:40 AM, 12 Jul 2018
    Быстродействие, наоборот, уменьшается
    Но что вам это абстрактное быстродействие?
    Главное, на сервера с КХ не кладите зукипер
  • https://t.me/clickhouse_ru
    @leidruid #58456 07:40 AM, 12 Jul 2018
    Хотя да, соблазн положить рядом велик :)
  • https://t.me/clickhouse_ru
    @akisin ↶ Reply to #58455 #58457 07:43 AM, 12 Jul 2018
    А можно поподробнее? Собственно так и хотели сделать, на серваках с CH развернули ZK. А как у вас реализовано?
  • https://t.me/clickhouse_ru
    @leidruid #58458 07:44 AM, 12 Jul 2018
    ZK отдельно
  • https://t.me/clickhouse_ru
    @leidruid #58459 07:45 AM, 12 Jul 2018
    Суть в том, что CH ест все доступные ресурсы. Если ZK не будет хватать ресурсов, он будет тупить, за ним сразу будет тупить CH.
    Это на графиках у нас выражалось в пиках снижения произвдительности/недоступности
  • https://t.me/clickhouse_ru
    ну или зажмет по памяти и его убьет оомкиллер что полностью парализует кластер
  • https://t.me/clickhouse_ru
    @leidruid ↶ Reply to #58460 #58461 07:46 AM, 12 Jul 2018
    Ну это вариант, скорее, из невероятных.
    Из опыта, быстрее упадет CH, если не тюнить OOM score
  • https://t.me/clickhouse_ru
    @akisin ↶ Reply to #58458 #58462 07:46 AM, 12 Jul 2018
    Т.е. если у меня 6 нод с CH разворачию столько же под ZK?
  • https://t.me/clickhouse_ru
    @stufently #58463 07:46 AM, 12 Jul 2018
    нет
  • https://t.me/clickhouse_ru
    @stufently #58464 07:46 AM, 12 Jul 2018
    кх отдельно зк отдельно
  • https://t.me/clickhouse_ru
    @leidruid #58465 07:46 AM, 12 Jul 2018
    Под ZK есть смысл разворачивать нечетное кол-во нод
  • https://t.me/clickhouse_ru
    @leidruid #58466 07:46 AM, 12 Jul 2018
    5 или 7
  • https://t.me/clickhouse_ru
    @stufently #58467 07:46 AM, 12 Jul 2018
    зк должно быть не четное количество
  • https://t.me/clickhouse_ru
    @stufently #58468 07:46 AM, 12 Jul 2018
    или 3
  • https://t.me/clickhouse_ru
    @stufently #58469 07:46 AM, 12 Jul 2018
    или 9
  • https://t.me/clickhouse_ru
    @leidruid #58470 07:46 AM, 12 Jul 2018
    Можно и чётное, но смысла нет
  • https://t.me/clickhouse_ru
    @leidruid #58471 07:47 AM, 12 Jul 2018
    Т.к. кворум = N/2+1
  • https://t.me/clickhouse_ru
    @stufently #58472 07:47 AM, 12 Jul 2018
    ну при четном будут проблемы с кворумом
  • https://t.me/clickhouse_ru
    @leidruid #58473 07:47 AM, 12 Jul 2018
    нет, не будет, он себя будет вести так, так будто у него N-1 нод
  • https://t.me/clickhouse_ru
    @akisin #58474 07:49 AM, 12 Jul 2018
    Ок, тогда еще вопрос, сколько нужно ресурсов под ноды ZK? Хотя бы примерно.
  • https://t.me/clickhouse_ru
    @stufently #58475 07:49 AM, 12 Jul 2018
    ну у меня крутится на одном гиге оперативы и одном ядре
  • https://t.me/clickhouse_ru
    @stufently #58476 07:49 AM, 12 Jul 2018
    но и данных в кх у меня немного
  • https://t.me/clickhouse_ru
    @stufently #58477 07:50 AM, 12 Jul 2018
    сам зк потребляет чуть меньше 200 мб
  • https://t.me/clickhouse_ru
    @stufently #58478 07:50 AM, 12 Jul 2018
    данных всего поллтора тб
  • https://t.me/clickhouse_ru
    @stufently #58479 07:50 AM, 12 Jul 2018
    ну и ложу я их правильно пачками и редко
  • https://t.me/clickhouse_ru
    У меня - итого полгига памяти занято на любом узле зукипера + база в 4.6Гб, но я уменьшил количесво логов и интервал сброса. По диску точно не стоит ужиматься хотя бы на первое время.
  • https://t.me/clickhouse_ru
    В самом зукипере сейчас порядка 130к записей
  • https://t.me/clickhouse_ru
    @akisin #58482 07:59 AM, 12 Jul 2018
    Спасибо, т.е. я сейчас делаю 5 нод под ZK, прописываю их в config.xml в CH и zoo.cfg на всех нодах ZK,а после этого просто создаю Replicated* таблицы в КХ? Ничего не упустил из виду? На нодах с CH ведь все равно нужны клиенты ZK?
  • https://t.me/clickhouse_ru
    @stufently #58483 07:59 AM, 12 Jul 2018
    не нужны клиенты зк
  • https://t.me/clickhouse_ru
    @stufently #58484 08:00 AM, 12 Jul 2018
    кх умеет сам в них ходить
  • https://t.me/clickhouse_ru
    @akisin ↶ Reply to #58484 #58485 08:00 AM, 12 Jul 2018
    ммм, понятно
  • https://t.me/clickhouse_ru
    @stufently #58486 09:43 AM, 12 Jul 2018
    а ни у кого не умирал полностью зукипер?, что делать если пришлось его поднять с нуля ? какой лучше сценарий применить для востановления ?
  • https://t.me/clickhouse_ru
    восстановить одну ноду из последнего работающего бекапа, у остальных прибить базу.
  • https://t.me/clickhouse_ru
    Потом долго и нудно делать attach на сброшенные партиции...
  • @238773844 #58489 09:54 AM, 12 Jul 2018
    Можно подробнее? Я всегда думал что zk нужен Только для репликации, те упал зукипер, нет репликации... И все. Зачем прибивать данные и делать аттач?
  • https://t.me/clickhouse_ru
    @stufently #58490 09:54 AM, 12 Jul 2018
    прибивать данные надо в зк
  • @238773844 #58491 09:54 AM, 12 Jul 2018
    А
  • https://t.me/clickhouse_ru
    @stufently #58492 09:54 AM, 12 Jul 2018
    чтобы не было конфиликта данных
  • @238773844 #58493 09:54 AM, 12 Jul 2018
    Ноду
  • @238773844 #58494 09:55 AM, 12 Jul 2018
    А можно прибить ноду рутовую
  • @238773844 #58495 09:55 AM, 12 Jul 2018
    Оно пересоздать?
  • @238773844 #58496 09:55 AM, 12 Jul 2018
    Пересоздаст?
  • https://t.me/clickhouse_ru
    @stufently #58497 09:55 AM, 12 Jul 2018
    что такое рутовая нода ?
  • https://t.me/clickhouse_ru
    речь про фс или про содержимое зк?
  • https://t.me/clickhouse_ru
    @stufently #58499 09:55 AM, 12 Jul 2018
    рутовых нод вроде нет ни у зк ни у хк
  • @238773844 #58500 09:55 AM, 12 Jul 2018
    Zk понятие есть такое
  • @238773844 #58501 09:55 AM, 12 Jul 2018
    Нола
  • @238773844 #58502 09:55 AM, 12 Jul 2018
    Нода
  • @238773844 #58503 09:55 AM, 12 Jul 2018
    Те узел в иерархии
  • @238773844 #58504 09:56 AM, 12 Jul 2018
    / cliclhouse это в терминологии zk нода
  • @238773844 #58505 09:56 AM, 12 Jul 2018
    Если я ничего не путаю
  • https://t.me/clickhouse_ru
    @stufently #58506 09:56 AM, 12 Jul 2018
    а какой смысл удалять /clickhouse?
  • https://t.me/clickhouse_ru
    @stufently #58507 09:57 AM, 12 Jul 2018
    то есть по сути это уже и так случилось в случае падения зк глобального
  • @238773844 #58508 09:57 AM, 12 Jul 2018
    Чтобы удалить из zk данные
  • @238773844 #58509 09:57 AM, 12 Jul 2018
    Сам же писал
  • https://t.me/clickhouse_ru
    Удалять надо БАЗУ зк. Всю.
  • https://t.me/clickhouse_ru
    Тогда узел подтянет её оттуда, где данные есть.
  • https://t.me/clickhouse_ru
    ну там по сути будут просто пустые зк и на один из них надо положить бекап
  • https://t.me/clickhouse_ru
    Удалять файлы базы перед запуском зк-неудачника
  • @dIoMeDs #58514 09:58 AM, 12 Jul 2018
    А как вы бекапите ЗууКипер?
  • https://t.me/clickhouse_ru
    @stufently #58515 09:58 AM, 12 Jul 2018
    ну там просто на диске он хранит снапшоты
  • https://t.me/clickhouse_ru
    снапшотами вирталки
  • https://t.me/clickhouse_ru
    @stufently #58517 09:58 AM, 12 Jul 2018
    тупо копировать их можно
  • https://t.me/clickhouse_ru
    Так оказалось проще всего
  • @238773844 #58519 10:01 AM, 12 Jul 2018
    А вот вы про что, а что будет если развалить ЗК кластер, прибить все в ЗК, не восстанавливая бакап стартанутт кластер, поднять ch
  • @238773844 #58520 10:01 AM, 12 Jul 2018
    Ck причем в данными
  • https://t.me/clickhouse_ru
    @stufently #58521 10:01 AM, 12 Jul 2018
    да
  • https://t.me/clickhouse_ru
    кх скажет "а у меня партиции зк не соответствуют - сброшу их нафиг"
  • @238773844 #58523 10:01 AM, 12 Jul 2018
    О, весело
  • https://t.me/clickhouse_ru
    @stufently #58524 10:01 AM, 12 Jul 2018
    ну в детач просто ?
  • @238773844 #58525 10:01 AM, 12 Jul 2018
    Те если бакап восстановим
  • @238773844 #58526 10:02 AM, 12 Jul 2018
    То надо будет делать аттач того что не попало в бакап
  • https://t.me/clickhouse_ru
    да, но часть партиций таки упадёт и потребуется их зааттачить на одном из узлов.
  • @238773844 #58528 10:02 AM, 12 Jul 2018
    Все понял, надо будет потестить разные ситуации
  • @238773844 #58529 10:03 AM, 12 Jul 2018
    С другой стороны падежка кластер ЗК это надо умудриться, или я не прав?
  • @238773844 #58530 10:03 AM, 12 Jul 2018
    Я не встречался, но и не эксплуатировал его акьивно
  • @firej #58531 10:17 AM, 12 Jul 2018
    Unknown function toStartOfFifteenMinutes - это у меня сервер старый, да?
  • https://t.me/clickhouse_ru
    select * from system.functions where name = 'toStartOfFifteenMinutes'
  • @firej #58533 10:27 AM, 12 Jul 2018
    No data
  • @firej #58534 10:27 AM, 12 Jul 2018
    ну всмысле нету
  • @firej #58535 10:28 AM, 12 Jul 2018
    ClickHouse server version 1.1.54327
  • https://t.me/clickhouse_ru
    @Nordskolian #58536 10:34 AM, 12 Jul 2018
    Господа подскажите, а можно ли в clickhouse делать алиасы для однотипных конструкций, если да то как =)??
  • https://t.me/clickhouse_ru
    @orantius #58537 10:36 AM, 12 Jul 2018
    x as y
  • https://t.me/clickhouse_ru
    @Nordskolian #58538 10:37 AM, 12 Jul 2018
    а можно забиндить/за алиасить visitParamExtractType =) ?
  • https://t.me/clickhouse_ru
    @Shegloff #58539 10:39 AM, 12 Jul 2018
    Select (150+150) as traktorist, (traktorist + 50 + 50 + 50) as vse
  • https://t.me/clickhouse_ru
    @Nordskolian #58540 10:39 AM, 12 Jul 2018
    спасиб
  • @pavel_maksimow #58541 11:07 AM, 12 Jul 2018
    подскажите, как очистить таблицу, если партиция не задана?
  • https://t.me/clickhouse_ru
    @Valenvaryon #58542 11:09 AM, 12 Jul 2018
    Привет!
    Обновил кликхаус с 1.1.54245 до 1.1.54388
    Потребление памяти внезапно упало раз в 10, это нормально?
  • https://t.me/clickhouse_ru
    @stufently #58543 11:12 AM, 12 Jul 2018
    зависит от абсолютных значений
  • https://t.me/clickhouse_ru
    @Valenvaryon #58544 11:13 AM, 12 Jul 2018
    хотя я вру, это только с VIRT так
  • https://t.me/clickhouse_ru
    @proller #58545 11:20 AM, 12 Jul 2018
    ее добавили Fri Dec 22 12:36:39
  • https://t.me/clickhouse_ru
    @proller #58546 11:20 AM, 12 Jul 2018
    а релиз твой вышел Dec 20, 2017
  • https://t.me/clickhouse_ru
    @Valenvaryon #58547 11:27 AM, 12 Jul 2018
    Еще вопрос, настройки merge_tree
    max_parts_to_merge_at_once и max_parts_to_merge_at_once_if_small в новой версии заменены на что-нибудь?
  • https://t.me/clickhouse_ru
    @SergeyLossev #58548 11:28 AM, 12 Jul 2018
    А как думаете, в какое место в рейтинге КХ можно здесь ввернуть Apache Kudu?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @SergeyLossev #58550 11:28 AM, 12 Jul 2018
    Apache Kudu - Fast Analytics on Fast Data

    A new open source Apache Hadoop ecosystem project, Apache Kudu completes Hadoop's storage layer to enable fast analytics on fast data

  • @shinebell #58551 11:29 AM, 12 Jul 2018
    все тесты врут
  • @shinebell #58552 11:29 AM, 12 Jul 2018
    мы вертику сравнивали и получали гораздо лучшие результаты
  • https://t.me/clickhouse_ru
    @SergeyLossev #58553 11:29 AM, 12 Jul 2018
    На русском
    https://en.wikipedia.org/wiki/Apache_Kudu
    Apache Kudu

    Open Source Software

  • @shinebell #58554 11:30 AM, 12 Jul 2018
    плюс к этому, в вертике поддерживается полностью sql
  • @shinebell #58555 11:30 AM, 12 Jul 2018
    без костылей :)
  • @shinebell #58556 11:30 AM, 12 Jul 2018
    и масштабируемость более удобная
  • https://t.me/clickhouse_ru
    Вертику с чем сравнивали - с КХ или с Куду?
  • @shinebell #58558 11:31 AM, 12 Jul 2018
    с кх
  • @shinebell #58559 11:31 AM, 12 Jul 2018
    куду не щупали
  • https://t.me/clickhouse_ru
    Да надо бы. Говорят, они из пару месяцев назад в бету вышли
  • https://t.me/clickhouse_ru
    @SergeyLossev #58561 11:33 AM, 12 Jul 2018
    Ябыпосмотрел
  • @shinebell #58562 11:33 AM, 12 Jul 2018
    а нужно ли ? ))
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #58556 #58563 11:33 AM, 12 Jul 2018
    Про SQL согласен, а с масштабируемостью то что не так )
  • @shinebell #58564 11:33 AM, 12 Jul 2018
    большинству - постгерса за глаза
  • @shinebell #58565 11:33 AM, 12 Jul 2018
    с кх - так вообще полет в космос
  • у нас прям идеально, кластер из 12 машин стоял
  • @shinebell #58567 11:34 AM, 12 Jul 2018
    завелся без проблем, на протяжении года - 0 проблем
  • @shinebell #58568 11:34 AM, 12 Jul 2018
    зато вот с кх - уже неоднократно слышал о траблах
  • https://t.me/clickhouse_ru
    @kshvakov #58569 11:35 AM, 12 Jul 2018
    У нас с ним нет особых проблем
  • @shinebell #58570 11:35 AM, 12 Jul 2018
    сколько нод ?
  • https://t.me/clickhouse_ru
    @kshvakov #58571 11:35 AM, 12 Jul 2018
    тоже 12
  • @shinebell #58572 11:35 AM, 12 Jul 2018
    неплохо, значит повезло
  • https://t.me/clickhouse_ru
    @kshvakov #58573 11:35 AM, 12 Jul 2018
    4 шарда в репликейшен фактор 3
  • @shinebell #58574 11:35 AM, 12 Jul 2018
    минимум от трех человек слышал
  • https://t.me/clickhouse_ru
    @EvgenyVinogradov #58575 11:36 AM, 12 Jul 2018
    у нас 15*2ДЦ на кх, полет нормальный
  • https://t.me/clickhouse_ru
    поделитесь?
  • https://t.me/clickhouse_ru
    @kshvakov #58577 11:36 AM, 12 Jul 2018
    Я вам, конечно, тоже могу жути ещё той поднакидать, но оно либо решаемо, либо от моих кривых рук
  • https://t.me/clickhouse_ru
    @kshvakov #58578 11:37 AM, 12 Jul 2018
    У нас и с вертикой, кстати, тоже проблемы были
  • @shinebell #58579 11:38 AM, 12 Jul 2018
    да это бесспорно, фактор кривых рук никто не исключал :)
  • https://t.me/clickhouse_ru
    @voorxers #58580 11:38 AM, 12 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @EvgenyVinogradov #58581 11:38 AM, 12 Jul 2018
    может отдельный чат организуете ClickHouse vs Vertica vs KUDU?
  • @shinebell #58582 11:38 AM, 12 Jul 2018
    зачем ? ))
  • @shinebell #58583 11:38 AM, 12 Jul 2018
    еще тогда по куде нужно )
  • https://t.me/clickhouse_ru
    @EvgenyVinogradov #58584 11:39 AM, 12 Jul 2018
    именно
  • https://t.me/clickhouse_ru
    @kshvakov #58585 11:39 AM, 12 Jul 2018
    У вертики самый большой минус в том, что исходники закрыты и туда, если что-то нужно, ничего не дописать
  • https://t.me/clickhouse_ru
    @kshvakov #58586 11:39 AM, 12 Jul 2018
    и не почитать
  • https://t.me/clickhouse_ru
    @Nikmort #58587 11:40 AM, 12 Jul 2018
    Joined.
  • @shinebell #58588 11:40 AM, 12 Jul 2018
    это да, но тут 99 % уверен далеки от исходников кх :) и вряд ли сами смогут запулреквестить в случае проблем что-нибудь. Надеюсь, что ошибаюсь, и процент таких меньше :)
  • https://t.me/clickhouse_ru
    некоторых еще смущает цена
  • https://t.me/clickhouse_ru
    @stufently #58590 11:41 AM, 12 Jul 2018
    даже яндекс смущала )
  • https://t.me/clickhouse_ru
    @stufently #58591 11:41 AM, 12 Jul 2018
    ентерпрайзу понятно что как бы пофиг
  • https://t.me/clickhouse_ru
    @kshvakov #58592 11:42 AM, 12 Jul 2018
    И нас смущала и еще есть ряд людей которых смущала
  • https://t.me/clickhouse_ru
    @stufently #58593 11:46 AM, 12 Jul 2018
    ну там просто такой ценник что за все железо проекта мы отдаем меньше чем за лицензию вертики , а кх это малая часть проекта
  • по чейнджлогу они 2 года и несколько месяцев назад вышли из беты :)
  • https://t.me/clickhouse_ru
    Зависит от методики проведения тестов. На плоской таблице без джойнов КХ обычно быстрее Вертики в два раза (при прочих равных, то есть одинаковая сортировка, и нет большого числа колонок, которые можно супер-эффективно заэнкодить на Вертике). С джойнами Вертика может быть быстрее.
  • @lnpj12 #58596 11:59 AM, 12 Jul 2018
    Ребят, а для range_hashed словаря составной ключ может быть?
  • https://t.me/clickhouse_ru
    @voorxers #58597 12:04 PM, 12 Jul 2018
    Доброго дня. Знакомлюсь с кх, подскажите пожалуйста. Чтобы настроить реплику из 2-х нод достаточно подключить зукипер с replicated талблицами? Или также нужно в конфиге прописать шард с адресами реплик на каждой ноде?
  • https://t.me/clickhouse_ru
    @stufently #58598 12:05 PM, 12 Jul 2018
    в конфиге шард надо прописывать если хотите юзать дистрибьтед таблицы, в вашем случае они не нужныможно и не конфигурить
  • https://t.me/clickhouse_ru
    @voorxers #58599 12:10 PM, 12 Jul 2018
    Понял, спасибо большое!
    И еще вопрос по зукиперу. В конфиге кх нужно прописать все ноды кластера зукипера? или можно использовать балансер между кх и зк?
  • https://t.me/clickhouse_ru
    @stufently #58600 12:11 PM, 12 Jul 2018
    а какой смысл в балансере
  • https://t.me/clickhouse_ru
    @stufently #58601 12:11 PM, 12 Jul 2018
    ?
  • https://t.me/clickhouse_ru
    там идёт соединение кх сразу ко всем узлам из конфига, балансер не нужен, достаточно прописать нужное куда надо
  • https://t.me/clickhouse_ru
    @stufently #58603 12:13 PM, 12 Jul 2018
    ну просто балансер у вас в итоге станет единой точкой отказа
  • https://t.me/clickhouse_ru
    @stufently #58604 12:13 PM, 12 Jul 2018
    какой в этом смысл
  • https://t.me/clickhouse_ru
    @stufently #58605 12:13 PM, 12 Jul 2018
    если у вас много зк в разных дц то может какой то смысл и есть нно опять таки это крайне сложный конфиг
  • https://t.me/clickhouse_ru
    @voorxers #58606 12:14 PM, 12 Jul 2018
    Я прописал все ноды кластера зк, но при отключении одного узла зукипера кх уходил в режим чтения и переставал писать в таблицы. Поэтому решил провести экперимент с балансером, как единственным узлом зукипера в конфиге кх.
  • https://t.me/clickhouse_ru
    @stufently #58607 12:14 PM, 12 Jul 2018
    это не будет влиять
  • https://t.me/clickhouse_ru
    @stufently #58608 12:14 PM, 12 Jul 2018
    вы криво настроили зк
  • https://t.me/clickhouse_ru
    @stufently #58609 12:15 PM, 12 Jul 2018
    либо у вас два узла зк
  • https://t.me/clickhouse_ru
    @stufently #58610 12:15 PM, 12 Jul 2018
    а для зк надо больше половины нод для кворума
  • https://t.me/clickhouse_ru
    @stufently #58611 12:15 PM, 12 Jul 2018
    два двух нод зк это 2
  • https://t.me/clickhouse_ru
    @stufently #58612 12:15 PM, 12 Jul 2018
    то есть надо зк иметь 1 -3 -5 -7 -9 и тд
  • https://t.me/clickhouse_ru
    @kshvakov #58613 12:16 PM, 12 Jul 2018
    Не обязательно четное, ПРОСТО КВОРУМ ТАМ ПОЛОВИНА + 1
  • https://t.me/clickhouse_ru
    @voorxers #58614 12:16 PM, 12 Jul 2018
    всего 3 узла. Один отключаю (остается 2 - кворум), и подключаю кх, потом включаю 3-й узел кластера, и отключаю один из предыдущих (лидер меняется с одного узла на другой). в этот момент запись прекращается.
  • https://t.me/clickhouse_ru
    @kshvakov #58615 12:16 PM, 12 Jul 2018
    случайно капс жамкнул, сорри
  • https://t.me/clickhouse_ru
    Перед отключением второго дожидаетесь синхронизации зк?
  • https://t.me/clickhouse_ru
    на три секунды или что ?
  • https://t.me/clickhouse_ru
    @stufently #58618 12:18 PM, 12 Jul 2018
    или вы одновременно выключаете и включаете ?
  • https://t.me/clickhouse_ru
    @voorxers #58619 12:19 PM, 12 Jul 2018
    друг за другом, один включил - другой отключил. Подскажите, пожалуйста, как отследить статус синхронизации в зукипере?
  • https://t.me/clickhouse_ru
    в логах смотреть надо. Правда, что там по этому поводу должно писаться уже ен помню.
  • https://t.me/clickhouse_ru
    @voorxers #58621 12:25 PM, 12 Jul 2018
    Спасибо еще раз) стало понятнее в какую сторону двигаться
  • https://t.me/clickhouse_ru
    ну это печаль
  • https://t.me/clickhouse_ru
    @voorxers #58623 12:32 PM, 12 Jul 2018
    Просто я только повстречал этих друзей) пытаюсь разобраться в логике работы связки, к сожалению в документации не нашел информации про это
  • https://t.me/clickhouse_ru
    @stufently #58624 12:33 PM, 12 Jul 2018
    ну логика она слава богу общая для всех
  • https://t.me/clickhouse_ru
    @voorxers #58625 12:37 PM, 12 Jul 2018
    логично) я имел ввиду процесс хождения данных от кх, принимающего запросы, на реплику через зукипер
  • https://t.me/clickhouse_ru
    @Valenvaryon #58626 01:56 PM, 12 Jul 2018
    не могу запустить кликхаус из-за ошибок вида "Cannot create table from metadata file /var/lib/clickhouse/metadata/database/table.sql, error: ZooKeeperImpl::Exception: Session expired"
    на старой версии вроде работало терпимо
    Как с таким бороться? Есть какой-то таймаут зукипера?
  • https://t.me/clickhouse_ru
    @stufently #58627 02:00 PM, 12 Jul 2018
    ну он не может видимо подключиться к зк
  • https://t.me/clickhouse_ru
    @titorenko #58628 02:00 PM, 12 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @stufently #58629 02:00 PM, 12 Jul 2018
    попробуйте телнетом работает ли коннект ок
  • https://t.me/clickhouse_ru
    @Valenvaryon #58630 02:02 PM, 12 Jul 2018
    20+ старых кликхаусов прямо сейчас работают нормально, а новые не хотят стартовать
  • https://t.me/clickhouse_ru
    @Valenvaryon #58631 02:02 PM, 12 Jul 2018
    Зк-то работают, проверял
  • @VitalVas #58632 02:06 PM, 12 Jul 2018
    кто-то пробовал удалять данные с ReplicatedMergeTree с большим датасетом?
    нафига оно перетряхивает всю таблицу, когда я четко задал временный интервал?
  • https://t.me/clickhouse_ru
    Тогда тем более, почему оно до сих пор не в сравнении?
  • https://t.me/clickhouse_ru
    @SergeyLossev #58634 02:10 PM, 12 Jul 2018
    @milovidov_an
    Алексей, не хочешь добавить в бенчмарки Apache Kudu?
    https://clickhouse.yandex/benchmark.html
  • https://t.me/clickhouse_ru
    вроде этот момент поправят в ближайших версиях
  • https://t.me/clickhouse_ru
    @danilgrig #58636 03:00 PM, 12 Jul 2018
    Joined.
  • @418939702 #58637 03:08 PM, 12 Jul 2018
    Joined.
  • @VitalVas ↶ Reply to #58635 #58638 04:47 PM, 12 Jul 2018
    а есть какие-то eta?
  • https://t.me/clickhouse_ru
    @stufently #58639 04:48 PM, 12 Jul 2018
    Что такое ета
  • https://t.me/clickhouse_ru
    @stufently #58640 04:48 PM, 12 Jul 2018
    Тут же опенсоурс как сделают так сделают
  • https://t.me/clickhouse_ru
    @stufently #58641 04:48 PM, 12 Jul 2018
    Удаление вообще обещали в первом квартале а появилась аж в третьем в итоге
  • https://t.me/clickhouse_ru
    @Sharmanshik #58642 05:24 PM, 12 Jul 2018
    Всем привет, я немного подзастрял, и буду очень благодарен за пинок в нужном направлении, допустим я пишу в Clickhouse статистику по http кодам, в виде инкрементных каунтеров и хочу посчитать rate при помощи runningDifference() если я беру к примеру и ставлю в where http_code = code и считаю по одному коду, все отлично, но если кодов больше 1 никакой group by не спасает, и функция считает дельту между каунтерами разных кодов.
  • https://t.me/clickhouse_ru
    @Sharmanshik #58643 05:24 PM, 12 Jul 2018
    куда смотреть?
  • Была подобная проблема. Вариантов два: писать сырые данные, без инкремента. На каждый код делать отдельный запрос.
  • https://t.me/clickhouse_ru
    @Sharmanshik #58645 05:37 PM, 12 Jul 2018
    последнее не вариант, над первым думал
  • В случае с кх правильней будет писать сырые данные
  • https://t.me/clickhouse_ru
    @Sharmanshik #58647 05:40 PM, 12 Jul 2018
    не хотелось генерировать лишний трафик, реквестов достаточно много, ладно, в любом случае спасибо, если красивых вариантов нет, может придется писать без инкремента
  • @antonio_antuan #58648 05:42 PM, 12 Jul 2018
    А не прокатит что-то типа runningDifference(if(code = 200, counters, 0) ) as counters_200, runningdifference(if(code = 400,counters,0)) as counters_400,... ?
  • @antonio_antuan #58649 05:42 PM, 12 Jul 2018
    Не в курсе как функция работает:)
  • А почему вы думаете, что будет лишний трафик? Вы же не поштучно инсерты делаете
  • @pookieShmukie #58651 05:44 PM, 12 Jul 2018
    Можно данные паковать перед тем как отправлять на вставку
  • @tru_pavel #58652 05:52 PM, 12 Jul 2018
    Joined.
  • @pavel_maksimow #58653 06:01 PM, 12 Jul 2018
    Подскажите пожалуйста, словарь выдает ошибку
    Code: 50, e.displayText() = DB::Exception: Unknown type Array(String) e.what() = DB::Exception

    словари не поддерживают массивы?
    вроде раньше помню небыло проблем
  • @antonio_antuan #58654 06:04 PM, 12 Jul 2018
    Не поддерживают и вроде бы никогда не поддерживали
  • @antonio_antuan #58655 06:04 PM, 12 Jul 2018
    Последние полгода-год так точно :)
  • @TanVD #58656 06:09 PM, 12 Jul 2018
    Всем привет :) А никто не в курсе — возможно ли изменить формат лога CH?
  • https://t.me/clickhouse_ru
    @stufently #58657 06:19 PM, 12 Jul 2018
    Ну он же опенсоурс можно менять как хочешь
  • https://t.me/clickhouse_ru
    к сожалению если это нельзя построить динамически вокруг произвольного количества кодов не прибивая гвоздями ничего, то тоже не вариант
  • спасибо
  • https://t.me/clickhouse_ru
    инсерты не поштучно конечно, но точек откуда приходят данные много и они нагружены, собственно для этого и задумывались когда то инкремент каунтеры "на местах", чтобы уменьшить "обьем" передаваемых метрик
  • @pavel_maksimow #58661 06:28 PM, 12 Jul 2018
    Подскажите, как пользоваться словарем типа cache.
    Пробовал указывать разные значения переменной
    <size_in_cells>1000000000</size_in_cells>
    но словарь, таки не подгрузился
  • https://t.me/clickhouse_ru
    @oZZyTOP #58662 06:37 PM, 12 Jul 2018
    Joined.
  • @koluchiy01 #58664 07:24 PM, 12 Jul 2018
    Joined.
  • @TanVD ↶ Reply to #58657 #58665 07:34 PM, 12 Jul 2018
    Это понятно, но интересует можно ли это сделать через конфиг без пересборки всего сервера :)
  • Кх достаточно много может инсертов принимать. Я когда только начинал использовать КХ, то писал в 100 потоков ) причем инсертил по 2-3 запоса в секунду и КХ сглатывал это все. Писал в одну ноду, но distributed таблицу.
  • @pookieShmukie #58667 08:29 PM, 12 Jul 2018
    Поэтому не бойтесь писать «лишние» метрики и даже если инсертов из двух-трех мест приходит. Я ловил проблемы, когда КХ не успевал мерджить данные и «подвисал», но это было из-за того, что образ диска лежал на shared маунте по nfs...перевезли на локальную машину и вуаля! Проблем не стало.
  • https://t.me/clickhouse_ru
    @vstepankov #58668 08:30 PM, 12 Jul 2018
    кстати, господа, объясните мне такой вопрос.

    Есть тип таблиц Buffer, но кого не почитаешь, все в качестве очереди используют либо каффку, либо тупо в MySQL вставляют, откуда пачками уже отправляют в КХ.

    Есть какие-то минусы использования Buffer?
    То что хранится в памяти меня устраивает
  • Ненадежно :) я просто пишу файлы на диск в формате tsv, а потом через cat в пайплайн заворачиваю и через clickhouse-client вставляю одним блоком
  • @pookieShmukie #58670 08:33 PM, 12 Jul 2018
    Ну и бывали случаи когда буфер лагал по какой-то причине
  • https://t.me/clickhouse_ru
    @vstepankov #58671 08:33 PM, 12 Jul 2018
    ну, применительно к моему случаю, можно, конечно и так попробовать, 1 поток == 1 файл
  • https://t.me/clickhouse_ru
    @vstepankov #58672 08:34 PM, 12 Jul 2018
    у меня в рамках потока конкуренции нет
  • Я после записи в файл подписываю его суфиксом -flushed, что значит, что файл можно писать в кх. Раз в минуту собираю эти файлы в кучу, списком и пихаю в кх
  • У нас тоже
  • https://t.me/clickhouse_ru
    @konstantin_ptr #58675 08:38 PM, 12 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @konstantin_ptr #58676 08:39 PM, 12 Jul 2018
    у метрики в логс апи нигде нет ключевиков??
  • https://t.me/clickhouse_ru
    @feriat ↶ Reply to #58676 #58677 09:16 PM, 12 Jul 2018
    Кто такие ключевики?
  • https://t.me/clickhouse_ru
    которые в другом отчете есть
  • https://t.me/clickhouse_ru
    @narmaru #58679 09:56 PM, 12 Jul 2018
    Если таблица назначения является реплицируемой, то при записи в таблицу Buffer будут потеряны некоторые ожидаемые свойства реплицируемых таблиц. Из-за произвольного изменения порядка строк и размеров блоков данных, перестаёт работать дедупликация данных, в результате чего исчезает возможность надёжной exactly once записи в реплицируемые таблицы.

    В связи с этими недостатками, таблицы типа Buffer можно рекомендовать к применению лишь в очень редких случаях.
  • https://t.me/clickhouse_ru
    @narmaru ↶ Reply to #58668 #58680 09:56 PM, 12 Jul 2018
    про ньюансы выше
  • https://t.me/clickhouse_ru
    @BaZZiliO #58681 10:28 PM, 12 Jul 2018
    Joined.
  • В принципе, хочу. Но сейчас добавлять не будем.
    Стоит иметь ввиду следующие соображения:

    1. Добавление новой системы в этот бенчмарк занимает от нескольких дней до двух недель времени одного разработчика.

    2. Этот бенчмарк не очень удобен, потому что основан на закрытых данных (датасет из Яндекс.Метрики). Сейчас лучше приложить усилия, чтобы сделать датасет открытым, вместо того, чтобы просто добавлять больше результатов. Недавно для этой цели была разработана утилита clickhouse obfuscator, которая позволяет анонимизировать данные. Требуются ещё некоторые доработки и согласования, и может быть получится сделать открытый датасет с почти настоящими данными.
  • 13 July 2018 (127 messages)
  • https://t.me/clickhouse_ru
    @dolbyzerr #58683 03:16 AM, 13 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @underbird #58684 05:05 AM, 13 Jul 2018
    SELECT query doesn't have required column
  • https://t.me/clickhouse_ru
    @underbird #58685 05:05 AM, 13 Jul 2018
    Кто-нибудь сталкивался? При джоине.
  • https://t.me/clickhouse_ru
    @underbird #58686 05:06 AM, 13 Jul 2018
    select terminal_id, remote_id, city from a any left join b using terminal_id, remote_id
    Запрос выглядит так
  • https://t.me/clickhouse_ru
    @oZZyTOP ↶ Reply to #58682 #58687 06:05 AM, 13 Jul 2018
    Леша, доброго дня, когда новый митап, канал с фразами простаивает
  • https://t.me/clickhouse_ru
    @konstantin_ptr #58688 06:30 AM, 13 Jul 2018
    как то в кликхаус застримить ключевые слова с поиска и директа возможно?
  • https://t.me/clickhouse_ru
    @Ravinskiy #58689 07:34 AM, 13 Jul 2018
    Joined.
  • seems legit
  • https://t.me/clickhouse_ru
    @artemsergienko #58691 08:50 AM, 13 Jul 2018
    Джентельмены, а есть более быстрый способо смигриовать 1.5ТБ логов с Постгреса на КХ?
  • https://t.me/clickhouse_ru
    @artemsergienko #58692 08:50 AM, 13 Jul 2018
    Желательно, быстрее чем через csv :)
  • https://t.me/clickhouse_ru
    @artemsergienko #58693 08:52 AM, 13 Jul 2018
    Пока нашел только https://habr.com/post/416681/
    Как из PostgreSQL и ClickHouse в Python много, быстро и сразу в numpy

    Разбил много кружек в поисках решения для быстрого получения длинных историй цен для большого количества активов в Python. Ещё имел смелость желать работать с це...

  • https://t.me/clickhouse_ru
    @artemsergienko #58694 08:52 AM, 13 Jul 2018
    возможно есть другие варианты?
  • https://t.me/clickhouse_ru
    @Sablast #58695 08:56 AM, 13 Jul 2018
    мб подключить как словарь?)
  • psql -c "COPY ... to stdout" | clickhouse-client ...
  • @antonio_antuan #58697 08:57 AM, 13 Jul 2018
    ну или словарь, угу :)
  • https://t.me/clickhouse_ru
    @Valenvaryon #58698 09:48 AM, 13 Jul 2018
    ПРивет!
    В логе горы ошибок вида "(StorageReplicatedMergeTree): DB::StorageReplicatedMergeTree::queueTask()::<lambda(DB::StorageReplicatedMergeTree::LogEntryPtr&)>: Code: 33, e.displayText() = DB::Exception: Cannot read all data, e.what() = DB::Exception"
    что это, и как с этим бороться?
  • https://t.me/clickhouse_ru
    спасибо, понял.
    Печаль, придётся колхозить
  • https://t.me/clickhouse_ru
    @Vasyaabr #58700 10:02 AM, 13 Jul 2018
    Не понял вот этого:

    OPTIMIZE TABLE Turnovers

    Received exception from server (version 1.1.54388):
    Code: 194. DB::Exception: Received from 127.0.0.1:9003. DB::Exception: Received from .... DB::Exception: Password required for user default.

    У юзера default конечно есть пароль, но я его ввел когда залогинился в консоль...
  • https://t.me/clickhouse_ru
    @Shegloff #58701 10:05 AM, 13 Jul 2018
    это вам другая нода видимо ответила
  • https://t.me/clickhouse_ru
    @Shegloff #58702 10:05 AM, 13 Jul 2018
    они же под юзером default друг к другу ходят
  • https://t.me/clickhouse_ru
    @Vasyaabr #58703 10:07 AM, 13 Jul 2018
    Т.е. при OPTIMIZE реплицируемой таблицы, они ещё и друг к другу логинятся?? Кластера у нас нет если что, только replicated таблицы по 3-м нодам.
    Пароли/логины кстати у них одинаковые...
  • https://t.me/clickhouse_ru
    @Shegloff #58704 10:08 AM, 13 Jul 2018
    вы должны пароли юзера default прописать в replica.xml, где описывается кластер
  • https://t.me/clickhouse_ru
    @Vasyaabr #58705 10:10 AM, 13 Jul 2018
    Хм, мне казалось, что replika.xml у меня вообще отсутствует.
    Это возможно сделать в разделе <remote_servers>, где прописаны реплики?
  • https://t.me/clickhouse_ru
    @Shegloff #58706 10:11 AM, 13 Jul 2018
    <replica>
    <host>example01-02-2</host>
    <port>9000</port>
    <user>default</user>
    <password>sex</password>
    </replica>
  • https://t.me/clickhouse_ru
    @Shegloff #58707 10:11 AM, 13 Jul 2018
    да, там и надо
  • https://t.me/clickhouse_ru
    @Vasyaabr #58708 10:12 AM, 13 Jul 2018
    Ага, спасибо!
  • https://t.me/clickhouse_ru
    @negasus #58709 10:17 AM, 13 Jul 2018
    парни, привет. А я правильно понимаю, что есть у меня есть кластер и релицируемые таблицы. И есть матвью, что из одной таблицы в другую данные собирает, вот этот матвью только на одном сервере кластера должен работать?
  • https://t.me/clickhouse_ru
    У вас более одного шарда?
  • https://t.me/clickhouse_ru
    @negasus #58711 10:19 AM, 13 Jul 2018
    нет, один
  • https://t.me/clickhouse_ru
    @Vasyaabr #58712 10:25 AM, 13 Jul 2018
    Вот такая загадка:
    Сделал для реплицируемой таблицы ALTER TABLE ... ADD COLUMN AddDate DateTime DEFAULT now(); (replication_alter_partitions_sync = 2)
    При попытке посмотреть значение это колонки для старой строки уткнулся в эксепшн: DB::Exception: Not found column AddTime in block.
    Как я понял по документации, такого быть не должно, колонка должна догенеряться при селектах, или возвращаться пустой.
    WTF?
  • https://t.me/clickhouse_ru
    @Vasyaabr ↶ Reply to #58709 #58713 10:25 AM, 13 Jul 2018
    Если данные пишутся только на этом сервере - то да.
  • https://t.me/clickhouse_ru
    @negasus #58714 10:26 AM, 13 Jul 2018
    А, матвью ловит же инсерты. То если пишу везде, то и матвью надо везде
  • https://t.me/clickhouse_ru
    @ManfrediK #58715 10:30 AM, 13 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @andrei_tupitcyn #58716 10:30 AM, 13 Jul 2018
    Зависит от движка матвью. Реплицируемый не могу рекомендовать. А так на каждой машине отдельно можн по матвью делать. Инсерты ловят
  • https://t.me/clickhouse_ru
    @ManfrediK #58717 10:30 AM, 13 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #58714 #58718 10:31 AM, 13 Jul 2018
    Везде где пишите
  • https://t.me/clickhouse_ru
    @negasus #58719 10:31 AM, 13 Jul 2018
    Ага, я уже понял. Спасибо
  • https://t.me/clickhouse_ru
    @yourock88 #58720 10:33 AM, 13 Jul 2018
    Господа, никто не сталкивался с задачей добавить колонку и добавить её заодно в первичный ключ? По идее, для этого старые данные перестраивать не нужно, поэтому такое должно быть возможно.
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #58720 #58721 10:34 AM, 13 Jul 2018
    Для нереплицируемых таблиц это возможно
  • https://t.me/clickhouse_ru
    @yourock88 #58722 10:35 AM, 13 Jul 2018
    У нас везде реплицируемые 🙂
  • https://t.me/clickhouse_ru
    @kshvakov #58723 10:35 AM, 13 Jul 2018
    В задачах есть сделать это везде :)
  • https://t.me/clickhouse_ru
    @yourock88 #58724 10:35 AM, 13 Jul 2018
    Я уже думал про то, что можно просто .sql-файл с описанием таблицы поправтиь и перезапустить ClickHouse
  • https://t.me/clickhouse_ru
    Понятно, спасибо :).
  • https://t.me/clickhouse_ru
    @Valenvaryon #58726 10:36 AM, 13 Jul 2018
    Так как можно понять, откуда берется "Cannot read all data"? на старой версии такого не было
  • https://t.me/clickhouse_ru
    @Shegloff #58727 10:42 AM, 13 Jul 2018
    у меня иногда такое бывает, я иду смотреть в другую реплику, там указана ошибка про конкретный кусок в таблице
  • https://t.me/clickhouse_ru
    @Shegloff #58728 10:43 AM, 13 Jul 2018
    помогает detach & attach partition с этим куском
  • https://t.me/clickhouse_ru
    @Valenvaryon #58729 10:44 AM, 13 Jul 2018
    походу из-за разных версий.. тогда продолжаю обновлять
  • https://t.me/clickhouse_ru
    @proller ↶ Reply to #58726 #58730 10:47 AM, 13 Jul 2018
    А можно полную ошибку с трейсом и кусок лога про этот тред ( все вокруг с совпадающей цифрой в квадратных скобках?

    Но скорее всего это новая известная бага - потерялось выставление таймаутов - уже починено, будет в следующем релизе
  • https://t.me/clickhouse_ru
    тут похоже на такое: https://github.com/yandex/ClickHouse/issues/1818
    Проблемы после обновления на версию 1.1.54342 · Issue #1818 · yandex/ClickHouse

    Пытался обновиться с версии 1.1.54327 на 1.1.54342 и получил множество ошибок следующего вида: 2018.01.24 12:24:59.356556 [ 5 ] DB::StorageReplicatedMergeTree::queueTask()::<lambda(DB::StorageRe...

  • https://t.me/clickhouse_ru
    @Valenvaryon #58732 10:48 AM, 13 Jul 2018
    дообновлю и буду смотреть
  • https://t.me/clickhouse_ru
    @k0st1an #58733 10:52 AM, 13 Jul 2018
    было похожее. оказалось на одной из реплик случайно указал неверные хостнейм в параметре interserver_http_host. то есть одна реплика ходила за данными сама к себе, а их нет, они на соседней реплике были
  • https://t.me/clickhouse_ru
    @alexey_laptev #58734 11:01 AM, 13 Jul 2018
    А есть коннекторы ClickHouse к Google Data Studio?
  • https://t.me/clickhouse_ru
    @alexey_laptev #58735 11:36 AM, 13 Jul 2018
    Ну или кто может его написать и за сколько? )
  • https://t.me/clickhouse_ru
    @Valenvaryon #58736 11:47 AM, 13 Jul 2018
    а все же, можно ли как-нибудь увеличить таймаут для зукипера?
  • https://t.me/clickhouse_ru
    @Valenvaryon #58737 11:47 AM, 13 Jul 2018
    тупо не могу запустить сервер из-за "session expired"
  • https://t.me/clickhouse_ru
    @ku4eryashe4ka #58738 11:54 AM, 13 Jul 2018
    Ребят, привет! Подскажите, пожалуйста, как можно грузить данные из hive в QH без Spark?
  • https://t.me/clickhouse_ru
    к сожалению, напрямую никак
  • https://t.me/clickhouse_ru
    @Krashuevina #58740 11:55 AM, 13 Jul 2018
    если совсем без скриптинга, то совсем никак :)
  • https://t.me/clickhouse_ru
    @Krashuevina #58741 11:56 AM, 13 Jul 2018
    можно посохранять в JSON/TSV, потом каждый файлик пораздельно через CURL засунуть
  • https://t.me/clickhouse_ru
    А на чем можно подводить? Есть что-то готовое?
  • https://t.me/clickhouse_ru
    @ku4eryashe4ka #58743 11:57 AM, 13 Jul 2018
    Подкодить *
  • @Prokh #58744 12:48 PM, 13 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @vse_chetk0 #58745 12:54 PM, 13 Jul 2018
    Подскажите как можно получить заселектить значения в массив, пример того что хочется получить
    SELECT
    city_id,
    array(users)
    FROM session GROUP BY city_id;
  • https://t.me/clickhouse_ru
    @orantius #58746 12:54 PM, 13 Jul 2018
    groupArray
  • https://t.me/clickhouse_ru
    спасибо
  • https://t.me/clickhouse_ru
    @al_tush #58748 12:59 PM, 13 Jul 2018
    Привет!
    Есть ли у кого-то опыт использования КХ в продакшне под Gentoo?
    В руководстве КХ формулировка однозначная "Система некроссплатформенная. Требуется ОС Linux Ubuntu", но дальше идет описание установки под другие системы, включая Gentoo
  • https://t.me/clickhouse_ru
    @avhaliullin #58749 01:01 PM, 13 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @ivmaks #58750 01:08 PM, 13 Jul 2018
    под генту просто никто не тестирует
  • https://t.me/clickhouse_ru
    @vstepankov #58751 01:08 PM, 13 Jul 2018
    там ждут ебилдов?
  • https://t.me/clickhouse_ru
    @kmarenov #58752 01:09 PM, 13 Jul 2018
    Подскжите, пожалуйста, появилась ли возможность изменять состав полей первичного ключа MergeTree таблиц?
  • @creadone #58753 01:13 PM, 13 Jul 2018
    Joined.
  • На PyPy можно довольно быстро качать, только главное - батчи в памяти помещать :D
  • https://t.me/clickhouse_ru
    @Shegloff ↶ Reply to #58752 #58755 01:19 PM, 13 Jul 2018
    давно, еще в 2017
  • https://t.me/clickhouse_ru
    @Shegloff #58756 01:19 PM, 13 Jul 2018
    на версии 1.1.54310
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @Shegloff ↶ Reply to #58752 #58758 01:21 PM, 13 Jul 2018
    вот это я невнимательно прочитал...
  • https://t.me/clickhouse_ru
    @kmarenov #58759 01:22 PM, 13 Jul 2018
    🙂
  • https://t.me/clickhouse_ru
    @Shegloff #58760 01:22 PM, 13 Jul 2018
    там какой-то кейс есть, когда не меняется сортировка данных, но в целом нет, нельзя добавить удалить колонку
  • https://t.me/clickhouse_ru
    @Shegloff ↶ Reply to #58759 #58761 01:23 PM, 13 Jul 2018
    Изменение типа у столбцов, входящих в первичный ключ возможно только в том случае, если это изменение не приводит к изменению данных (например, разрешено добавление значения в Enum или изменение типа с DateTime на UInt32).
  • https://t.me/clickhouse_ru
    @Vasyaabr #58762 01:23 PM, 13 Jul 2018
    Что делает RESTART REPLICAS?
  • https://t.me/clickhouse_ru
    @Vasyaabr #58763 01:24 PM, 13 Jul 2018
    А то у меня несколько реплик только на проде, опасаюсь вот так сразу пробовать.
  • https://t.me/clickhouse_ru
    Кинь ссылку на Руру . Первый раз слышу
  • https://t.me/clickhouse_ru
    @Vasyaabr ↶ Reply to #58706 #58765 01:29 PM, 13 Jul 2018
    Что-то не хватило прописывания логина/пароля в репликах :(
    optimize table Turnovers
    DB::Exception: Received from ......:9000, 10.100.20.22. DB::Exception: Password required for user default.
  • https://t.me/clickhouse_ru
    @Shegloff #58766 01:30 PM, 13 Jul 2018
    вы задали пароль для default, где-ьо его надо прописать, надо искать
  • https://t.me/clickhouse_ru
    @Shegloff #58767 01:34 PM, 13 Jul 2018
    вот смотрите
  • https://t.me/clickhouse_ru
    @Shegloff #58768 01:34 PM, 13 Jul 2018
    Просто у меня в users.xml пароль для default в хэше, а в конфиге открытый - и так не работает, он всё равно ругается и требует пароль. Вот если в users.xml тоже сохранить в открытом виже - тогда работает.
  • https://t.me/clickhouse_ru
    @Vasyaabr #58769 01:35 PM, 13 Jul 2018
    Нет, не мой случай. Пароль везде одинаково задан.
    Спасибо, поищу ещё в чем дело.
  • https://t.me/clickhouse_ru
    @proller ↶ Reply to #58748 #58770 01:45 PM, 13 Jul 2018
    Собрать и использовать. основные отличия будут с init скриптами если у вас не systemd
  • https://t.me/clickhouse_ru
    @vse_chetk0 #58771 01:46 PM, 13 Jul 2018
    подскажите кто с талкивался с переносом больших таблиц
    - есть широкая таблица (~140 колонок ) в которой порядка 5 мрд. записей
    - было принята решение изменить структуру таблицы ( внедрить Nested структуру для многих из колонок )
    - Запрос типа INSERT INTO table_new SELECT table_from даже за месяц падает по памяти

    Есть варинанты переноса данных ?
  • https://t.me/clickhouse_ru
    @Shegloff #58772 01:48 PM, 13 Jul 2018
    1. создать вторую таблицу рядом, начать писать в нее параллельно со старой
    2. по дням доливать данные из старой в новую
  • https://t.me/clickhouse_ru
    @Shegloff #58773 01:49 PM, 13 Jul 2018
    3. когда накопится достаточно дней, переключить софт на новую таблицу
    4. долить из старой в новую столько, скольк нужно, и потом старую [сбэкапить и] удалить
  • https://t.me/clickhouse_ru
    на счет месяца, я погарячился, за один день не могу выгрузить
    а так схема хорошая
  • https://t.me/clickhouse_ru
    @Shegloff #58775 01:55 PM, 13 Jul 2018
    есть есть timestamp, можно по дню и по часу
  • https://t.me/clickhouse_ru
    а сколько данных за день в гигах и сколько памяти что не можете выгрузить ?
  • https://t.me/clickhouse_ru
    запрос съедает 10Гб
  • https://t.me/clickhouse_ru
    чего нет, такого нет
  • https://t.me/clickhouse_ru
    ну можно воткнуть больше памяти, а так да есть проблема как гранулировать для переливки данные если небольшой обьем памяти
  • @TanVD #58780 02:00 PM, 13 Jul 2018
    @prll А проблема с timeout (Cannot read all data, e.what() = DB::Exception) починена в 390?
  • https://t.me/clickhouse_ru
    понял, спасибо
  • @ztlpn #58782 02:03 PM, 13 Jul 2018
    Попробуйте ещё уменьшить количество тредов для запроса SELECT: INSERT INTO table_new SELECT * FROM table_from SETTINGS max_threads=1
  • @serg_kacher #58783 02:08 PM, 13 Jul 2018
    Привет!
    Есть битовое поле.
    Каждому биту соответствует массив чисел.
    Хочется каждому экземпляру битового поля ставить в соответствие массив чисел

    Например, возьмем число 201326592 = (1 « 26) + (1 « 27)
    числу 26 можно поставить в соответствие числа -2, 555
    числу 27 можно поставить в соответствие числа -2, 777
    хочу получить массив [-2, 555, -2, 777]

    Я пытаюсь это делать примерно так
    select arrayMap(y -> splitByChar(',',y), arrayMap(xx -> caseWithExpr(xx, 26, '-2,555', 27, '-2,777', '666'), arrayMap(xxx -> log2(xxx), bitmaskToArray(201326592))))

    но результат немного не тот
    [['-2','555'],['-2','777']]

    Есть идеи как это сделать правильно?
  • https://t.me/clickhouse_ru
    не помогло
  • https://t.me/clickhouse_ru
    @salttan ↶ Reply to #58771 #58785 02:20 PM, 13 Jul 2018
    А какой у вас select? С группировкой и сортировкой?
  • https://t.me/clickhouse_ru
    сортировки нет, групировка только по одной колонке, но много функции groupArray()
  • https://t.me/clickhouse_ru
    @proller ↶ Reply to #58780 #58787 02:24 PM, 13 Jul 2018
    1. нет.
    2. это может быть не только таймауты ( они вот тут - https://github.com/yandex/ClickHouse/commit/98f8ae3edb65f237181b4f7aa11e47154db20667).
    Fixed error with timeouts [#CLICKHOUSE-2837] · yandex/ClickHouse@98f8ae3

    ClickHouse is a free analytic DBMS for big data.

  • https://t.me/clickhouse_ru
    вот такой запрос
    INSERT INTO table_new SELECT
    session_id,
    any(column_2),
    ...
    ...
    any(column_61),
    groupArray(column_62),
    ...
    ...
    groupArray(column_140),
    FROM table_old
    WHERE date = '2017-07-10'
    GROUP BY session_id;
  • @antonio_antuan #58789 02:27 PM, 13 Jul 2018
    мб стОит попробовать вставить в одном запросе одну часть колонок, во втором - вторую часть и т.д.?
  • @TanVD ↶ Reply to #58787 #58790 02:30 PM, 13 Jul 2018
    Ну мы сейчас тестово пробуем заапдейтиться с 245 версии на 388 и видим: https://pastebin.com/ZNwUr1c5
  • https://t.me/clickhouse_ru
    а как таблицу то апдейтить ?
  • @181469774 #58792 03:47 PM, 13 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @Vasyaabr ↶ Reply to #58791 #58793 04:32 PM, 13 Jul 2018
    А зачем апдейтить? Все равно ведь агрегировать потом при работе с данными.
  • https://t.me/clickhouse_ru
    @Mike_Er #58794 05:39 PM, 13 Jul 2018
    Коллеги, подскажите плиз, новый словарь из постгресса без перезагрузки подтянется? что-то конфиг сделал, вроде даже конфиги перечитались (судя по небольшой ругани в логах) но в system.dictionaries пусто(
  • Должен
  • А просто Select (без insert) проходит? Внешняя группировка (с использованием диска) включена?
  • https://t.me/clickhouse_ru
    Селект не проходит, про использование диска незнаю, а как это можно узнать ?
  • Можно собрать практически под любой linux, по идее даже бинарник должен быть переносим между многими дистрибутивами. Как вариант есть docker, некоторые используют его и в продакшн.
  • Я с телефона, долго искать, настройка называется примерно: max bytes before external group by.
  • https://t.me/clickhouse_ru
    Спасибо, попробую
  • @milovidov_an #58801 07:26 PM, 13 Jul 2018
    ClickHouse Meetup в Санкт-Петербурге: https://events.yandex.ru/events/ClickHouse/16-aug-2018/

    Открываем регистрацию.
    ClickHouse Meetup, 16 августа 2018, Санкт-Петербург — События Яндекса

    Приглашаем технических специалистов на ClickHouse Meetup.

  • None
  • https://t.me/clickhouse_ru
    @narmaru #58803 07:28 PM, 13 Jul 2018
    🔥🔥🔥
  • https://t.me/clickhouse_ru
    @222018626 #58804 07:47 PM, 13 Jul 2018
  • https://t.me/clickhouse_ru
    В Бенуа будет?
  • @milovidov_an #58806 07:59 PM, 13 Jul 2018
    Да (если за месяц ничего не изменится)
  • https://t.me/clickhouse_ru
    @konstantin_ptr #58807 08:05 PM, 13 Jul 2018
    👍
  • Как именно вы хотите её "апдейтить"?
  • @657602777 #58809 11:47 PM, 13 Jul 2018
    Joined.
  • 14 July 2018 (29 messages)
  • @238773844 #58810 03:43 AM, 14 Jul 2018
    кто пробывал запустить pentaho olap server(mondrian) в связке с ClickHouse?
  • https://t.me/clickhouse_ru
    @akisin ↶ Reply to #58810 #58811 07:03 AM, 14 Jul 2018
    Не пробовали, но в планах есть
  • @noname_unknown #58812 07:49 AM, 14 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @Valenvaryon #58813 09:06 AM, 14 Jul 2018
    Делаю запрос "rename table db_name.table_name to db_name.old_table_name".
    Получаю ошибку File not found: /var/lib/clickhouse//data/db_name/old_table_name
    Как так? Зачем он ищет файл таблицы, которой еще нет?
  • https://t.me/clickhouse_ru
    @proller #58814 10:29 AM, 14 Jul 2018
    А полный трейс можно? Может быть попытка создать директорию провалилась. И какие файлы-директории есть с old в data и metadata ?
  • https://t.me/clickhouse_ru
    @lstemperor #58815 02:39 PM, 14 Jul 2018
    Joined.
  • @mzhilochkin #58816 04:03 PM, 14 Jul 2018
    Joined.
  • @mzhilochkin #58817 04:09 PM, 14 Jul 2018
    всем привет! подскажите, пожалуйста, насколько clickhouse подходит для хранения метрик IoT устройств во времени? то есть можно ли (есть ли смысл) использовать ее как time-series базу данных? Стоит задача - хранить метрики и делать выборки во времени с возможностью аггрегации данных. Например, выбрать показание температуры за год с определенной дискретностью (шагом) и применением функции усреднения (макс, мин) промежуточных значений
  • https://t.me/clickhouse_ru
    @rheinx ↶ Reply to #58817 #58818 04:17 PM, 14 Jul 2018
    Идеально подходит ИМХО.
  • https://t.me/clickhouse_ru
    @rheinx #58819 04:18 PM, 14 Jul 2018
    В метрике ж тоже «метрики» и «выборки по времени с аггригацией»
  • @mzhilochkin #58820 04:22 PM, 14 Jul 2018
    нужно сделать выборку типа:
    (на примере запроса из Timescale)

    SELECT time_bucket('15 minutes', time) AS fifteen_min,
    location, COUNT(*),
    MAX(temperature) AS max_temp,
    MAX(humidity) AS max_hum
    FROM conditions
    WHERE time > NOW() - interval '3 hours'
    GROUP BY fifteen_min, location
    ORDER BY fifteen_min DESC, max_temp DESC;
  • https://t.me/clickhouse_ru
    @emakarov ↶ Reply to #58817 #58821 04:33 PM, 14 Jul 2018
    температурные измерения обычно не предполагают больших объемов данных ))
    у вас десятки миллионов?
  • https://t.me/clickhouse_ru
    @Vincent_57 #58822 04:40 PM, 14 Jul 2018
    Joined.
  • @mzhilochkin #58823 04:41 PM, 14 Jul 2018
    температура, давление, влажность, шум, вибрация...и т.д.
    в общем более 1000 метрик в секунду
  • @mzhilochkin #58824 04:42 PM, 14 Jul 2018
    в timescale набегает более 1 Gb в день
  • https://t.me/clickhouse_ru
    гигабайты тут не канают, если есть куда их сложить 😊
  • https://t.me/clickhouse_ru
    Вот то, что 1000 метрик в секунду - может иметь значение. Там потребуется посредник, который их сложит в один батч и будет засовывать в базу большими кусками
  • https://t.me/clickhouse_ru
    @rheinx ↶ Reply to #58824 #58827 04:47 PM, 14 Jul 2018
    CH их еще пожмет и может вообще оказаться что в нем это всего лишь 100-200 Mb 🙂
  • @mzhilochkin #58828 04:48 PM, 14 Jul 2018
    сложить как раз не проблема, проблема выбрать данные с какой-то дискретизацией, например, нарисовать изменение какого-то показателя за год. Количество данных по сенсору за год может быть огромное
  • https://t.me/clickhouse_ru
    Огромное - это сколько?
  • @mzhilochkin #58830 04:51 PM, 14 Jul 2018
    60*60*24*365=31536000 по каждому сенсору в год
  • https://t.me/clickhouse_ru
    @rheinx ↶ Reply to #58828 #58831 04:51 PM, 14 Jul 2018
    Если у вас есть понимание уровней аггрегации. Т.е. например вы 100% уверены что вы при запросе за год, аггрегируете по месяцу/неделе/дню то можно рядышком поставить MAT VIEW с двидком AggregatingMegreTree и тогда у вас будет быстрая таблица с атоаггрегацией и прочими прелестями
  • https://t.me/clickhouse_ru
    @emakarov ↶ Reply to #58823 #58832 04:56 PM, 14 Jul 2018
    а что измеряете если не секрет?
  • @mzhilochkin #58833 04:57 PM, 14 Jul 2018
    это система телеметрии с возможностью подключения любых сенсоров. Сенсоры и частота получения данных определяются индивидуально для каждого проекта
  • https://t.me/clickhouse_ru
    @emakarov #58834 04:57 PM, 14 Jul 2018
    понятно
  • https://t.me/clickhouse_ru
    @emakarov #58835 06:28 PM, 14 Jul 2018
    а как решаете вопрос с разнородными сенсорами?
  • @688190721 #58836 10:02 PM, 14 Jul 2018
    Joined.
  • Для описанной задачи кликхаус подходит, более того это именно то для чего он придуман. Запрос с минимальными изменениями будет работать, и почти наверняка будет работать быстрее чем вы можете ожидать :) можете потом какие-то цифры для сравнения скорости кликхауса и таймскалы написать на ваших данных, т.к. вроде пока сравнения никто не делал.
  • @mfilimonov #58838 10:15 PM, 14 Jul 2018
    30 млн значений в год с сенсора - это для кликхауса не страшные цифры. В Яндексе - сотни тысяч / миллионы событий в секунду. На одном среднем сервере с кликхаусом можно с относительно небольшими задержками (десятки секунд-минуты) делать аналитику для миллиардов записей. Если допустимы задержки в минуты / десятки минут - то можно и десятки миллиардов данных перемалывать на одном сервере. Если ответы на запросы нужны без видимых задержек - то потребуется больше одного сервера (с шардингом), или преагрегация данных. Но для начала - попробуйте на одном сервере.
  • 15 July 2018 (1 messages)
  • https://t.me/clickhouse_ru
    @Imaskar ↶ Reply to #58642 #58840 02:36 PM, 15 Jul 2018
    https://github.com/yandex/ClickHouse/issues/2590
    вот сюда посмотрите. там и пример кода есть. фикс уже выкатили рабочий, но надо либо релиза ждать, либо из исходников собирать
    Strange behavior of runningDifference if the source column was conditionally modified #2590

    Suppose, we have this table: CREATE TABLE events ( event_time DateTime, monitor_id Int32, type Int32, event_date Date, status Int32 ) ENGINE = MergeTree(event_date, monitor_id, 8192) And this data (wait a few seconds between queries to h...

  • 16 July 2018 (118 messages)
  • https://t.me/clickhouse_ru
    @QuietFelix #58842 06:26 AM, 16 Jul 2018
    А здесь есть кто-нибудь, раскативший ClickHouse на c5-инстансах в AWS? Вам норм живётся, машины не висят?
  • https://t.me/clickhouse_ru
    @stufently #58843 06:27 AM, 16 Jul 2018
    а что с ними должно быть не так ?
  • https://t.me/clickhouse_ru
    @stufently #58844 06:27 AM, 16 Jul 2018
    вообще в амазоне не висят машины
  • https://t.me/clickhouse_ru
    @QuietFelix #58845 06:30 AM, 16 Jul 2018
    Во-первых, у m5 и c5 была (есть?) хитрая бага, которая зимой косила ряды. Там в случае с интенсивной работы i/o машина просто висла. Мы на это напоролись, пошли форумы читать амазоновые, оказались не уникальными. Ровно та же фигня, ровно на m5/c5 у ряда контор выстрелила.
    Во-вторых... Скажу словами поддержки Amazon, когда у нас за одну неделю три инстанса ушли в небеса: "железо иногда ломается".
  • https://t.me/clickhouse_ru
    @QuietFelix #58846 06:31 AM, 16 Jul 2018
    Т.ч. про "не висят" не надо. :)
  • https://t.me/clickhouse_ru
    @stufently #58847 06:31 AM, 16 Jul 2018
    хз облако как раз ориентировано на то что оно может умереть в любой момент и его надо как то подняться
  • https://t.me/clickhouse_ru
    @QuietFelix #58848 06:35 AM, 16 Jul 2018
    В теории да. На практике "любой момент" не должен означать регулярные частые проблемы. И мой вопрос про актуальный опыт с c5 был именно об этом.
  • https://t.me/clickhouse_ru
    @maxlapshin #58850 06:38 AM, 16 Jul 2018
    Вот мне все интересно, в каких случаях кроме резкого всплеска амазон интересен.

    Как мне видится, на Кликхаус идет ровная нагрузка и под него можно планировать железо. Вам амазон был выгоднее железа или просто привычнее?
  • https://t.me/clickhouse_ru
    @QuietFelix #58851 06:39 AM, 16 Jul 2018
    Просто мы на нём давно живём.
  • https://t.me/clickhouse_ru
    @Valenvaryon #58852 07:32 AM, 16 Jul 2018
    Привет
    Сервер упал с таким сообщением в логе:
    https://pastebin.com/cbAtw3b1
  • https://t.me/clickhouse_ru
    @Valenvaryon #58853 07:32 AM, 16 Jul 2018
    это с чего он так?
  • Облака... белогривые лошадки :) Главная проблема железа - оно медленно прибавляется / убавляется, и железные проблемы (типа упавший диск) становятся проблемами которые нужно решать тебе самостоятельно или в "полуручном" режиме (руками админов ДЦ). В случае AWS об этом голова не будет болеть, зато может болеть о каких-то других (порой странных) вещах - типа cpu throttle, роскомнадзор, какие-то неожиданные для тебя работы в ДЦ с рестартом серверов и т.п.
  • https://t.me/clickhouse_ru
    @negasus #58855 08:19 AM, 16 Jul 2018
    ...или с оплатой траффика) Что нас пока останавливает
  • https://t.me/clickhouse_ru
    @QuietFelix #58856 08:24 AM, 16 Jul 2018
    Там межзональный дорогой, остальные терпимо. Но зависит от, конечно.
  • https://t.me/clickhouse_ru
    @negasus #58857 08:28 AM, 16 Jul 2018
    Да, конечно, все индивидуально. У нас просто при расчетах какие-то негуманные числа получались. Но это уже оффтоп
  • https://t.me/clickhouse_ru
    @proller ↶ Reply to #58852 #58859 09:06 AM, 16 Jul 2018
    какая версия? какие были запросы? как часто бывает?
  • https://t.me/clickhouse_ru
    да это при запуске один раз повторилось, на всякий случай лог скинул
    версия 1.1.54388
  • https://t.me/clickhouse_ru
    > В случае AWS об этом голова не будет болеть

    вот эта фраза всё таки у меня вызывает легкий скепсис =)

    Не, бесспорно пара минут на запуск в амазоне против 3 дней ожидания кастомной конфигурации — это разница.

    Но вот сколько будет стоить двухголовый E5 с 8 SSD на 500 Гб в амазоне? Полагаю, что сильно дороже, чем беру я
  • https://t.me/clickhouse_ru
    @kshvakov #58862 09:25 AM, 16 Jul 2018
    Яндекс скоро облако с ClickHouse выкатит, наверное подешевле будет
  • https://t.me/clickhouse_ru
    @nikitosiusis #58863 09:27 AM, 16 Jul 2018
    Сильно это мягко сказано. Один порядок разницы будет точно:)
  • https://t.me/clickhouse_ru
    у кого то большая маржа , кому то нужны не такие дикие конфиги, кто то умеет хорошо автоматически расширять и сжимать ресурсы чтобы экономить
  • @70532431 ↶ Reply to #58862 #58865 09:29 AM, 16 Jul 2018
    И Алиса заговорит словами ваших клиентов 🙄
  • ну для облаков типичный подход - вместо одного крутого сервера возьмем 10 средненьких, и все распараллелим. В пиках будем ещё множить серверы, а если тишина - гасить ненужные.
  • @mfilimonov #58867 09:31 AM, 16 Jul 2018
    Но в кликхаусе на самом деле это сложновато...
  • https://t.me/clickhouse_ru
    вот я именно в контексте кликхауса.

    Плюс как ни верти, а хочется покупать не только абстрактную бесконечную масштабируемость, а ещё и хорошее время отклика
  • @mfilimonov #58869 09:35 AM, 16 Jul 2018
    Кликхаус не удобен в динамическом расширении и сужении. Много ручной работы требует из-за того что серверы - участиники сети не сами в сети регистрируются, а вручную добавляются в конфиги.
  • https://t.me/clickhouse_ru
    @Mike_Er #58870 10:16 AM, 16 Jul 2018
    Коллеги, подскажите плиз, никак не могу загрузить внешний словарь из pgsql, dsn создан по ману, через isql туда нормально заходит. конфиг сделал с именем xxx_dictionaries.xml, положил в conf.d, при изменении КХ его перечитывает (в логах есть упоминания), ошибок нет, но и в system.dictionaries пусто. Куда посмотреть еще? КХ перезагружать очень уж не хочется
  • @mfilimonov #58871 10:18 AM, 16 Jul 2018
    А как настроен <dictionaries_config> ?
  • @mfilimonov #58872 10:18 AM, 16 Jul 2018
    Он по умолчанию не ищет конфиги словарей в conf.d.
  • @mfilimonov #58873 10:21 AM, 16 Jul 2018
    только на верхнем уровне файлы словарей читает (т.е. если не изменяли <dictionaries_config> то конфиги словарей должны лежать просто в /etc/clickhouse-server/ )
  • @mfilimonov #58874 10:23 AM, 16 Jul 2018
    И ещё сам файл с конфигурацией словаря - лучше всего обернуть тэгами <yandex>. Типа такого:
    <?xml version="1.0"?>
    <yandex>
    <comment>...</comment>
    <dictionary>
    <name>...</name>
    ...
    </dictionary>
    </yandex>
  • https://t.me/clickhouse_ru
    @Mike_Er ↶ Reply to #58873 #58875 10:27 AM, 16 Jul 2018
    аа, вот в чем дело, dictionaries_config дифолтный :) Спасибо
  • https://t.me/clickhouse_ru
    @Mike_Er ↶ Reply to #58874 #58876 11:43 AM, 16 Jul 2018
    https://pastebin.com/7ufK6MNK конфиг, dictionaries_config дефолтный, в лог сыпет <Warning> ExternalDictionaries: /etc/clickhouse-server/dnl_dictionary.xml: unknown node in file: 'listen_host', expected 'dictionary' и тому подобное, как будто структура xml порушена, уже голову сломал - не могу понять где
  • @mfilimonov #58877 11:48 AM, 16 Jul 2018
    Хм. Хз. Попробуйте <dictionaries_config>dictionaries/*.xml</dictionaries_config> , создать папку /etc/clickhouse-server/dictionaries (обратите внимание на chmod / acl, чтоб кликхаус мог оттуда читать/писать), и переложите туда ваш файл.
  • https://t.me/clickhouse_ru
    @Mike_Er #58878 11:52 AM, 16 Jul 2018
    Так вообще не реагирует на файл словарей :) Чудеса
  • @antonio_antuan #58879 12:07 PM, 16 Jul 2018
    а что у вас вообще прописано в /etc/clickhouse-server/config.xml, в настройке dictionaries_config?
  • https://t.me/clickhouse_ru
    @bogdi_gulyaet #58880 12:13 PM, 16 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @Mike_Er ↶ Reply to #58879 #58881 12:19 PM, 16 Jul 2018
    config.xml дифолтный, не трогаю его
  • а, изменение <dictionaries_config> скорее всего требует рестарта
  • https://t.me/clickhouse_ru
    @ponyengine #58884 12:26 PM, 16 Jul 2018
    Всем добрый день! А кто чем мониторит ch?
  • https://t.me/clickhouse_ru
    @Mike_Er ↶ Reply to #58882 #58885 12:26 PM, 16 Jul 2018
    так я могу положить кофиг словаря наверх, и он его видит - но ошибки пишет
  • https://t.me/clickhouse_ru
    @Mike_Er ↶ Reply to #58884 #58886 12:27 PM, 16 Jul 2018
    icinga - рабочие процессы, память, диски, grafana - уже более детальные данные
  • @mfilimonov #58887 12:27 PM, 16 Jul 2018
    /me потянулся за бубном.
  • @mfilimonov #58889 12:28 PM, 16 Jul 2018
    Попробуйте тэги <yandex> в начале и конце заменить на <dictionaries>
  • @mfilimonov #58890 12:29 PM, 16 Jul 2018
    А что в файле -processed?
  • https://t.me/clickhouse_ru
    более детальные - самописные скрипты, которые выдергивают из кх метрики, и рисуем в графане?
  • https://t.me/clickhouse_ru
    @bogdi_gulyaet #58892 12:34 PM, 16 Jul 2018
    Коллеги, подскажите пожалуйста
    есть кластер кликхауса с 2 шардами и двумя репликами
    создана distributed таблица
    в случае если один из четырёх инстансов кликхауса недоступен, то запись в distributed таблицу через гошный клиент github.com/kshvakov/clickhouse не работает
    в качестве ошибки пишет 'dial tcp 127.0.0.1:9012: connect: connection refused'
    при этом в другой инсталяции кликхауса при потере одного инстанса запись продолжается без ошибок
    подскажите пожалуйста по какой причине такое может происходить?
    GitHub - ClickHouse/clickhouse-go: Golang driver for ClickHouse

    Golang driver for ClickHouse. Contribute to ClickHouse/clickhouse-go development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    @Mike_Er ↶ Reply to #58890 #58893 12:36 PM, 16 Jul 2018
    В preprocessed помимо нужного еще куча всего дописывается из других вставок из conf.d (конф зукипера и прочее). на вот эти лишние параметры как раз и ругается конфиг-парсер
  • https://t.me/clickhouse_ru
    @Mike_Er #58894 12:37 PM, 16 Jul 2018
    Files used to generate this file:
    /etc/clickhouse-server/dnl_dictionary.xml
    /etc/clickhouse-server/conf.d/listen_hosts.xml
    /etc/clickhouse-server/conf.d/logger.xml
    /etc/clickhouse-server/conf.d/memory.xml
    /etc/clickhouse-server/conf.d/settings.xml
    /etc/clickhouse-server/conf.d/zookeeper.xml
    /etc/metrika.xml -->
  • <dictionaries_config>*_dictionary.xml</dictionaries_config>
  • https://t.me/clickhouse_ru
    @Mike_Er #58896 12:39 PM, 16 Jul 2018
    да все так
  • @antonio_antuan #58897 12:40 PM, 16 Jul 2018
    у вас файлик же называется dnl_dictionary.xml
  • @antonio_antuan #58898 12:40 PM, 16 Jul 2018
    пральна?
  • https://t.me/clickhouse_ru
    @Mike_Er #58899 12:40 PM, 16 Jul 2018
    да
  • @antonio_antuan #58900 12:43 PM, 16 Jul 2018
    такое ощущение, что у вас симлинк)
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #58892 #58901 12:49 PM, 16 Jul 2018
    В alt_hosts пропишите все ваши сервера, и если какой-то из них будет недоступен клиент попытается найти рабочий сервер
  • https://t.me/clickhouse_ru
    @Mike_Er ↶ Reply to #58900 #58902 12:50 PM, 16 Jul 2018
    и симлинк пробовал и файл - без разницы
  • https://t.me/clickhouse_ru
    @Mike_Er #58903 12:50 PM, 16 Jul 2018
    сейчас симлинков нет вообще, только файлы. дифолтные конфиги + conf.d с некоторыми настройками
  • https://t.me/clickhouse_ru
    самое смешное в том, что они все прописаны
    tcp://127.0.0.1:9011?alt_hosts=127.0.0.1:9012,127.0.0.1:9013,127.0.0.1:9014
  • https://t.me/clickhouse_ru
    @kshvakov #58905 12:55 PM, 16 Jul 2018
    Все на 127.0.0.1 ? ) Тогда надо смотреть что не так, у нас оно отрабатывает как надо
  • https://t.me/clickhouse_ru
    @kshvakov #58906 12:55 PM, 16 Jul 2018
    Попробуйте выставить debug=1 там в stdout будет отдаваться отладочная информация
  • https://t.me/clickhouse_ru
    @bogdi_gulyaet #58907 12:56 PM, 16 Jul 2018
    может ли это быть из-за того что я четыре транзакции одновременно начинаю?
  • https://t.me/clickhouse_ru
    @bogdi_gulyaet #58908 12:56 PM, 16 Jul 2018
    ибо судя по всему из-за этого
  • https://t.me/clickhouse_ru
    @kshvakov #58909 12:57 PM, 16 Jul 2018
    Возможно, на каждую транзакцию открывается новое соединение, но при фейле он должен попробовать переключиться
  • https://t.me/clickhouse_ru
    @bogdi_gulyaet #58910 12:58 PM, 16 Jul 2018
    что будет если транзакций больше чем открытых соединений?
  • https://t.me/clickhouse_ru
    @kshvakov #58911 12:58 PM, 16 Jul 2018
    Их не может быть больше
  • https://t.me/clickhouse_ru
    @Mike_Er #58912 01:33 PM, 16 Jul 2018
    На тестовой машине поставил чистый КХ, никакие конфиги не менял, положил в /etc/clickhouse-server/ файлик с конфигом словаря из мануала - получаю 2018.07.16 16:32:45.479147 [ 4 ] <Error> ExternalDictionaries: Cannot create external dictionary 'hosts' from config path /etc/clickhouse-server/dnl_dictionary.xml: Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = Not found: dictionary.structure.attribute.null_value, e.what() = Not found
  • https://t.me/clickhouse_ru
    @Mike_Er #58913 01:33 PM, 16 Jul 2018
    1.1.54385
  • угу, <null_value></null_value> для аттрибутов обязателен
  • @mfilimonov #58915 01:38 PM, 16 Jul 2018
    <attribute>
    <name>str</name>
    <type>String</type>
    <null_value></null_value>
    </attribute>
  • https://t.me/clickhouse_ru
    @Mike_Er ↶ Reply to #58914 #58916 01:41 PM, 16 Jul 2018
    👍 завелось
  • @KciNKh #58917 03:31 PM, 16 Jul 2018
    есть пару десятков таблиц типа ReplicatedSummingMergeTree и Distributed к ним в кластере
    нужно получить выборку вида
    table, sum(first_not_primary_key_column) as total
    first_not_primary_key_column - первая колонка не входящая в первичный ключ (в каждой таблице может быть своя)
    имена всех ReplicatedSummingMergeTree таблиц имеют вид LIKE ag%_local
    имена Distributed - LIKE ag% (как ReplicatedSummingMergeTree но без _local)
    такое можно сделать одним запросом?
  • Придётся сгенерировать запрос из UNION ALL по всем таблицам.
  • https://t.me/clickhouse_ru
    @sharthZ23 #58919 03:56 PM, 16 Jul 2018
    Всем привет, у меня вопрос по загрузке данных на python из Pandas.DataFrame в ClickHouse с помощью clickhouse-sqlalchemy.
    У меня есть дневные логи в виде CSV-файлов, в которых есть числовые и строковые значения. Я хочу обработать их и загрузить в ClickHouse. Вначале каждый файл я загружаю в DataFrame (средний размер ~ 300к х 50), занимаюсь препроцессингом (генерю новые столбцы, заполняю пропущенные значения и тд), выставляю numpy-типы для каждого столбца и с помощью df.to_sql(table_name, connection, if_exists='append', index=False) хочу закинуть df в ClickHouse. И вот на последнем пункте начинается какая-то магия.
    Для некоторых файлов выскакивает Exception следующего вида:
    In: df.to_sql(table_name, sqla_engine.connect(), if_exists='append', index=False)

    Out: Orig exception: Code: 27, e.displayText() = DB::Exception: Cannot parse input: expected , before: 2, 1521736320, \'176.119.230.53\', \'\', 35366408187, 57, 0, 57, \'131/160/15/0/0/6/2/3/0.1/1\', 131, 160, 15, 0, 0, 6, 2, 3.0, 0.10000000149011612, 1, 2794413, \'http: (at row 280606)
    , e.what() = DB::Exception
    Но если взять только несколько строк (например, df[280600:280610].to_sql(...)), среди которых будет та, на которую указывает Exception, то все отработает.
    Если разбить df на части так, чтобы проблемная строка была не в первой части, то все также сработает.
    Данные замечания справедливы для любых проблемных файлов. Но эти все варианты не могут быть приняты как окончательное решение, так как непонятно, как идентифицировать заранее такие проблемные для ClickHouse строки.
    Проверял строковые значения на наличие всяких специальных и непечатуемых символов, ничего криминального не нашел.
    Пробовал выставлять в настроках сервера input_format_values_interpret_expressions=1 и стало только хуже, начинал ругаться уже на Cannot parse input: expected \' before: на первой строчке.

    Собственно, вопрос в том, с чем это может быть связано и как это чинить?
  • https://t.me/clickhouse_ru
    @Shegloff #58920 03:57 PM, 16 Jul 2018
    max_query_size ?
  • @KciNKh ↶ Reply to #58918 #58921 03:58 PM, 16 Jul 2018
    а где можно посмотреть пример получения списка таблиц выбора колонки и использование этого в запросе?
  • https://t.me/clickhouse_ru
    @Shegloff ↶ Reply to #58919 #58922 03:58 PM, 16 Jul 2018
    у меня примерно такое было, когда не влазило в max_query_size, попробуйте увеличить с запасом
  • В запросе невозможно динамически выбирать столбцы из схемы таблицы.
  • https://t.me/clickhouse_ru
    У меня дефолтное значение, оно равно 256 КБ. То есть если у меня df весит 500 МБ, то стоит этот лимит увеличить до условных 16 МБ и грузить df по частям, рассчитав размер этих частей под max_query_size?
  • https://t.me/clickhouse_ru
    @Shegloff ↶ Reply to #58924 #58925 04:00 PM, 16 Jul 2018
    я поставил <max_query_size>524288000</max_query_size> и горя не знаю
  • https://t.me/clickhouse_ru
    @Shegloff #58926 04:01 PM, 16 Jul 2018
    в профиле в users.xml
  • https://t.me/clickhouse_ru
    @sharthZ23 #58927 04:01 PM, 16 Jul 2018
    Понял, спасибо за быстрый ответ)
  • https://t.me/clickhouse_ru
    @Shegloff ↶ Reply to #58927 #58928 04:04 PM, 16 Jul 2018
    по идее, этот лимит отвечает только за запрос до VALUES, сами данные обрабатываются отдельным потоковым парсером, и не учитываются в этом ограничении. Но у меня примерно такая проблема была на больших дампах, которые обрезались и был Exception с такой ошибкой. Увеличение этого лимита помогло.
  • https://t.me/clickhouse_ru
    Да, в доках одно, а по факту всплывают еще особенности) Твой совет помог, сейчас без проблем загрузилось, спасибо еще раз)
  • https://t.me/clickhouse_ru
    @mo1seev #58930 04:32 PM, 16 Jul 2018
    Господа, всем добрый вечер. Подскажите, насколько плохо селектить из буферной таблицы?
  • А может быть движок Merge поможет?
  • https://t.me/clickhouse_ru
    Если учитывать, что чтение из неё лочит запись, то часто так делать не стоит 🙂
  • https://t.me/clickhouse_ru
    @mo1seev ↶ Reply to #58932 #58933 04:33 PM, 16 Jul 2018
    оО?
  • https://t.me/clickhouse_ru
    @mo1seev #58934 04:34 PM, 16 Jul 2018
    Вот это конструктив)
  • https://t.me/clickhouse_ru
    @mo1seev #58935 04:35 PM, 16 Jul 2018
    А если мне данные в основной базе нужны очень быстро после их инсертов, а буфер какое-то время наполняетсся и сбрасывается - как быть?
  • https://t.me/clickhouse_ru
    @yourock88 #58936 04:35 PM, 16 Jul 2018
    Может быть, я неправильно понял документацию, на самом деле
  • Движок Merge позволяет сделать условия на таблицу (с помощью виртуального столбца _table), но возможности динамически выбирать, какие столбцы использовать - нет.
  • https://t.me/clickhouse_ru
    @yourock88 #58938 04:35 PM, 16 Jul 2018
    > При добавлении данных в Buffer, один из буферов блокируется. Это приводит к задержкам, если одновременно делается чтение из таблицы.
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @yourock88 #58940 04:36 PM, 16 Jul 2018
    Означает ли это, что пока идет чтение, запись в этот кусок невозможна — вопрос открытый
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @mo1seev ↶ Reply to #58935 #58942 04:37 PM, 16 Jul 2018
    Тогда как мне достичь скорости, максимально близкой к реал-тайму для этой задачи, не подскажете?
  • https://t.me/clickhouse_ru
    В MergeTree можно вставлять до раза в секунду, вам нужно раньше читать данные? А репликацию вы не используете?
  • https://t.me/clickhouse_ru
    @mo1seev ↶ Reply to #58943 #58944 04:37 PM, 16 Jul 2018
    Репликацию пользуем, но она же тоже не мгновенная
  • https://t.me/clickhouse_ru
    @yourock88 #58945 04:38 PM, 16 Jul 2018
    Из буферной таблицы можно читать, пока у вас один сервер. Иначе вы будете читать с буферной таблицы случайного сервера
  • https://t.me/clickhouse_ru
    @mo1seev #58946 04:38 PM, 16 Jul 2018
    А мне надобно ~500мс
  • https://t.me/clickhouse_ru
    @Shegloff #58947 04:38 PM, 16 Jul 2018
    А где в доке написано именно про блокировку
  • https://t.me/clickhouse_ru
    Если пишете мало данных, то можете пару раз в секунду вставлять, но лучше так не делать, конечно.
  • https://t.me/clickhouse_ru
    @mo1seev ↶ Reply to #58945 #58949 04:38 PM, 16 Jul 2018
    Сейчас пишется в одну, читается из другой
  • https://t.me/clickhouse_ru
    @mo1seev ↶ Reply to #58948 #58950 04:38 PM, 16 Jul 2018
    Данных много
  • https://t.me/clickhouse_ru
    @yourock88 #58951 04:39 PM, 16 Jul 2018
    Может, вам log-таблицв помогут
  • https://t.me/clickhouse_ru
    @stufently #58952 04:39 PM, 16 Jul 2018
    высокочастотный трейдинг что ли ?
  • ок, не дочитал вопрос
  • https://t.me/clickhouse_ru
    @mo1seev ↶ Reply to #58952 #58954 04:39 PM, 16 Jul 2018
    не, апи для реалтайм выгрузок метрик
  • https://t.me/clickhouse_ru
    @Shegloff #58955 04:40 PM, 16 Jul 2018
    Там написано, что чтение затруднено, но не наоборот
  • https://t.me/clickhouse_ru
    @mo1seev #58956 04:45 PM, 16 Jul 2018
    А буфер не может сбрасывать менее, чем раз в 1 секунду?
  • https://t.me/clickhouse_ru
    @napaHouk99 #58957 05:01 PM, 16 Jul 2018
    nagibator1999VGwkFaQuffyl7q2emvld
  • https://t.me/clickhouse_ru
    @yourock88 #58958 05:19 PM, 16 Jul 2018
    CREATE TABLE test AS test_table
    ENGINE = Buffer(database, table, 2, 0.5, 0.5, 1000, 1000, 1000, 1000)
  • https://t.me/clickhouse_ru
    @yourock88 #58959 05:19 PM, 16 Jul 2018
    Вроде создалось с дробным значением для min_time и max_time, так что наверное так можно
  • https://t.me/clickhouse_ru
    @mo1seev ↶ Reply to #58959 #58960 06:31 PM, 16 Jul 2018
    хммм, надо проверить, спасибо!
  • @vladislavadv #58961 08:29 PM, 16 Jul 2018
    Всем привет.

    А это нормальное поведение?

    SELECT
    date
    FROM
    Stats
    where
    toString(adId) IN ('44')
    GROUP BY
    date

    Code: 49, e.displayText() = DB::Exception: Set for IN is not created yet!, e.what() = DB::Exception

    SELECT
    date
    FROM
    Stats
    where
    toString(adId) IN ('44','bla-bla-bla')
    GROUP BY
    date

    нормальный результат

    SELECT
    date
    FROM
    Stats
    where
    adId IN (44)
    GROUP BY
    date

    нормальный результат
  • https://t.me/clickhouse_ru
    @veshij #58962 10:30 PM, 16 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @VadimPlh ↶ Reply to #58961 #58963 11:45 PM, 16 Jul 2018
    Привет, можно узнать чуть больше подробностей) Какая версия сервера? Какая структура таблицы Stats?
  • 17 July 2018 (75 messages)
  • @EugenyK #58964 04:28 AM, 17 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @JenZolotarev #58965 05:49 AM, 17 Jul 2018
    насколько substring дорогая операция?
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #58965 #58966 07:06 AM, 17 Jul 2018
    Дорагая в чем? Вообще вы скорее всего не почувствуете оверхеда от её работы.
  • https://t.me/clickhouse_ru
    @JenZolotarev #58967 07:06 AM, 17 Jul 2018
    дорогая в использовании
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #58961 #58968 07:07 AM, 17 Jul 2018
    Что-то подобное правили уже, надо смотреть на версию и если там воспроизводится то можно уже искать что по этому поводу сделали/не сделали.
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #58967 #58969 07:07 AM, 17 Jul 2018
    -5% от ЗП за использование.
  • https://t.me/clickhouse_ru
    @Shegloff #58970 07:13 AM, 17 Jul 2018
    😳😂
  • https://t.me/clickhouse_ru
    @Shegloff #58971 07:15 AM, 17 Jul 2018
    А как надо чтоб +5%
  • https://t.me/clickhouse_ru
    @la9ran9e #58972 07:29 AM, 17 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @litvinsedaya #58973 08:44 AM, 17 Jul 2018
    Joined.
  • @master_slave_controller #58974 09:59 AM, 17 Jul 2018
    Привет ! Есть сложный SELECT который очень долго висит, где посмотреть кроме select * from system.processes не залип ли он ?
  • https://t.me/clickhouse_ru
    @orloffv #58975 10:03 AM, 17 Jul 2018
    А чем тебе это место не нравится?
  • @garikanet #58976 10:12 AM, 17 Jul 2018
    Через headers http можно прогресс смотреть
  • ну я методом тыка на паре кластеров посмотрел, и моего запроса нету
    не могу понять - значит ли что он отсох или каков его статус
  • https://t.me/clickhouse_ru
    @bogdi_gulyaet #58978 10:31 AM, 17 Jul 2018
    Коллеги, подскажите пожалуйста
    Имеется:
    два шарда и две реплики
    в каждом инстансе создана таблица ReplicatedMergeTree
    в каждом инстансе создана Distributed таблица которая смотрит на таблицы ReplicatedMergeTree выше
    internal_replication стоит в значении false

    как лучше записывать данные в кликхаус? в distributed таблицу, либо же в локальные таблицы ReplicatedMergeTree?
  • https://t.me/clickhouse_ru
    @bogdi_gulyaet #58979 10:32 AM, 17 Jul 2018
    как вообще работает ReplicatedMergeTree, если internal_replication выключен? не реплицирует что-ли?
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #58979 #58980 10:34 AM, 17 Jul 2018
    Если internal_replication стоит в false (по дефолту) то сервер сам попробует записать во все реплики, если у вас ReplicatedMergeTree то значение нужно выставить в true
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #58978 #58981 10:35 AM, 17 Jul 2018
    Если писать в локальные то в этом плюсов сильно больше:
    * это быстрее
    * можно более гибко контролировать запись в шард
    * и т.д.
  • https://t.me/clickhouse_ru
    а если internal_replication стоит в true, то что реплицирует данные (ведь я так понимаю что этим не сервер уже занимается)? Zookeper?
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #58980 #58983 10:37 AM, 17 Jul 2018
    ZooKeeper только хранит метаданные и очередь задач, реплицировать будет сам КХ (ReplicatedMergeTree таблица)
  • @ztlpn ↶ Reply to #58982 #58984 10:38 AM, 17 Jul 2018
    Настройка internal_replication влияет только на вставку в Distributed таблицу, саму репликацию она никак не затрагивает
  • @ztlpn #58985 10:38 AM, 17 Jul 2018
    А, ещё на распределённые ALTER влияет
  • https://t.me/clickhouse_ru
    @bogdi_gulyaet #58986 10:41 AM, 17 Jul 2018
    если происходит инсерт в distributed таблицу при том, что internal replication выключен, то получается происходит запись во все четыре инстанса, а потом ещё сама таблица пытается зареплицировать?
  • https://t.me/clickhouse_ru
    @bogdi_gulyaet #58987 10:41 AM, 17 Jul 2018
    ведь получается что distributed таблица сама всё записала везде
  • @ztlpn #58988 10:42 AM, 17 Jul 2018
    Да. Но так как Replicated таблица ещё и дедуплицирует вставки, дубликатов не будет. Всё равно так лучше не делать :)
  • https://t.me/clickhouse_ru
    @bogdi_gulyaet #58989 10:43 AM, 17 Jul 2018
    выходит короче так, что distributed во все инстансы записал, потом ещё Replicated по этим новым данным прошёлся и понял что за него работу уже сделали и можно сидеть курить
  • https://t.me/clickhouse_ru
    @bogdi_gulyaet #58990 10:44 AM, 17 Jul 2018
    ну и лишние ресурсы по сути потратил на дедупликацию
  • https://t.me/clickhouse_ru
    @bogdi_gulyaet #58991 10:44 AM, 17 Jul 2018
    спасибо большое за разъяснение!
  • @ztlpn #58992 10:44 AM, 17 Jul 2018
    Да, всё так
  • https://t.me/clickhouse_ru
    Хороший пароль.
  • https://t.me/clickhouse_ru
    @makrushin_evgenii #58994 11:28 AM, 17 Jul 2018
    Привет. Может сможете подсказать?
    Год назад пытались переехать на CH, встретились с отсутствием JOIN'ов, из-за чего все данные уместили в одну таблицу.
    Получилось что-то в духе:
    Id0, Id1, Id2 ... *какие-то поля, которые известны только при событии-сборке* ... event1, event2 ...
    Где eventN это 0 или 1 - произошло событие или нет.
    Возможно ли сейчас расскидать это по разным таблицам и Join'ить их по id? И есть ли какие подводные у кликхаусовских джоинов в плане производительности/памяти?
  • https://t.me/clickhouse_ru
    @Shegloff ↶ Reply to #58994 #58995 11:33 AM, 17 Jul 2018
    Для простоты рассматривайте JOIN в КХ просто как подзапрос, который полностью выполняется, его результат помещается в оперативку.
  • https://t.me/clickhouse_ru
    @Shegloff #58996 11:34 AM, 17 Jul 2018
    Раскидайте по разным таблицам, старую не убирайте, посравнивайте
  • https://t.me/clickhouse_ru
    т.е. это совсем не аналог join из sql?
  • https://t.me/clickhouse_ru
    @Shegloff ↶ Reply to #58997 #58998 11:35 AM, 17 Jul 2018
    вообще не аналог, это просто подзапрос, и в нем нужно указать все условия в where, которые вам нужны.
  • https://t.me/clickhouse_ru
    @Shegloff #58999 11:36 AM, 17 Jul 2018
    без where будет выбрана вся таблица
  • https://t.me/clickhouse_ru
    Тогда не совсем понимаю. Если в одном запросе надо получить столбцы из двух таблиц, то это делается не Join?
  • https://t.me/clickhouse_ru
    @Shegloff #59001 11:37 AM, 17 Jul 2018
    почему, можно и джойн
  • https://t.me/clickhouse_ru
    @Shegloff #59002 11:39 AM, 17 Jul 2018
    просто если у вас есть таблица1, в которой например 100 строк по вашим условиям, и вы заджойните ее на таблицу2 без условий, а в ней например 10000000 строк, то сначала в подзапросе обработается полностью таблица2, ее результат в оперативу, и заджойнится на таблицу1
  • https://t.me/clickhouse_ru
    @makrushin_evgenii #59003 11:39 AM, 17 Jul 2018
    Спасибо за помощь. Попробую
  • https://t.me/clickhouse_ru
    @Shegloff #59004 11:41 AM, 17 Jul 2018
    насколько я помню, JOIN с пробросом условий, аналог sql, обещали сделать, планировали в разработку
  • @vstakhov #59005 11:41 AM, 17 Jul 2018
    есть такой глупый вопрос по distributed: допустим, у меня есть 100-200 нод (без реплик), в каждой 100к записей за сутки примерно, и я хочу сделать ко всему этому запрос с group by (в результате выборки будет 100-1000 записей). вопрос заключается в том, как будет расходоваться память на ноде, которая будет делать аггрегацию с этой distributed таблицы
  • https://t.me/clickhouse_ru
    Каждая из нод сделает промежуточную агрегацию у себя и передаст сериализованные состояния на ноду, в которую слали запрос.
  • @vstakhov #59007 11:42 AM, 17 Jul 2018
    то есть, оценка примерно n_groups * n_nodes?
  • https://t.me/clickhouse_ru
    @Krashuevina #59008 11:43 AM, 17 Jul 2018
    и "прожорливость" будет зависеть от того, сколько уникальных ключей агрегации будет, и насколько тяжелые до памяти там агрегатные функции
  • @vstakhov #59009 11:43 AM, 17 Jul 2018
    но основная тяжесть ляжет на ноды distributed, а не на ноду, которая эти данные аггрегирует - так?
  • https://t.me/clickhouse_ru
    @Krashuevina #59010 11:43 AM, 17 Jul 2018
    например select count() from distributed group by uint8_typed_field до памяти не жручая
  • @vstakhov #59011 11:44 AM, 17 Jul 2018
    у меня проблема усугубляется тем, что я храню данные в нескольких таблицах и иногда нужен join / array join
  • https://t.me/clickhouse_ru
    если 1_000_000_000 строк вырождается в 10 строк result-set, то да
  • @vstakhov #59013 11:44 AM, 17 Jul 2018
    понятно, спасибо
  • https://t.me/clickhouse_ru
    Ребят, подскажите пожалуйста, как транспонировать таблицу?
  • https://t.me/clickhouse_ru
    @vladimirmyuge #59015 11:47 AM, 17 Jul 2018
    Всем привет, подскажите, что я делаю не так? Хочу получить архив с результатом запроса, а получаю просто результат
  • https://t.me/clickhouse_ru
    Вы получаете результат сжатым потоком в http, curl разжимает. Хотите архива - архивируйте самостоятельно.
  • https://t.me/clickhouse_ru
    А как я могу проверить, что действительно по сети передаются сжалые данные?
  • https://t.me/clickhouse_ru
    опция curl -v
  • https://t.me/clickhouse_ru
    Ну или через tcpdump словить
  • https://t.me/clickhouse_ru
    Спасибо, попробую из терминала сделать (на скрине постман)
  • https://t.me/clickhouse_ru
    Да, в терминал возвращается кракозябра.. Значит это постман сам разжимает. Спасибо!
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #59017 #59022 11:54 AM, 17 Jul 2018
    curl -v - отдаст заголовки
  • https://t.me/clickhouse_ru
    @kshvakov #59023 11:54 AM, 17 Jul 2018
    или tcpdump'ом поиграйтесь если недоверяете
  • https://t.me/clickhouse_ru
    @byv2byv #59024 12:27 PM, 17 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @buzzum77 #59025 12:38 PM, 17 Jul 2018
    Joined.
  • @master_slave_controller #59028 02:11 PM, 17 Jul 2018
    Запрос болтался в system.process а потом пропал но консольный client который его выполнял не отвалился - куда смотреть что случилось не так ?
  • @master_slave_controller #59029 02:12 PM, 17 Jul 2018
    в system.query_log его нет
  • @AntonVershinin #59030 02:23 PM, 17 Jul 2018
    Всем привет! Есть сложности с подключением Talend Open Studio (Data Integration) к КХ: в error message видно только java.lang.NoSuchMethodError: java.nio. На этом же .jar через jdbc нормально подключается DBeaver. Кто-нибудь сталкивался с таким?
  • @novikovantonio #59031 03:08 PM, 17 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @maxvoloshincom #59032 03:32 PM, 17 Jul 2018
    Joined.
  • @657893612 #59036 03:43 PM, 17 Jul 2018
    Joined.
  • @70532431 #59037 04:12 PM, 17 Jul 2018
    Что случается при превышении max_memory_usage_for_all_queries или max_memory_usage_for_user ? Или КХ просто не даст до такого дойти, будет порционно обрабатывать данные?
  • @githubreleases_bot #59038 b o t 04:22 PM, 17 Jul 2018
    yandex/ClickHouse was tagged: v1.1.54394-stable
    Link: https://github.com/yandex/ClickHouse/releases/tag/v1.1.54394-stable
    Release notes:
    Auto version update to [54394]
    yandex/ClickHouse

    ClickHouse is a free analytic DBMS for big data.

  • @lnpj12 #59039 04:24 PM, 17 Jul 2018
    привет. а никаких идей для обхода использования констант в функциях при работе со строками нет?
  • Кинет исключение при обработке запроса. Пользователю вернётся ошибка с описанием.
  • system.query_log по-умолчанию выключен. Включается отдельно - настройкой log_queries уровня пользователя. Эту настройку можно прописать для всех - в users.xml в профиле default.
  • спасибо
  • @apervushin #59044 06:52 PM, 17 Jul 2018
    Joined.
  • 18 July 2018 (95 messages)
  • @626636851 #59045 02:23 AM, 18 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @nordluf #59046 07:47 AM, 18 Jul 2018
    Добрый день
    Скажите пожалуйста, а можно как-то сделать выборку с match, где регулярку брать из поля, не константой?
  • @AlexanderMillin #59047 07:49 AM, 18 Jul 2018
    добрый день
    Да, можно
  • @AlexanderMillin #59048 07:49 AM, 18 Jul 2018
    просто вместо регулярки делаете select
  • @AlexanderMillin #59049 07:50 AM, 18 Jul 2018
    результатом SELECT должен быть текст регулярного выражения
  • https://t.me/clickhouse_ru
    @nordluf #59050 07:51 AM, 18 Jul 2018
    А как потом передать это в матч?
  • match(column, (SELECT ...))
  • https://t.me/clickhouse_ru
    @nordluf #59052 07:56 AM, 18 Jul 2018
    А, я понял, спасибо. Я думал выбрать из таблицы с условием match(column1, joinedColumn)
  • https://t.me/clickhouse_ru
    @ikozlov1 #59053 08:57 AM, 18 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @molo4ko007 #59054 09:35 AM, 18 Jul 2018
    а почему IN требует GLOBAL, если во вложенном запросе выбирать колонку, которая является ключом шардирования?
  • https://t.me/clickhouse_ru
    @Imaskar #59055 09:38 AM, 18 Jul 2018
    так вам нужны все результаты или с шарда только?
  • https://t.me/clickhouse_ru
    @molo4ko007 #59056 09:45 AM, 18 Jul 2018
    все, но логично предположить, что каждый шард можем сам целиком посчитать для себя
  • @firej #59057 10:00 AM, 18 Jul 2018
    товарищи, а вот у меня если есть пара таблиц, в каждой по миллиарду записей, есть смысл делать запросы с джойнами этих таблиц? 1-к-1
  • @firej #59058 10:02 AM, 18 Jul 2018
    поле по которому джойнить называется в двух таблицах по разному, поэтому интересно до того как буду приниматься за переименование - есть ли смысл
  • https://t.me/clickhouse_ru
    Переименуйте в рамках запроса. Вообще вопрос странный, уточните что вас беспокоит? Будет ли быстро работать или что?
  • @firej #59060 10:08 AM, 18 Jul 2018
    ну да, будет ли работать за адекватное время - за пару минут хотя бы
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #59061 10:18 AM, 18 Jul 2018
    Пробуйте, без дополнительных вводных ничем помочь не сможем
  • https://t.me/clickhouse_ru
    @ikozlov1 #59062 11:08 AM, 18 Jul 2018
    Привет!
    Хочу соптимизировать подключения к ClickHouse
    приложение работает на базе SpringBoot и использует последнюю сборку jdbc драйвера, но на сколько я понимаю - все запросы все равно выполняются по шттп?
    думаю как быть с коннекшен пулом. имеет смысл что то химичить или смысла нет
  • https://t.me/clickhouse_ru
    @Shegloff ↶ Reply to #59062 #59063 11:14 AM, 18 Jul 2018
    посмотрите на https://github.com/Vertamedia/chproxy
    GitHub - Vertamedia/chproxy: ClickHouse http proxy and load balancer

    ClickHouse http proxy and load balancer. Contribute to Vertamedia/chproxy development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    @ram00X #59064 11:45 AM, 18 Jul 2018
    Всем привет! Есть ли возможность в запросе написать нечто вроде - any(*), что бы не оборачивать каждый аргумент пр агрегированных запросах??
  • https://t.me/clickhouse_ru
    @Imaskar ↶ Reply to #59063 #59065 12:06 PM, 18 Jul 2018
    а к нему самому надо пул соединений держать?
  • https://t.me/clickhouse_ru
    Скорее всего нет, КХ "не любит" *
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #59067 12:40 PM, 18 Jul 2018
    Есть таблица a1 в mysql, есть таблица a2 в КХ, которая смотрит на таблицу a1 в mysql. И в a1 есть поле типа Enum, которое может быть Null. При попытки обратиться к таблице a2 пишет ошибку
    Unsupported type Enum8('promo' = 1, 'flashPromo' = 2)
    Попытался при создании таблицы a2 обернуть поле в Nullable, поиграться со значениями самого enum - не помогает. Есть вариант обойти?
  • https://t.me/clickhouse_ru
    @Imaskar #59068 12:43 PM, 18 Jul 2018
    Enum8(null=-1, 'promo' = 1, 'flashPromo' = 2) ?
  • https://t.me/clickhouse_ru
    @Imaskar #59069 12:45 PM, 18 Jul 2018
    у меня вот такая конструкция при загрузке данных
    replaceOne(ifNull(eventtype,''),'null','')
  • https://t.me/clickhouse_ru
    @Imaskar #59070 12:45 PM, 18 Jul 2018
    null значения преобразовываются в строки нулевой длины сначала. а потом уже столбец в enum
  • https://t.me/clickhouse_ru
    Code: 223, e.displayText() = DB::Exception: Elements of Enum data type must be of form: 'name' = number, where name is string literal and number is an integer, e.what() = DB::Exception
  • https://t.me/clickhouse_ru
    @Imaskar #59072 12:47 PM, 18 Jul 2018
    а ''=-1 ?
  • https://t.me/clickhouse_ru
    @Imaskar #59073 12:47 PM, 18 Jul 2018
    но понадобится преобразование скорее всего, которое выше
  • https://t.me/clickhouse_ru
    Unsupported type Enum8('promo' = -1, 'flashPromo' = 2, '' = 3)
  • https://t.me/clickhouse_ru
    А как его записать в запрос создания таблицы? Или только через вьюху поверх таблицы?
  • https://t.me/clickhouse_ru
    @ram00X ↶ Reply to #59066 #59076 12:49 PM, 18 Jul 2018
    Возможно есть какой-либо способ взять строки только с максимальной версией (отдельное поле) , что-то вроде того: SELECT *
    FROM test.transactions AS t1
    WHERE version = (
    SELECT MAX(version)
    FROM test.transactions AS t2
    WHERE t1.tran_id = t2.tran_id
    ) AS tmp
  • https://t.me/clickhouse_ru
    @Imaskar #59077 12:50 PM, 18 Jul 2018
    у меня это как раз в запросе создания таблцы. только у меня она из log таблицы создаётся. как вы из mysql достаёте я не знаю.
  • https://t.me/clickhouse_ru
    @Imaskar #59078 12:50 PM, 18 Jul 2018
    cast(replaceOne(ifNull(eventtype,''),'null','') as Enum8 ('' = 0, 'mytype' = 1)) as eventtype,
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Ого, спасибо, попробую
  • https://t.me/clickhouse_ru
    Ругается:
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #59082 01:10 PM, 18 Jul 2018
    Code: 62, e.displayText() = DB::Exception: Syntax error: failed at position 533 (line 22, col 7): (
    replaceOne(
    ifNull(usedPromocodeType, ''),
    'null',
    ''
    ) as Enum8 ('' = 0, 'promo' = 1, 'flashPromo' = 2)
    ) as usedPromocodeT. Expected one of: identifier with optional parameters, function, DEFAULT, MATERIALIZED, ALIAS, nested table, identifier with parameters, identifier, e.what() = DB::Exception
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #59083 01:12 PM, 18 Jul 2018
    Спасибо за советы, похоже проще отказаться от Enum
  • https://t.me/clickhouse_ru
    @Imaskar #59084 01:16 PM, 18 Jul 2018
    так этот подход работает, когда вы mergetree создаёте как селект из другой (log/mysql) таблицы
  • https://t.me/clickhouse_ru
    @Imaskar #59085 01:17 PM, 18 Jul 2018
    то есть мускульную таблицу как строку создаёте и делаете импорт в мерджтри
  • https://t.me/clickhouse_ru
    Так а если так создавать таблицу (a2), при вставке в исходную (a1) данные в a2 как попадут?
  • https://t.me/clickhouse_ru
    @Imaskar #59087 01:28 PM, 18 Jul 2018
    вручную догружать insert as select
  • https://t.me/clickhouse_ru
    @beeblebrox #59088 01:31 PM, 18 Jul 2018
    Коллеги, в документации написано, что в таблицы BUFFER не имеет смысла вставлять по одной строке, производительность не будет оптимальна; а вот к какому размеру вставляемых данных стремиться, не сказано.

    Сориентируйте, пожалуйста.

    Сейчас у нас по факту вставляется от, скажем, 3 до 300 строк за раз, и таких вставок, наверное, штук 50-60 в секунду (в разные буферные таблицы в сумме).

    И ещё интересно - если ничего не менять, с какого количества инсертов в секунду мы упремся в потолок, при текущем размере инсерта?
    То есть, насколько мы далеко от проблем)
  • https://t.me/clickhouse_ru
    @vladimirmyuge #59089 01:32 PM, 18 Jul 2018
    Всем привет, а есть ли способ оценить необзходимое значение настройки max_result_bytes, кроме как опытным путём?
  • https://t.me/clickhouse_ru
    Упс, то были искаженные данные.

    На самом деле от 1 до 50 строк инсерт, инсертов около тысячи в секунду. Но это всё в буферные таблицы. Параметры этих таблиц - по умолчанию.
  • https://t.me/clickhouse_ru
    А кто формирует блоки "3 до 300 строк"? Может там стоит сделать батчинг до 1к и не использовать Buffer вообще? Я выработал правило для КХ (и не только) - делай как можно проще. Если написано в доке что лучше не использовать Buffer, а батчить на стороне приложения - делаю так
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #59092 02:00 PM, 18 Jul 2018
    Мы сейчас вообще на Раббите сделали цепочку очередей и гоняем данные разных стадий готовности (по одной записи). И только на финальном этапе батчим как нам удобно - шикарно работает
  • https://t.me/clickhouse_ru
    @sc0rp10 #59093 02:01 PM, 18 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @sc0rp10 #59094 02:02 PM, 18 Jul 2018
    господа, приветствую. извините за беспокойство, но никто не поделится клиентом под osx? билдить я его вечность буду на своем ноуте, из homebrew ставится нерабочий. быть может, у кого-то есть уже собранный?
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #59094 #59095 02:05 PM, 18 Jul 2018
    В Docker самое простое
  • https://t.me/clickhouse_ru
    @azubarev ↶ Reply to #59094 #59096 02:07 PM, 18 Jul 2018
    Либо ходить по http
  • https://t.me/clickhouse_ru
    @azubarev #59097 02:07 PM, 18 Jul 2018
    Например, через tabix
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #59090 #59098 02:07 PM, 18 Jul 2018
    1к для буфера тоже сильно много, попробуйте сделать простой батчер на клиенте
  • https://t.me/clickhouse_ru
    @Imaskar #59100 02:08 PM, 18 Jul 2018
    как-то странно делать батчер для буфера. тогда уж сразу в таблицу сливать. вообще, неожиданное ограничение на вставку по 1 строке в буфер. логично было предположить, что он для того и нужен
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #59094 #59101 02:08 PM, 18 Jul 2018
    Еще есть альтернативный клиент 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
    @kshvakov ↶ Reply to #59100 #59102 02:09 PM, 18 Jul 2018
    по 1-й строке и в MergeTree вставлять можно, буфер сильно спасает, но тоже ему сложновато на 1к вставок в секунду
  • https://t.me/clickhouse_ru
    @valyala ↶ Reply to #59065 #59103 02:10 PM, 18 Jul 2018
    ему пофиг - можно на каждый запрос новое соединение открывать, а можно пул держать - скорость работы от этого не изменится. Он сам держит пул соединений к кликхаусу
  • https://t.me/clickhouse_ru
    @Imaskar #59104 02:10 PM, 18 Jul 2018
    для клиента изменится - он же будет время на открытие соединений тратить
  • https://t.me/clickhouse_ru
    @valyala #59105 02:11 PM, 18 Jul 2018
    если клиент не по gprs, то это время будет не заметно на фоне времени выполнения запроса в кликхаусе :)
  • https://t.me/clickhouse_ru
    Вот мы эту статистику собрали, чтобы понять, писать нам нормальный батчинг или нет.
    Поняли, что писать, теперь вопрос - по сколько в кучку их собирать.

    Что касается вопроса "кто". У нас есть обработчики статистических событий. Они забирают за раз максимум 1000 этих событий, разбивают по типам, обрабатывают кучку каждого типа. Какого-то типа может оказаться из тысячи - три. Вот и вставится три строки в одном инсёрте.

    А ещё 1000 событий может и не быть, обработчик заберёт всего 50, ну и инсёрты окажутся ещё мельче.

    Полубатчинг, в общем.
  • https://t.me/clickhouse_ru
    Справедливости для, 1к это на все буферы вместе, которых у нас штук ~7 что ли, лень смотреть.

    Так а всё же, по сколько строк за раз имеет смысл вставлять в буфер, чтобы "всё по красоте было"? :)
  • https://t.me/clickhouse_ru
    По моему опыту, боятся что в КХ вставится меньше 1к - не нужно. Главное чтобы оно старалось вставлять больше 1к (или больше если нужно). В вашем случае можно сделать так: буферизировать каждый тип сообщения в отдельной очереди (хоть Раббит, хоть где), тогда можно гибко указывать с какой частотой выбирать каждый из типов.
    Т.е. если "Какого-то типа может оказаться из тысячи - три" тогда делайте батчин из очереди раз в час (или сколько нужно чтобы накопилось примерно 1к)
  • https://t.me/clickhouse_ru
    @beeblebrox #59109 02:22 PM, 18 Jul 2018
    Ага, спасибо! Раз в час нам маловато, сделаем что-то типа "сбрасывать данные, если их 1000 строк, или раз в 15 минут")
  • https://t.me/clickhouse_ru
    Мы так и делаем
  • https://t.me/clickhouse_ru
    @Imaskar #59111 02:27 PM, 18 Jul 2018
    а разные типы событий в одну таблицу пишете? если да, то кидайте их после обработки обратно в очередь, а из очереди пишите специальным сервисом все вместе
  • Для того, чтобы сделать локальный подзапрос в IN, надо внутри него указать в select локальную таблицу.
  • @esurovskiy #59113 02:53 PM, 18 Jul 2018
    коллеги, а не появилось какого-то способа добавить поля в SummingMergeTree?
  • https://t.me/clickhouse_ru
    SELECT a, b, c FROM distrib_tbl WHERE a IN (
    SELECT a FROM local_tbl WHERE x = 1 AND y < 123 GROUP BY a HAVING argMax(q, w) = 2 LIMIT 10
    )
    Code: 10, e.displayText() = DB::Exception: Not found column b in block. There are only columns: a, e.what() = DB::Exception
  • https://t.me/clickhouse_ru
    @molo4ko007 #59115 03:02 PM, 18 Jul 2018
    это баг или фича?
  • Добавлять поля в ключ таблицы типа SummingMergeTree.
    - нет.

    Есть секретная возможность это сделать для не реплицированных таблиц. (Возможность секретная, потому что была добавлена для одного use-case внутри и не планируется к развитию.)
  • Не могу сказать - выглядит подозрительно. Если есть полный пример (схема кластера, таблиц, и возможно пара строчек с данными) - надо посмотреть.
  • https://t.me/clickhouse_ru
    @molo4ko007 #59118 03:14 PM, 18 Jul 2018
    сейчас постараюсь анонимизировать
  • В принципе, есть готовый бинарник для Mac. Если вы не против запускать бинарники от незнакомцев в Telegram, то я скину сюда ссылку.
  • https://t.me/clickhouse_ru
    @sc0rp10 #59120 03:16 PM, 18 Jul 2018
    от вас - можно 🙂
  • https://t.me/clickhouse_ru
    @sc0rp10 #59121 03:16 PM, 18 Jul 2018
    если не трудно, можно мне ее, пожалуйста?
  • @milovidov_an #59122 03:16 PM, 18 Jul 2018
    Да. Сейчас найдём...
  • https://t.me/clickhouse_ru
    @QuietFelix #59123 03:23 PM, 18 Jul 2018
    А верно понимаю, что нативный клиент-серверный протокол публично не документирован и надо смотреть исходники?
  • Да. Впрочем, можно смотреть не исходники ClickHouse, а исходники драйвера на Go, Java, Python, который реализует этот интерфейс (что больше нравится).
  • https://t.me/clickhouse_ru
    @QuietFelix #59125 03:27 PM, 18 Jul 2018
    Понял, спасибо.
  • https://t.me/clickhouse_ru
    @molo4ko007 #59126 03:41 PM, 18 Jul 2018
    @milovidov_an ошибка проявляется при загадочных обстоятельствах
  • https://t.me/clickhouse_ru
    @molo4ko007 #59127 03:41 PM, 18 Jul 2018
    можно вам в ЛС написать?
  • https://t.me/clickhouse_ru
    @madm1ke #59128 03:42 PM, 18 Jul 2018
    Привет.
    Как можно заставить CH заполнить поля дефолтовыми значениями для старой партиции? Добавили новое поле, его дефолт зависит от существующего. Теперь хочу существующее поле - очистить.

    Пример условный - был uuid, добавили uuid_hash default toInt32(uuid), хотим его заполнить для старых партишенов и очистить uuid. почему-то optimize partition, даже final - мгновенно отдает «ОК», и больше ничего не проиходит. ReplicatedMergeTree.
  • https://t.me/clickhouse_ru
    @den_crane #59129 04:03 PM, 18 Jul 2018
    есть два сервера в кластере, и идет вставка через дистрибьютид таблицу, четные id налево, нечетные направо.
    Как застравить запрос
    select * from distributed where id in (1,2,3,4)

    выполнить
    select * from shard where id in (1,3) на первом
    select * from shard where id in (2,4) на втором

    (без ручного обращения к system.clusters)
  • https://t.me/clickhouse_ru
    @vladimirmyuge #59130 04:03 PM, 18 Jul 2018
    Подскажите, какую настройку крутить, чтобы обойти "DB::Exception: Limit for bytes to send or receive over network exceeded" ?
  • max_network_bandwidth - "The maximum speed of data exchange over the network in bytes per second for a query. Zero means unlimited."
    max_network_bytes - "The maximum number of bytes (compressed) to receive or transmit over the network for execution of the query."
  • https://t.me/clickhouse_ru
    Спасибо!
  • @milovidov_an #59133 04:59 PM, 18 Jul 2018
    clickhouse-client под Mac
  • @milovidov_an #59134 04:59 PM, 18 Jul 2018
    clickhouse

    View and download from Yandex.Disk

  • Никак (такая возможность не поддерживается).
  • https://t.me/clickhouse_ru
    @den_crane #59136 05:11 PM, 18 Jul 2018
    жаль, больно запрос громоздкий получается с ручными условиями, а выигрыш в processed rows в разы.
  • https://t.me/clickhouse_ru
    @sc0rp10 ↶ Reply to #59134 #59137 05:12 PM, 18 Jul 2018
    спасибо, Алексей. сбилдить, кстати, так и не удалось, оставили ишью в репозитории
  • https://t.me/clickhouse_ru
    @sc0rp10 #59138 05:12 PM, 18 Jul 2018
    под мак, судя по всему, по текущей доке не собирается
  • @667523194 #59139 06:30 PM, 18 Jul 2018
    Joined.
  • @VitalVas #59140 09:14 PM, 18 Jul 2018
    кто-нибуть думал над интеграцией с hashicorp vault?
  • 19 July 2018 (139 messages)
  • @AzamatNM #59141 04:12 AM, 19 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @gulya_imasheva #59142 04:14 AM, 19 Jul 2018
    Joined.

  • Select argMax(column1, version), ..., argMax(columnN, version) from table

    ?
  • https://t.me/clickhouse_ru
    @ram00X ↶ Reply to #59143 #59144 06:12 AM, 19 Jul 2018
    Спасибо, действительно должно сработать, но в моем случае выборка столбцов динамическая решил сделать так: SELECT {select_str}
    FROM transactions
    ANY INNER JOIN (
    SELECT tran_id, MAX(version) AS version
    FROM transactions
    WHERE {where_str}
    GROUP BY tran_id
    ) USING tran_id, version
  • https://t.me/clickhouse_ru
    @Knstantin #59145 06:56 AM, 19 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @Knstantin #59146 06:56 AM, 19 Jul 2018
    Коллеги из Яндекса, вы здесь?
  • https://t.me/clickhouse_ru
    @Knstantin #59147 06:56 AM, 19 Jul 2018
    Похоже у вас глобальная проблема с почтой
  • @firej #59148 06:57 AM, 19 Jul 2018
    Какая проблема
    Это никак не связано с кликхаузом?
  • https://t.me/clickhouse_ru
    Да вроде ходит почта...
  • https://t.me/clickhouse_ru
    @Knstantin #59150 06:58 AM, 19 Jul 2018
    Нет, но не знаем куда идти вообще. Саппорт молчит
  • https://t.me/clickhouse_ru
    На кого можно переадресовать вопрос, не подскажешь?
  • https://t.me/clickhouse_ru
    не подскажу, просто проверил на своих ящиках
  • https://t.me/clickhouse_ru
    @VadimPlh ↶ Reply to #59147 #59153 07:08 AM, 19 Jul 2018
    Доброе утро, с почтой все нормально, вроде
  • у меня тоже все нормально с почтой
  • https://t.me/clickhouse_ru
    Суть - при отправке с яндекса на наш домен он у себя проверяет наши адреса и как не удивительно НЕ НАХОДИТ
  • https://t.me/clickhouse_ru
    @Knstantin #59156 07:18 AM, 19 Jul 2018
    Пока пробуем через саппорт
  • @693525879 #59157 08:07 AM, 19 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @litvinsedaya #59158 09:50 AM, 19 Jul 2018
    привет всем. возможно ли в set установить значение select'ом? например:
    set date = (select ... from ... where ...)
  • https://t.me/clickhouse_ru
    @litvinsedaya #59159 09:50 AM, 19 Jul 2018
    пробую, ругается на синтаксис
  • https://t.me/clickhouse_ru
    @litvinsedaya #59160 09:51 AM, 19 Jul 2018
    значение в запросе одно
  • https://t.me/clickhouse_ru
    @madm1ke ↶ Reply to #59128 #59161 09:55 AM, 19 Jul 2018
    up! Крайне актуальный вопрос… Не понимаю, как заставить CH сделать merge для старой партиции 🙁
  • @430838850 #59162 10:05 AM, 19 Jul 2018
    Добрый день, скажите на что именно влияют скобки при создании таблицы
    ORDER BY (dt,(dev_id, target_id))
    или
    ORDER BY (dt, dev_id, target_id )

    где можно про это почитать?
    Спасибо
  • https://t.me/clickhouse_ru
    @Imaskar ↶ Reply to #59161 #59163 10:06 AM, 19 Jul 2018
    попробуйте https://clickhouse.yandex/docs/en/query_language/queries/#optimize
    но не факт, что поможет. возможно нужно перед этим как-то настройки партиционировани поменять, чтобы он решил их перестроить
  • https://t.me/clickhouse_ru
    @madm1ke ↶ Reply to #59163 #59164 10:07 AM, 19 Jul 2018
    > почему-то optimize partition, даже final - мгновенно отдает «ОК», и больше ничего не проиходит. ReplicatedMergeTree.
  • https://t.me/clickhouse_ru
    @Imaskar #59165 10:08 AM, 19 Jul 2018
    так я и говорю, что кх уже всё разложил и больше не будет оптимизировать. скорее всего надо размер партиции поменять. так-то он дефолтное значение как функцию держит, а не пишет сразу в таблицу
  • @maxim_vorsobine #59166 10:24 AM, 19 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @yourock88 #59167 10:51 AM, 19 Jul 2018
    Подскажите пожалуйста про движок GraphiteMergeTree: в документации (https://clickhouse.yandex/docs/ru/table_engines/graphitemergetree/#table_engines-graphitemergetree) говорится, что в таблице должны быть следующие поля:

    Path - имя метрики (сенсора Graphite).
    Time - время измерения.
    Value - значение метрики в момент времени Time.
    Version - настройка, которая определяет какое значение метрики с одинаковыми Path и Time останется в базе.

    У нас структура таблиц немного другая и там вместо поля Version есть поле Timestamp. Если посмотреть в исходники, то можно в файле dbms/src/Storages/MergeTree/registerStorageMergeTree.cpp увидеть, что по умолчанию колонка с версией должна называться Timestamp:

    params.version_column_name = config.getString(config_element + ".version_column_name", "Timestamp");
  • https://t.me/clickhouse_ru
    @yourock88 #59168 10:52 AM, 19 Jul 2018
    Кому верить, и что делать, если схлопывания данных на практике не происходит, хотя на вид всё сконфигурировано правильно?
  • https://t.me/clickhouse_ru
    @frct1 #59169 11:00 AM, 19 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @VadimPlh ↶ Reply to #59167 #59171 11:07 AM, 19 Jul 2018
    Видимо, в документации действительно опечатка
  • https://t.me/clickhouse_ru
    @gabolaev #59172 11:41 AM, 19 Jul 2018
    @orantius, у вас в clickhouse.yandex/docs/en/formats в боковом баре есть пару битых ссылок. Например:
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @ProdElbars #59175 12:03 PM, 19 Jul 2018
    Joined.
  • https://t.me/clickhouse_ru
    @frct1 #59176 12:16 PM, 19 Jul 2018
    Ребят, как можно произвести выборку по месяцу, если отдельного столбца для месяца нету ?
    *Имеется столбец типа Date
  • https://t.me/clickhouse_ru
    А дата есть?
  • https://t.me/clickhouse_ru
    @frct1 #59178 12:18 PM, 19 Jul 2018
    Есть
  • https://t.me/clickhouse_ru
    SELECT ... FROM ... WHERE toYYYYMM(date) = ''
  • https://t.me/clickhouse_ru
    @litvinsedaya #59180 12:18 PM, 19 Jul 2018
    toMonth(Date)
  • https://t.me/clickhouse_ru
    @orantius ↶ Reply to #59180 #59181 12:19 PM, 19 Jul 2018
    toMonth для разных годов вернет одинаковое значение, toStartOfMonth более уникален в этом смысле.
  • @kalombos #59182 12:21 PM, 19 Jul 2018
    В clickhouse нет случайно pointInPolygon, только для geography type как в Postgis?
  • https://t.me/clickhouse_ru
    @dlazarchuk #59183 12:22 PM, 19 Jul 2018
    Ребят, всем привет! Подскажите можно ли отключить дедупликацию данных? Есть такой кейс: в кластер из 8 тачек прилетают данные, когда приходит несколько полностью одинаковых строк - они схлопываються в одну! Но такое поведение не нужно, так как таблица SummingMergeTree и эти строки должны быть в итого просуммированы по ключу! А в итоге получаю только одну строку, идет потеря. Спасибо.
  • https://t.me/clickhouse_ru
    Похоже на настройку insert_deduplicate , которую вам, вероятно, нужно выставить в 0 (по идее её можно прямо во время INSERT выставить, для HTTP это будет типа POST /?insert_deduplicate=0)
  • https://t.me/clickhouse_ru
    @dlazarchuk #59185 12:27 PM, 19 Jul 2018
    Спасибо! Попробую!
  • https://t.me/clickhouse_ru
    @dlazarchuk #59186 12:27 PM, 19 Jul 2018
    Похоже на настройку insert_deduplicate , которую вам, вероятно, нужно выставить в 0 (по идее её можно прямо во время INSERT выставить, для HTTP это будет типа POST /?insert_deduplicate=0)
  • https://t.me/clickhouse_ru
    @frct1 ↶ Reply to #59179 #59187 12:37 PM, 19 Jul 2018
    Спасибо, сработало на ура :)