Какие вещи нужно учесть при переходе от php-агрегатора на ClickHouse?



Поделитесь опытом использования ClickHouse пожалуйста.Задача: сделать разные (желательно adhoc) отчеты по большом объему событий нескольких типов.Сейчас прирост событий в среднем +2000 в сек. Php агрегирует сырые лог-файлы и пишет агрегаты в mysql. Из mysql уже строятся отчеты. Проблема в том, что каждый новый отчет требует нового кода в php-агрегаторе, и при увеличении числа отчетов он сильно усложняется. Хочется что-то более простое в использовании. Поэтому рассматриваем переход на ClickHouse. Пока что присматриваемся, планируем писать события каждого типа в свою таблицу и потом в реалтайме строить для пользователя отчеты. Сейчас делаем замеры - насколько быстро будут работать отчеты по данным за один месяц.Вопросы:1. быстро ли работают joinы в ClickHouse? Для некоторых отчетов придется джойнить большие таблицы.2. какие, возможно, неочевидные вещи нужно учесть при переходе от php-агрегатора на ClickHouse?
1542   69  

Comments

  1. Станислав Осипов
    Станислав Осипов 5 лет назад
    1. Из-за колоночной архитектуры там гораздо эффективнее сильная денормализация БД. Т.е. ты можешь сделать 5000 колонок в таблице и это никак не повлияет на выборку по 3 колонкам.2. Он совсем другой. Нет, например, операции UPDATE. И delete там тоже нетипичный.
    • Павел Вейник
      Павел Вейник 5 лет назад
      1. то есть, следует подумать как свести разные типы ивентов в одну большую таблицу? чтобы избавиться от join?
    • Станислав Осипов
      Станислав Осипов 5 лет назад
      Павел Вейник Да, мы так и сделали.
    • Павел Вейник
      Павел Вейник 5 лет назад
      Станислав Осипов спасибо за направление )
    • Станислав Осипов
      Станислав Осипов 5 лет назад
      Павел Вейник не стоит благодарностей, это в каждом подкасте о нем говорится.
  2. Станислав Осипов
    Станислав Осипов 5 лет назад
    Даже InfiniDB была гораздо ближе к традиционному SQL чем CH.
  3. Антон Герасимов
    Антон Герасимов 5 лет назад
    Лучше скажите, как у CH с потерей данных и консистентностью реплик?
    • Антон Герасимов
      Антон Герасимов 5 лет назад
      Олег Царёв высоковолатильные - это не обязательно на коротком промежутке. Вооатильности подвержены и инвестиционные инструменты, но связана она в основном с фундаментом, а не техникой.
    • Антон Герасимов
      Антон Герасимов 5 лет назад
      Олег Царёв Можешь посмотреть на историю своих инструментов. Моя практика показывает, что никакой return to risk не может предусмотреть всех факторов фундаментального анализа. (Например случаются свержения правительств, природные и техногенные катастрофы и много другое, что может повлиять на устойчивые компании, чей бизнес связан с неким регионом. Возможно и не напрямую. Полчаса - это целая вечность в мире трейдинга.
    • Антон Герасимов
      Антон Герасимов 5 лет назад
      Олег Царёв : А Миловидов не говорил, когда ждать счастья?
    • Антон Герасимов
      Антон Герасимов 5 лет назад
      Ну там есть роадмап, но что-то я сомневаюсь в том что они его выполнят по срокам. Там слишком много запланировано
    • Кирилл Коринский
      Кирилл Коринский 5 лет назад
      Anton Gerasimov я не буду показывать пальцем, но я знаю минимум один банк который потерял мои транзакции!
    • Антон Герасимов
      Антон Герасимов 5 лет назад
      Кирилл Коринский : а можно ткнуть пальцем? Не хочу счёт в таком.
    • Кирилл Коринский
      Кирилл Коринский 5 лет назад
      Anton Gerasimov написал приватно
    • Станислав Осипов
      Станислав Осипов 5 лет назад
      Кирилл Коринский а мне можно?
    • Dmitry Northerner
      Dmitry Northerner 5 лет назад
      Попробую угадать Тинькофф?
  4. Vitaly Levchenko
    Vitaly Levchenko 5 лет назад
    Возьмите Vertica и не страдайте фигнёй: там отличная документация, удобное обслуживание, честный SQL и всё что вам надо — быстро.
    • Павел Клеменков
      Павел Клеменков 5 лет назад
      А для всего остального есть мастеркард?
    • Павел Вейник
      Павел Вейник 5 лет назад
      Виталий, спасибо. Посмотрю что это такое
    • Павел Клеменков
      Павел Клеменков 5 лет назад
      Лучше сразу на ценник смотреть)
    • Павел Вейник
      Павел Вейник 5 лет назад
      Павел Клеменков ога, уже запросил их sales
    • Vitaly Levchenko
      Vitaly Levchenko 5 лет назад
      1Tb и 3 ноды полностью бесплатно. Таких кластеров можно делать много.
    • Павел Вейник
      Павел Вейник 5 лет назад
      Vitaly Levchenko у них же нельзя использовать для коммерческих целей даже бесплатную версию
    • Vitaly Levchenko
      Vitaly Levchenko 5 лет назад
      Павел, впервые слышу об этом ограничении, у них на сайте его не нашёл.
    • Павел Вейник
      Павел Вейник 5 лет назад
      "You may not use software to provide services to third parties." при скачивании community edition. Это выглядит очень общо, как ограничение на коммерческое использование.
    • Vitaly Levchenko
      Vitaly Levchenko 5 лет назад
      Я бы не парился на вашем месте.
    • Павел Вейник
      Павел Вейник 5 лет назад
      Vitaly Levchenko а вы пробовали выгружать данные из Вертики? Это сложно-долго или нормально по скорости?
    • Vitaly Levchenko
      Vitaly Levchenko 5 лет назад
      Павел, Vertica в диск обычно упирается.
    • Александр Быков
      Александр Быков 5 лет назад
      Vitaly Levchenko много кластеров это нарушение лицензии, там явно любой шардинг запрещается самопальный
    • Vitaly Levchenko
      Vitaly Levchenko 5 лет назад
      who cares?
    • Павел Вейник
      Павел Вейник 5 лет назад
      так нинада делать
  5. Михаил Петров
    Михаил Петров 5 лет назад
    JOIN не работают для больших таблиц, потому что реализованы в виде подзапросов. Если результат первого подзапроса большой - работать не будет вообще.
  6. Андрей Григорьев
    Андрей Григорьев 5 лет назад
    ClickHouse это отличный инструмент для работы с данными. В частности - для построения отчетов. Но если данных много, то про realtime можно говорить только при наличии сопоставимого количества железа (CH считает всё максимально эффективно, но честно, без кеширования и каких-либо автоматических предагрегаций). Join-ы нужно избегать - денормализация во все поля.
    • Павел Вейник
      Павел Вейник 5 лет назад
      Спасибо за ответ. Мы можем склеить все ивенты в одну большую строку и сохранить в CH. Но проблема в том, что мы это можем сделать только через 48 часов после первого события из цепочки событий - когда уже есть уверенность что не появится новых событий. А отчеты нужно строить и по свежим данным, которые еще нельзя склеить в одну большую строку, потому что 48 часов еще не прошли и могут придти новые события цепочки. 48 часов - это примерно 120Г сейчас, порядка 100М записей, и их придется джойнить, ну или как-то извращаться для реалтайм отчетов.
    • Андрей Григорьев
      Андрей Григорьев 5 лет назад
      Э... я не предлагал эвенты в одну строку склеивать . Как вы пришли к такой мысли?
    • Павел Вейник
      Павел Вейник 5 лет назад
      Андрей Григорьев а они просто просятся, ивенты идут связанными небольшими сериями штук по 5, вот эти серии естественно ложатся как одна строка в CH и убирают все джойны.
    • Андрей Григорьев
      Андрей Григорьев 5 лет назад
      Павел Вейник А покажи плиз пример такой связки евентов?
    • Павел Вейник
      Павел Вейник 5 лет назад
      Андрей Григорьев эм, ну типа ивент1 начало обслуживания - ивент2 событие обслуживания - ивент3 завершения обслуживания, в таком духе. не более 5 ивентов может быть.
    • Павел Вейник
      Павел Вейник 5 лет назад
      каждый со своим набором полей, но все укладываются в эту схему.
    • Андрей Григорьев
      Андрей Григорьев 5 лет назад
      Тогда стоит не в строку склеивать, а нормально наборы полей разделить и писать в одну запись. Ещё в ClickHouse есть такая штука - https://clickhouse.yandex/reference_ru.html... , но я пока не пользовался.
    • Vitaly Levchenko
      Vitaly Levchenko 5 лет назад
      Elastic — это, конечно, надёжное, интерпрайзное решение!
    • Павел Вейник
      Павел Вейник 5 лет назад
      Андрей Григорьев да, разумеется, я имею в виду строку таблицы Не думаю что вложенные структуры тут принципиально что-то решат, вопрос в нахождении соответствия для цепочки ивентов - джойны тут лучше всего, но они в CH тяжелые. Видимо, отчеты за последние 48 часов будем делать ручками, а то что старше - сливать в CH для нормальной обработки в одной большой таблице.
    • Андрей Григорьев
      Андрей Григорьев 5 лет назад
      Vitaly Levchenko да, штука хрупкая, чуть не туда ткнешь - БДЫЩ OOM КИШКИ РЕБАЛАНСИНГ КЛАСТЕР РАСПИДОРАСИЛО
    • Андрей Григорьев
      Андрей Григорьев 5 лет назад
      На самом деле надо просто отдельные client-ноды жирные по оперативке делать и тогда его довольно сложно положить.
    • Андрей Григорьев
      Андрей Григорьев 5 лет назад
      Павел Вейник звучит как лямбда-архитектура) имхо такую склейку и правда лучше где-то вне основного хранилища разруливать, может быть даже кастомным сервисом в оперативке...
    • Андрей Григорьев
      Андрей Григорьев 5 лет назад
      вариант с php + mysql тоже имеет право на жизнь)
    • Андрей Григорьев
      Андрей Григорьев 5 лет назад
      Хотя clickhouse'ом собирать - тоже вполне себе вариант.
    • Павел Вейник
      Павел Вейник 5 лет назад
      Андрей Григорьев вариант с php+mysql уже выпил немало крови. Отчеты не кастомные получаются, а только такие, для которых уже сделана преагрегация. Добавление нового отчета дорогое.
    • Павел Вейник
      Павел Вейник 5 лет назад
      спасибо большое за комментарии