Что такое разделение вычислительных ресурсов?
- вычислительные узлы ClickHouse (называемые репликами) с выделенными ресурсами CPU и памяти
- конечную точку (или несколько конечных точек, созданных через консоль ClickHouse Cloud) для подключения к сервису (например,
https://dv2fzne24g.us-east-1.aws.clickhouse.cloud:8443) для локальных подключений и подключений сторонних приложений - папку в объектном хранилище, где сервис хранит все данные и часть метаданных:
Рис. 1 — Один сервис в ClickHouse Cloud Вместо одного сервиса можно создать несколько сервисов с доступом к одному и тому же общему хранилищу. Это позволяет выделять ресурсы под конкретные рабочие нагрузки без дублирования данных. Эта концепция называется разделением вычислительных ресурсов. Разделение вычислительных ресурсов означает, что у каждого сервиса есть собственный набор реплик и конечная точка, но при этом все они используют одну и ту же папку в объектном хранилище и получают доступ к одним и тем же таблицам, представлениям и т. д. Это означает, что вы можете подобрать подходящий объем вычислительных ресурсов для своей рабочей нагрузки. Для одних рабочих нагрузок достаточно одной небольшой реплики, а другим могут потребоваться высокая доступность (HA) и сотни гигабайт памяти на нескольких репликах. Разделение вычислительных ресурсов также позволяет отделить операции чтения от операций записи, чтобы они не мешали друг другу:
Рис. 2 — Разделение вычислительных ресурсов в ClickHouse Cloud
Что такое хранилище?
- Основной сервис
DWH Prod - Вторичный сервис
DWH Prod Subservice
Рис. 3 — Пример хранилища Все сервисы в хранилище имеют одинаковые:
- Region (например, us-east1)
- провайдера облачных услуг (AWS, GCP или Azure)
- версию базы данных ClickHouse
- ClickHouse Keeper (для управления репликами)
Управление доступом
Учетные данные базы данных
Рис. 4 — пользователь Alice создан в Service 1, но может использовать те же учетные данные для доступа ко всем сервисам, использующим одни и те же данные
Управление сетевым доступом
Рис. 5 — Alice не может получить доступ к сервису 2 из-за настроек управления сетевым доступом Роли и привилегии ClickHouse также можно использовать для управления доступом к данным, когда вы подключаетесь не под пользователем по умолчанию, а от своего имени.
Сервисы только для чтения и с возможностью чтения и записи
- с возможностью чтения и записи
- Могут как читать, так и записывать данные в ClickHouse
- Выполняют фоновые операции слияния (например, слияние частей после вставки данных), которые потребляют CPU и память
- Могут экспортировать данные во внешние системы
- только для чтения
- Могут только читать данные; записывать или изменять данные в ClickHouse они не могут
- Не выполняют фоновые операции слияния вне системных таблиц, поэтому их ресурсы полностью выделены под запросы на чтение
- По-прежнему могут экспортировать данные во внешние системы (например, через табличные функции), но не могут изменять данные внутри ClickHouse
- Переходят в состояние бездействия без задержки, в отличие от сервисов с возможностью чтения и записи, которые фоновые слияния могут удерживать активными.
Рис. 6 — Сервисы с возможностью чтения и записи и только для чтения в хранилище
- Сервисы только для чтения в настоящее время поддерживают операции управления пользователями (CREATE, DROP и т. д.).
- Refreshable materialized views выполняются только на сервисах с возможностью чтения и записи (RW) в хранилище.
- Тип сервиса (только для чтения или с возможностью чтения и записи) фиксируется при создании и впоследствии не может быть изменён через Cloud Console. Чтобы переключиться между режимами только для чтения и чтения/записи, создайте в хранилище новый сервис нужного типа.
Масштабирование
1:4 поддерживают вертикальное автоматическое масштабирование в режиме самообслуживания, тогда как для сервисов Enterprise с пользовательскими профилями изменение размера по вертикали выполняется с помощью службы поддержки. Размер сервисов уровня Basic не изменяется. Подробнее см. в разделе Крупные сервисы с одной репликой.
По умолчанию общее количество реплик во всех сервисах хранилища ограничено 50. Подробнее см. в разделе ограничения использования. Чтобы увеличить лимит, обратитесь в службу поддержки.
Запланированное масштабирование работает для отдельных сервисов в хранилище. Ограничения хранилища по-прежнему действуют — планируйте расписания так, чтобы суммарное количество реплик во всех сервисах в периоды пиковой нагрузки не превышало лимит хранилища. Подробнее см. в разделе Автоматическое масштабирование.
Изменения в поведении clusterAllReplicas
clusterAllReplicas() меняется.
При использовании имени кластера default запрос будет выполняться только для реплик текущего сервиса, а не для всех сервисов в хранилище.
Например, если вы вызываете clusterAllReplicas(default, system, processes) из сервиса 1, будут возвращены только процессы, выполняющиеся на сервисе 1.
Чтобы выполнять запросы по всем сервисам в хранилище, используйте имя кластера all_groups.default:
Ограничения
Ограничения изоляции рабочих нагрузок
-
Все сервисы с возможностью чтения и записи по умолчанию выполняют фоновые операции слияния. При вставке данных в ClickHouse база данных сначала записывает данные в промежуточные партиции, а затем выполняет слияния в фоновом режиме. Эти слияния могут потреблять ресурсы памяти и ЦП. Когда два сервиса с возможностью чтения и записи используют общее хранилище, оба выполняют фоновые операции. Это означает, что возможна ситуация, когда запрос
INSERTвыполняется в сервисе 1, а операция слияния завершается сервисом 2. Обратите внимание, что сервисы только для чтения не выполняют фоновые слияния. Чтобы отключить слияния на сервисе с возможностью чтения и записи, обратитесь в службу поддержки. - Все сервисы с возможностью чтения и записи выполняют операции вставки для движка таблицы S3Queue. При создании таблицы S3Queue на сервисе с возможностью чтения и записи все остальные сервисы с возможностью чтения и записи в хранилище также могут читать данные из S3 и записывать их в базу данных.
- Вставки в одном сервисе с возможностью чтения и записи могут мешать другому сервису с возможностью чтения и записи перейти в режим простоя, если включен режим простоя. Бывают ситуации, когда один сервис выполняет фоновые операции слияния для другого сервиса. Эти фоновые операции могут мешать второму сервису перейти в режим простоя. После завершения фоновых операций сервис перейдет в режим простоя. Сервисы только для чтения этому не подвержены.
Полезные примечания
- Версии ClickHouse: График обновлений определяется настройками основного сервиса. У вторичных сервисов не может быть собственного графика релизов, независимого от основного сервиса.
-
Запросы
CREATE/RENAME/DROP DATABASEпо умолчанию могут блокироваться сервисами в режиме простоя или остановки. Если выполнять эти запросы, когда сервис находится в режиме простоя или остановлен, они могут зависнуть. Чтобы избежать этого, можно запускать запросы управления базой данных сsettings distributed_ddl_task_timeout=0на уровне сеанса или отдельного запроса.
- Переход основного сервиса в режим простоя: автоматический переход основного сервиса в режим простоя включен по умолчанию.
Цены
Резервные копии
- Поскольку все сервисы в одном хранилище используют общее хранилище данных, резервные копии создаются только на основном (исходном) сервисе. Таким образом выполняется резервное копирование данных всех сервисов в этом хранилище.
- Если вы восстановите резервную копию с основного сервиса хранилища, она будет восстановлена в совершенно новом сервисе, не связанном с существующим хранилищем. Затем, сразу после завершения восстановления, вы сможете добавить к нему дополнительные сервисы.
Как настроить хранилище
Создание хранилища
Рис. 7 — Нажмите значок плюса, чтобы создать новый сервис в хранилище На экране создания сервиса в раскрывающемся списке в качестве источника данных для нового сервиса будет выбран исходный сервис. После создания эти два сервиса образуют хранилище.
Переименование хранилища
- На странице сервисов в правом верхнем углу выберите “Сортировать по хранилищу”, затем нажмите значок карандаша рядом с названием хранилища
- Нажмите название хранилища в любом из сервисов и переименуйте его там
Удаление хранилища
- Удалите все сервисы, созданные помимо сервиса, который был создан первым;
- Удалите первый сервис (предупреждение: на этом шаге будут удалены все данные хранилища).