как установить clickhouse на windows
Как установить ClickHouse? — Руководство для digital-аналитиков
ClickHouse — это колоночная база данных, разработанная Яндексом для обработки аналитических запросов, которая идеально подходит для решения задач интернет-маркетинга.
Мы подготовили данное руководство, чтобы облегчить начало работы с ClickHouse digital-аналитикам.
Видеоинструкция
Покупка сервера для установки ClickHouse
Чтобы установить ClickHouse, необходимо купить виртуальную машину, которая работает на операционной системе Ubuntu.
В качестве примера рассмотрим покупку сервера на DigitalOcean.
После регистрации выберите Create Droplets:
После чего откроется страница конфигурации сервера. Выберите следующие настройки:
По мере постепенного увеличения объема данных вам понадобится более производительный сервер. DigitalOcean поддерживает масштабирование сервера, что позволяет комфортно увеличить технические характеристики.
После создания виртуальной машины на почту приходит письмо с SSH-доступом к серверу.
Установка ClickHouse
Чтобы установить ClickHouse, необходимо подключиться к серверу, воспользовавшись для этого SSH-клиентом.
SSH-клиент — это программа, позволяющая управлять сервером через командную строку.
Подойдет любое приложение, например:
Запустите SSH-клиент.
Для подключения к серверу укажите IP-адрес сервера, логин, а после авторизации задайте пароль.
Далее следуйте инструкции, подготовленной нашей командой.
#1. Укажите репозиторий, с которого будет загружен ClickHouse:
#2. Затем запустите процесс установки (это занимает несколько минут):
#3. Запустите ClickHouse:
На этом установка завершена. Чтобы убедиться, что она прошла успешно, запустите консольный клиент:
После чего выполните тестовый запрос к ClickHouse:
Если всё в порядке, то в качестве ответа запрос вернет 1 (единицу). Выйдите из клиента и приступайте к завершающему этапу: настройке ClickHouse.
Настройка ClickHouse
Для обеспечения дальнейшей безопасной и комфортной работы ClickHouse нужно настроить:
Открыть подключение по IP
Tabix загружается по ссылке:
http://0.0.0.0:8123/
Где вместо 0.0.0.0 следует указать IP-адрес вашего сервера. В ClickHouse по умолчанию создана учетная запись с логином default. Воспользуйтесь ею, чтобы войти в Tabix:
Пароль отсутствует. Чтобы поставить ограничение по паролю, следуйте инструкции ниже.
Установка Tabix (графический клиент)
Tabix загружается по ссылке:
http://0.0.0.0:8123/
Где вместо 0.0.0.0 следует указать IP-адрес вашего сервера. В ClickHouse по умолчанию создана учетная запись с логином default. Воспользуйтесь ею, чтобы войти в Tabix:
Пароль отсутствует. Чтобы поставить ограничение по паролю, следуйте инструкции ниже.
Создание учетной записи
По умолчанию ClickHouse создает пользователя с логином default без пароля. Пароль можно задать в открытом или закодированном виде (SHA-256).
Не следует рассматривать такие пароли как защиту от потенциального злоумышленника. Скорее, они нужны для защиты от сотрудников.
Сгенерировать пароль можно командой:
Где вместо testPasword укажите необходимый пароль.
После выполнения команды в ответ получим пароль в закодированном виде.
Чтобы указать его в качестве пароля, необходимо отредактировать файл users.xml.
Для этого выполните команду:
Откроется файл с настройками пользователей ClickHouse:
Где укажем для пользователя default сгенерированный пароль:
Также можно указать пароль в открытом виде:
Не забудьте сохранить изменения. С этого момента, чтобы подключиться к Tabix, необходимо задать логин и пароль.
Загрузка данных в ClickHouse
Renta позволяет загружать данные в ClickHouse из различных рекламных источников, систем аналитики и баз данных, например, из Google AdWords или Яндекс.Директ.
Полный список коннекторов и процесс настройки описан в документации.
Также доступен стриминг сырых данных Google Analytics c автоматическим объединением данных из рекламных источников, CRM-системы.
Подключение Power BI к ClickHouse
Подключиться к ClickHouse можно при помощи odbc-драйвера или через http.
Удобнее это сделать через http.
Для этого в Power BI выберите в качестве источника данных Web:
И укажите следующие данные:
Например, в Power BI необходимо подтянуть количество сессий по рекламным источникам. Допустим, что запрос к ClickHouse выглядит следующим образом:
Готовим URL, который вернет результат запроса в виде СSV-файла.
Структура URL должна выглядеть следующим образом:
Последним шагом — полученный запрос нужно преобразовать в формат URL:
Чтобы перевести запрос в формат URL-a, воспользуйтесь любым decoder-ом.
Настройка обновления в Power BI Online
Power BI Online требует установку gateway для обновления отчетов в облаке. Но это можно обойти, если к серверу, на котором установлен ClickHouse, подвязать домен.
В настройках домена создайте поддомен, а в качестве A-записи укажите IP-адрес сервера.
Настройка происходит на стороне хостинга, к которому подвязан домен.
В результате, в качестве источника данных вместо IP-адреса указывайте домен.
При использовании поддомена установка gateway не требуется.
Остались вопросы?
Если у вас остались вопросы — задавайте их в комментариях.
Мы с удовольствием подготовим на них ответы.
Инструкция для разработчиков
Сборка ClickHouse поддерживается на Linux, FreeBSD, Mac OS X.
Если вы используете Windows
Если вы используете Windows, вам потребуется создать виртуальную машину с Ubuntu. Для работы с виртуальной машиной, установите VirtualBox. Скачать Ubuntu можно на сайте: https://www.ubuntu.com/#download Создайте виртуальную машину из полученного образа. Выделите для неё не менее 4 GB оперативной памяти. Для запуска терминала в Ubuntu, найдите в меню программу со словом terminal (gnome-terminal, konsole или что-то в этом роде) или нажмите Ctrl+Alt+T.
Если вы используете 32-битную систему
ClickHouse не работает и не собирается на 32-битных системах. Получите доступ к 64-битной системе и продолжайте.
Создание репозитория на GitHub
Для работы с репозиторием ClickHouse, вам потребуется аккаунт на GitHub. Наверное, он у вас уже есть.
Создайте fork репозитория ClickHouse. Для этого, на странице https://github.com/ClickHouse/ClickHouse нажмите на кнопку «fork» в правом верхнем углу. Вы получите полную копию репозитория ClickHouse на своём аккаунте, которая называется «форк». Процесс разработки состоит в том, чтобы внести нужные изменения в свой форк репозитория, а затем создать «pull request» для принятия изменений в основной репозиторий.
В Ubuntu выполните в терминале:
Подробное руководство по использованию Git: https://git-scm.com/book/ru/v2
Клонирование репозитория на рабочую машину
Затем вам потребуется загрузить исходники для работы на свой компьютер. Это называется «клонирование репозитория», потому что создаёт на вашем компьютере локальную копию репозитория, с которой вы будете работать.
Выполните в терминале:
Замените первое вхождение слова ClickHouse в команде для git на имя вашего аккаунта на GitHub.
Эта команда создаст директорию ClickHouse, содержащую рабочую копию проекта.
Необходимо, чтобы путь к рабочей копии не содержал пробелы в именах директорий. Это может привести к проблемам в работе системы сборки.
Если вы получили сообщение об ошибке:
Как правило это означает, что отсутствуют ssh ключи для соединения с GitHub. Ключи расположены в директории
Вы также можете клонировать репозиторий по протоколу https:
Вы можете также добавить для своего локального репозитория адрес оригинального репозитория Яндекса, чтобы притягивать оттуда обновления:
Работа с сабмодулями Git
Работа с сабмодулями git может быть достаточно болезненной. Следующие команды позволят содержать их в порядке:
Система сборки
ClickHouse использует систему сборки CMake и Ninja.
Если у вас Arch или Gentoo, то вы сами знаете, как установить CMake.
Для установки CMake и Ninja на Mac OS X, сначала установите Homebrew, а затем, с помощью него, установите всё остальное.
Необязательные внешние библиотеки
ClickHouse использует для сборки некоторое количество внешних библиотек. Но ни одну из них не требуется отдельно устанавливать, так как они собираются вместе с ClickHouse, из исходников, которые расположены в submodules. Посмотреть набор этих библиотек можно в директории contrib.
Компилятор C++
В качестве компилятора C++ поддерживается Clang начиная с версии 11.
Впрочем, наша среда continuous integration проверяет около десятка вариантов сборки, включая gcc, но сборка с помощью gcc непригодна для использования в продакшене.
На Ubuntu и Debian вы можете использовать скрипт для автоматической установки (см. официальный сайт)
Сборка под Mac OS X поддерживается только для компилятора Clang. Чтобы установить его выполните brew install llvm
Процесс сборки
Теперь вы готовы к сборке ClickHouse. Для размещения собранных файлов, рекомендуется создать отдельную директорию build внутри директории ClickHouse:
Вы можете иметь несколько разных директорий (build_release, build_debug) для разных вариантов сборки.
Находясь в директории build, выполните конфигурацию сборки с помощью CMake.
Перед первым запуском необходимо выставить переменные окружения, отвечающие за выбор компилятора.
В случае использования на разработческой машине старого HDD или SSD, а также при желании использовать меньше места для артефактов сборки можно использовать следующую команду:
Вы можете изменить вариант сборки, выполнив новую команду в директории build.
Запустите ninja для сборки:
В этом примере собираются только нужные в первую очередь программы.
Если вы хотите собрать все программы (утилиты и тесты), то запустите ninja без параметров:
Для полной сборки требуется около 30 GB свободного места на диске или 15 GB для сборки только основных программ.
На машинах с 4 GB памяти, рекомендуется указывать значение 1, а если памяти до 8 GB, укажите значение 2.
В процессе сборки могут появится сообщения libprotobuf WARNING про protobuf файлы в библиотеке libhdfs2. Это не имеет значения.
В случае получения ошибок вида error: variable ‘y’ set but not used [-Werror,-Wunused-but-set-variable] ножно попробовать использовать другую версию компилятора сlang. Например, на момент написания данного текста описанная выше команда по установке clang для Ubuntu 20.04 по-умолчанию устанавливает clang-13, с которым возникает эта ошибка. Для решения проблемы можно установить clang-12 с помощью команд:
И далее использовать именно его, указав соответствующую версию при установке переменных окружения CC и CXX перед вызовом cmake.
При успешной сборке, вы получите готовый исполняемый файл ClickHouse/build/programs/clickhouse :
Запуск собранной версии ClickHouse
Для запуска сервера из под текущего пользователя, с выводом логов в терминал и с использованием примеров конфигурационных файлов, расположенных в исходниках, перейдите в директорию ClickHouse/programs/server/ (эта директория находится не в директории build) и выполните:
Если вы получили сообщение Connection refused на Mac OS X или FreeBSD, то укажите для клиента 127.0.0.1 в качестве имени хоста:
Вы можете заменить собранным вами ClickHouse продакшен версию, установленную в системе. Для этого, установите ClickHouse на свою машину по инструкции с официального сайта. Затем выполните:
Также вы можете запустить собранный вами ClickHouse с конфигурационным файлом системного ClickHouse:
Среда разработки
Если вы не знаете, какую среду разработки использовать, то рекомендуется использовать CLion. CLion является платным ПО, но его можно использовать бесплатно в течение пробного периода. Также он бесплатен для учащихся. CLion можно использовать как под Linux, так и под Mac OS X.
В качестве простых редакторов кода можно использовать Sublime Text или Visual Studio Code или Kate (все варианты доступны под Linux).
На всякий случай заметим, что CLion самостоятельно создаёт свою build директорию, самостоятельно выбирает тип сборки debug по-умолчанию, для конфигурации использует встроенную в CLion версию CMake вместо установленного вами, а для запуска задач использует make вместо ninja (но при желании начиная с версии CLion 2019.3 EAP можно настроить использование ninja, см. подробнее тут). Это нормально, просто имейте это ввиду, чтобы не возникало путаницы.
Написание кода
Рекомендации по добавлению сторонних библиотек и поддержанию в них пользовательских изменений: https://clickhouse.com/docs/ru/development/contrib/#adding-third-party-libraries
Тестовые данные
Разработка ClickHouse часто требует загрузки реалистичных наборов данных. Особенно это важно для тестирования производительности. Специально для вас мы подготовили набор данных, представляющий собой анонимизированные данные Яндекс.Метрики. Загрузка этих данных потребует ещё 3 GB места на диске. Для выполнения большинства задач разработки, загружать эти данные не обязательно.
Создание Pull Request
Откройте свой форк репозитория в интерфейсе GitHub. Если вы вели разработку в бранче, выберите этот бранч. На странице будет доступна кнопка «Pull request». По сути, это означает «создать заявку на принятие моих изменений в основной репозиторий».
Тесты будут запущены, как только сотрудники Яндекса поставят для pull request тег «Can be tested». Результаты первых проверок (стиль кода) появятся уже через несколько минут. Результаты сборки появятся примерно через пол часа. Результаты основного набора тестов будут доступны в пределах часа.
Как запустить ClickHouse своими силами и выиграть джекпот
Мы решили описать простой и проверенный путь для тех, кто хочет внедрить аналитическую СУБД ClickHouse своими силами или просто испробовать ClickHouse на собственных данных. Именно этот путь прошли мы сами в новостном агрегаторе СМИ2 и добились впечатляющих результатов.
В предисловии статьи — небольшой рассказ о наших попытках внедрить Druid и InfluxDB. Почему после успешного запуска ClickHouse мы смогли отказаться от использования InfiniDB и Cassandra.
Основная часть статьи посвящена продуктам-помощникам для работы с ClickHouse, которые мы сами разработали и выпустили в open-source. Кстати, добро пожаловать в pull requests с предложениями и замечаниями.
Кто мы такие и с какими данными работаем
В начале расскажем о том, кто мы такие, и о данных, на примере которых мы будем далее разбирать работу с ClickHouse. СМИ2 — информационный сервис, который с 2008 года круглосуточно поставляет актуальные новости и формирует полноценную информационную картину дня. На сегодняшний день СМИ2 включает в себя новостной агрегатор и обменную сеть с более чем 2500 партнерами, среди которых ведущие федеральные онлайн-СМИ, отраслевые сайты и региональные издания. Месячная аудитория СМИ2 составляет порядка 15 млн человек.
Мы будем разбирать работу с ClickHouse на примере одной из простых частей данных, собираемых с нашего новостного агрегатора, который представлен тремя региональными сайтами: smi2.ru, smi2.ua и smi2.kz. На каждом сайте мы собираем и обрабатываем данные о просмотрах и кликах по новостям. Эти данные используются как в режиме реального времени — для выдачи контента, так и для постанализа эффективности материалов.
В вашем случае анализируемыми данными могут быть, например, логи сервера, статистика по событиям на сайтах, в системах бронирования, электронной рассылки, отслеживания показаний датчиков и т. п. Во всех этих случаях, а также если у вас много данных, ClickHouse стоит того, чтобы попробовать.
Как мы пришли к ClickHouse
Мы определили для себя следующие критические требования к аналитической СУБД:
В качестве предыстории хотелось бы рассказать о том, какой технологический стек мы использовали ранее, от чего пришлось отказаться и как мы пришли к ClickHouse.
Неудачный опыт с Druid и InfluxDB
В этом году мы развернули сборку на основе Druid — Imply Analytics Platform, а также Tranquility, и уже приготовились запускать в продакшн… Но после выхода ClickHouse сразу отказались от Druid, хотя потратили два месяца на его изучение и внедрение.
Из плюсов отметили для себя следующее:
Однако следующие недостатки перевесили чашу весов:
Также у нас был пробный подход к системе InfluxDB (см. статью), которую мы планировали использовать для построения и анализа метрик. Проект мы оценили для себя как глубокую Alfa из-за частых потерь данных и падений системы, поэтому работу в этом направлении мы тоже прекратили. Возможно, сейчас состояние продукта изменилось в лучшую сторону.
Cassandra и InfiniDB продержались у нас два года
Cassandra использовалась у нас в продакшне с 2014 по 2016 год:
В этот же период мы использовали и InfiniDB. Из положительных моментов хотелось бы отметить следующие:
Однако не обошлось и без отрицательных моментов:
И тут «Яндекс» выложил в открытый доступ ClickHouse
Из-за недостатков и проблем с используемыми у нас для аналитики СУБД мы регулярно смотрели по сторонам в поисках альтернатив. В том числе мы обратили внимание на внутреннюю разработку «Яндекса», которая подкупала своим невероятным быстродействием и в целом соответствовала нашим ожиданиям от аналитической СУБД (см. выше).
В настоящий момент на рынке нет бесплатных или недорогих аналитических баз данных для обработки больших данных в режиме реального времени уровня, подобного ClickHouse. Во всяком случае, мы о таких не знаем. Из платных баз данных мы тестировали HP Vertica и Greenplum. Аналитику можно считать и с помощью MapReduce на Hadoop, но не в режиме, близком к реальному времени. Кстати, в самом «Яндексе» есть YT («Ыть», как они сами ее называют) — MapReduce-платформа для работы с большими данными, но она тоже не работает в режиме реального времени, хотя активно используется. То есть для аналитики в режиме реального времени, по нашему мнению, больше всего подходит ClickHouse. Поэтому, когда «Яндекс» опубликовал летом ClickHouse в открытый доступ, мы однозначно решили его попробовать.
Как нам помог ClickHouse
Мы можем уверенно утверждать, что процесс запуска ClickHouse прошел у нас быстрее и проще, чем с другими СУБД. Надеемся, что наша статья позволит вам сделать это существенно быстрее 🙂
Если пропустить историю о том, как мы запускали ClickHouse и в итоге успешно запустили, то стоит отметить следующие результаты запуска ClickHouse.
Выгоды в разработке. В относительно короткий срок нам удалось закрыть 80 % задач, связанных с анализом данных, а этих задач накопилось много. Новые задачи по аналитике стали выполняться гораздо проще и быстрее.
Выгоды в железе. По сравнению с тем же Druid, требования к железу у ClickHouse оказались существенно ниже, поэтому нам удалось сэкономить на железе. Плюс, мы отказались от 5 нод под Cassandra, 4 нод под InfiniDB и 2 нод под MySQL (исторически оставшейся аналитики). Итого мы отказались от 11 серверов, за которыми нужно было постоянно присматривать и не пропускать алерты о проблемах от nagios.
Выгоды в хранении данных. ClickHouse хранит данные с использованием различных механизмов сжатия. За счет поддержки шардирования и репликации ClickHouse способен хранить и обрабатывать данные распределенно. Репликация не только повышает надежность хранения данных, но и оптимизирует операции чтения в рамках кластера.
Выгоды в скорости. ClickHouse реально быстрый, мы убедились в этом на своих задачах, скорость возросла в несколько раз!
Здесь многие подумают, что неплохо было бы привести для примера бенчмарки… Предлагаем обратиться к бенчмаркам «Яндекса» и посмотреть наши ролики с запросами на реальных наборах данных. Статистика собираемых и анализируемых нами с помощью ClickHouse данных на текущий момент такова:
Данные хранятся на 6 серверах SX131 от Hetzner с 3 шардами по 2 реплики.
Особенности ClickHouse
Как у любого продукта для работы с данными, у ClickHouse есть свои особенности. Вот некоторые из них:
Кроме этого, ClickHouse не умеет строить графики «из коробки», для этого нужны дополнительные инструменты.
Для нас не важна транзакционность и отсутствие UPDATE / DELETE. Мы давно привыкли обходить эти проблемы. Однако нам очень хотелось бы иметь возможность хранить данные только за несколько дней. В планах «Яндекса» — добавить возможность удаления партиций по дням.
Наши проекты для ClickHouse
В процессе освоения и внедрения ClickHouse мы столкнулись с некоторыми неудобствами и отсутствием нужных нам «плюшек». Поэтому, не став ждать милостей от « Яндекса » природы, мы решили облегчить себе работу сами. Еще одним мотиватором было то, что нам хотелось внести свой вклад в развитие перспективного open-source проекта. Плюс — это был наш первый опыт участия в open-source разработке.
Так родились два наших open-source проекта, которые позволили нам самим существенно ускорить и упростить процесс внедрения ClickHouse и работу с ним:
Ниже описаны основные возможности каждого проекта.
Наш графический клиент для ClickHouse: возможности и особенности
Клиент написан полностью на JavaScript, без использования server side.
Вы можете спокойно использовать наш последний опубликованный билд.
Наш PHP-драйвер для ClickHouse: возможности и особенности
Драйвер протестирован на PHP 5.6 и 7, HHVM 3.9.
Примеры работы с ClickHouse
Рассмотрим на примере, как работать ClickHouse из PHP и с помощью нашего графического клиента.
Считаем, что вы успешно установили ClickHouse из deb-пакета последней версии и ознакомились с Quick start guide.
На каждом сайте совершаются события, связанные со статьями (новостями). Мы будем регистрировать данные о показах статей (views) и кликах по каждой статье (clicks).
По каждому событию мы будем фиксировать несколько атрибутов:
Подключение к серверу ClickHouse, создание БД и таблицы
Для записи данных о событиях создадим на сервере ClickHouse базу данных articles и внутри — нее таблицу events со следующей структурой:
Сначала рассмотрим создание базы данных и таблицы с помощью нашего графического клиента. Подключаемся через графический клиент к серверу ClickHouse и выполняем запрос на создание новой базы данных и новой таблицы:
Поясним некоторые параметры этого запроса:
Теперь попробуем создать подключение к серверу ClickHouse, базу данных и таблицу через наш драйвер PHP. Для этого сначала установим драйвер.
Установку стабильной сборки драйвера можно выполнить через composer :
composer require smi2/phpclickhouse
либо клонировать драйвер из основной (master) ветки Git-репозитория:
git clone https://github.com/smi2/phpClickHouse.git
Более подробная информация по установке драйвера доступна в документации к драйверу, которая также содержит описание функций драйвера и ChangeLog.
После того как драйвер был успешно установлен, выполняем запрос на подключение к серверу, создание БД и таблицы:
Обращаем внимание, что запросы в драйвере разделены на следующие:
Операции вставки и чтения данных могут выполняться параллельно.
Запросы на запись и вставку данных не содержат ответа, выполняется только проверка, что ответ сервера был положительным. Запросы на чтение ответ содержат (исключением является прямая запись ответа в файл).
Вставка данных, в том числе из TSV-файла
Вставим данные, которые будем использовать для тестирования:
Такой метод вставки подходит только для маленьких таблиц или таблиц справочников, так как в этом случае будет выполняться преобразование массива в строку.
Получим результат вставки данных:
Подробнее про чтение данных написано ниже. Для вставки большего количества строк воспользуемся прямой загрузкой TSV-файла, который будет генерироваться при событии. Для этого будем записывать TSV-файл на сервере, где происходят события, и для упрощения отправлять его в ClickHouse.
Запись будем производить в файл, ротируемый ежеминутно следующим способом (допускаем все недостатки — ошибки записи, блокировки, и т. д. — строка всегда записывается):
На GitHub для тестов сделан эмулятор класса UserEvent и пример использования этого класса с записью в базу.
Допустим, что у нас накопилось 5—10 таких файлов, и мы готовы их отправить в базу:
При больших объемах вставляемых из файлов данных включаем режим сжатия. В этом случае используется потоковое сжатие без создания временных файлов, что позволяет экономить на сетевых ресурсах сервера, немного увеличивая нагрузку на CPU. Скорость передачи данных возрастает, и суммарное время, затрачиваемое на обработку одного файла, уменьшается в несколько раз.
Чтение данных
Меньше слов — больше кода. Приведем простой пример, как два запроса выполняются параллельно через драйвер:
Вариант без асинхронности:
Попробуем прочитать наши данные. Допустим, нам нужно посчитать, сколько уникальных пользователей просмотрело статьи по дням:
Сколько пользователей, которые просматривали статьи, совершили клики:
Какие UTM-метки давали наибольшее количество просмотров и кликов:
Использование внешних данных для обработки запроса
Допустим, что нам нужно посчитать, сколько уникальных пользователей просмотрело за сутки статьи X, где в X перечислено несколько идентификаторов статей. Это можно сделать так:
В данном примере все будет прекрасно работать. Но что делать, если идентификаторов тысячи или десятки тысяч? В этом случае пригодится функционал ClickHouse, который позволяет использовать внешние данные для обработки запроса.
Тогда содержимое CSV-файла можно использовать на сервере:
Также функцией attachFile() поддерживаются файлы в форматах TabSeparated и TabSeparatedWithNames.
Что дальше
На этом мы, пожалуй, завершим первую часть нашего рассказа о ClickHouse.
Много полезной информации о ClickHouse вы можете узнать в Гугл-группе.
Если у вас есть замечания или вы нашли ошибки, опечатки — добро пожаловать в мир open-source, будем ждать ваших pull request по этой статье. Если вы любите анализ данных и вам интересно поработать с данными и ClickHouse — добро пожаловать к нам в команду 😉
Мы планируем сделать цикл материалов, посвященных нашему опыту работы с ClickHouse.
В планах — следующие темы.