ClickHouse

Автор:Игорь Тельменко

ClickHouse

ClickHouse представляет собой быструю, хорошо масштабируемую БД с SQL диалектом. Используется для случаев, в которых нужно создавать аналитические отчеты по большому количеству данных.
Если имеется широкая (с большим числом колонок) таблица, по которой нужно строить различные аналитические отчеты (фильтровать, группировать по различным колонкам), то ClickHouse подойдет здесь как нельзя лучше. Скорость выборки,  по сравнению с тем же MySQL, будет в сотню раз выше.

Далее тезисно раскажу о ClickHouse. А для более подробного описания в конце статьи есть ссылка на видео с презентацией.

Интерфейсы работы с ClickHouse

  • Консольный клиент для интерактивной работы или отправки команд через скрипт
  • HTTP
  • JDBC-драйвер
  • Обертки на различных языках программирования

Почему работает так быстро?

  • На уровне кода
    • Изначальная ориентированность на производительность
    • Каждую фичу максимально оптимизируют
    • Векторная обработка данных
  • На уровне данных
    • Колоночное хранение данных. Если есть 500 колонок, но в запросе нужны только 10. Можно вытянуть только их. А в случае с MySQL нужно будет считывать все.
    • Оптимизирован для работы с HDD

Когда не стоит использовать

  • OLTP. Транзакционная система — обработка транзакций в реальном времени. Способ организации БД, при котором система работает с небольшими по размерам транзакциями, но идущими большим потоком, и при этом клиенту требуется от системы минимальное время отклика.
  • Key-value БД
  • Document-oriented БД
  • Модифицирование данных

Когда нужно использовать

  • Широкие таблицы и аналитика по ним
  • QPS (поток запросов) относительно небольшой, но используется много данных

Случаи использования

  • Анализ серверных логов. Загрузив в ClickHouse можно быстро расследовать чтобы расследовать инцендент
  • База для аналитики внутри компании

С чего начать

Посмотреть видео с презентацией.
Попробовать как работает https://clickhouse.yandex/#quick-start. Там есть примеры данных. Их можно скачать и попробовать вызывать различные SQL запросы.

Оставить ответ