Кратко:
- ClickHouse - это СУБД, разработанная в Yandex Cloud.
- Типы хранилищ: быстрое локальное, быстрое сетевое, стандартное сетевое и нереплицируемые SSD-диски.
- Сетевые хранилища используют обычные сетевые диски.
- Стандартное сетевое хранилище заметно дешевле, но если скорость доступа к БД не устраивает, выбирайте быстрое сетевое или быстрое локальное хранилище.
- Нереплицируемые диски - это быстрые сетевые хранилища на SSD-дисках, для которых не предусмотрена репликация на уровне облака.
- Локальное хранилище имеет недостаток, что если локальный диск откажет, все сохраненные на нем данные будут потеряны.
- Гибридное хранилище: часто используемые данные хранятся на сетевых хранилищах, а редко используемые - в объектном хранилище Yandex Cloud.
- Релизы ClickHouse выходят довольно часто, сервис использует два типа версий: с расширенным периодом поддержки (LTS) и промежуточные.
Особенности сервиса управляемых баз данных ClickHouse
На этом уроке мы рассмотрим особенности реализации СУБД ClickHouse в Yandex Cloud.
Типы хранилища
При создании кластера ClickHouse вы можете выбрать быстрое локальное (local-ssd), быстрое сетевое (network-ssd), стандартное сетевое (network-hdd) хранилище или хранилище на нереплицируемых SSD-дисках (network-ssd-nonreplicated).
Сетевые хранилища используют обычные сетевые диски: такие же, как в виртуальных машинах.
Стандартное сетевое хранилище заметно дешевле других вариантов. Но если скорость доступа к БД вас не устраивает, то выбирайте быстрое сетевое или быстрое локальное хранилище.
Нереплицируемые диски — это, по сути, быстрые сетевые хранилища на SSD-дисках, для которых не предусмотрена репликация на уровне облака. Производительность системы повышается за счет снижения надёжности хранения данных. Но для управляемых БД этот недостаток не критический: репликацию можно настроить на уровне сервиса.
Особенность локального хранилища заключается в том, что если локальный диск откажет, все сохранённые на нём данные будут потеряны. Поэтому, при выборе такого хранилища сервис автоматически создаст отказоустойчивый кластер минимум из двух хостов.
Также вы можете использовать Гибридное хранилище. Часто используемые, горячие данные хранятся на дисках сетевого хранилища, а редко используемые, холодные — в объектном хранилище Yandex Cloud.
Обновления СУБД
Релизы ClickHouse выходят довольно часто. Поэтому сервис управляемых БД ClickHouse использует небольшой набор версий СУБД и регулярно его актуализирует. Кластеры с устаревшей, т. е. уже не поддерживаемой версией ClickHouse автоматически обновляются.
Сервис использует два типа версий: с расширенным периодом поддержки (LTS — long term support) и промежуточные.
LTS-версии выходят раз в полгода. Поддерживаются только две таких версии: текущая и предыдущая. То есть поддержка LTS-версии длится один год. Неподдерживаемая LTS-версия обновляется сразу до текущей.

При выходе новой промежуточной версии прекращается поддержка самой старой из них. При этом одновременно поддерживается не более трёх промежуточных версий.

Резервное копирование
Сервис каждый день автоматически выполняет резервное копирование БД, а также позволяет создавать резервные копии вручную. Они записываются в хранилище данных. Стоимость хранения копий смотрите в правилах тарификации. Сейчас хранение не тарифицируется, пока суммарный размер БД и всех резервных копий не превышает выбранного размера хранилища. Любые копии (и автоматически, и вручную созданные) гарантированно хранятся семь дней.
Любые резервные копии делаются по инкрементальной схеме: если хотя бы в одной копии есть идентичные фрагменты данных и эти фрагменты не старше 30 дней, то они не дублируются.

Данные в резервной копии хранятся только для таблиц, использующих движки семейства MergeTree. Это наиболее функциональные движки таблиц ClickHouse. Когда в таблицу на таком движке вставляется большое количество данных, эти данные записываются частями, которые затем объединяются по определённым правилам в фоновом режиме. Для остальных движков в резервной копии хранятся лишь схемы таблиц.
Шардирование
Шардирование используется для горизонтального масштабирования кластера, при котором части одной БД ClickHouse размещаются на разных шардах. Шард — это один или несколько хостов-реплик. Запрос на запись или чтение в шард можно отправить на любую его реплику, выделенного мастера нет.
Чтобы распределить данные по шардам, нужно создать распределённую таблицу. Части данных фактически хранятся в нижележащих таблицах на хостах каждого шарда, а распределённая таблица маршрутизирует запросы к этим таблицам.
ClickHouse определяет, на какой шард поместить новые данные, с помощью ключа шардирования. Выбирайте ключ так, чтобы данные логично распределялись по шардам и данные разных шардов не были связаны между собой.
Кластеры управляемых БД ClickHouse изначально создаются с одним шардом. Чтобы воспользоваться преимуществами шардирования, вам понадобится добавить еще один или несколько шардов и создать распределённую таблицу.
Словари
Словарь — это хранилище данных типа «ключ-значение», которое полностью или частично находится в оперативной памяти сервера ClickHouse.
Основное преимущество словарей — высокая скорость работы по сравнению с операциями JOIN. Словари полезны, когда приходится часто обращаться к справочнику, чтобы получить набор значений по ключу.
В качестве источников данных словарей могут выступать встроенные словари ClickHouse или внешние источники: HTTP-ресурсы или другая БД (MySQL, ClickHouse, MongoDB, PostgreSQL).
Сервис также содержит встроенный словарь-геобазу и набор функций для работы с ним. Геобаза позволяет:
- получить имя региона по его идентификатору на нужном языке;
- получить идентификатор города, области, федерального округа, страны, континента по идентификатору региона;
- проверить, что один регион входит в другой;
- получить цепочку родительских регионов.
Если встроенная геобаза вам не подходит, подключите к ClickHouse собственную геобазу.
Машинное обучение
Сервис позволяет анализировать данные с помощью моделей машинного обучения CatBoost без использования дополнительных инструментов. Чтобы применить модель, подключите её к кластеру и вызовите в SQL-запросе с помощью встроенной функции
modelEvaluate()
. В результате выполнения запроса модель выдаст предсказания для каждой строки входных данных. Пример работы с моделями машинного обучения в ClickHouse приведен в документации.Тарификация
При планировании расходов на кластер ClickHouse учитывайте то, что при создании кластера из двух и более хостов автоматически создаётся ещё три хоста ZooKeeper. Хосты ZooKeeper тарифицируются по тому же принципу, что и обычные: за время использования ядер процессора и оперативной памяти.
Поздравляем, вы завершили тему «ClickHouse»
В этой теме вы узнали, какие бывают сценарии работы с данными, научились создавать кластер БД ClickHouse, добавлять в неё данные, выполнять аналитические запросы к БД.