Перейти к основному содержимому
Перейти к основному содержимому

Склады

Что такое разделение вычислений?

Разделение вычислений доступно на уровнях Scale и Enterprise.

Каждый сервис ClickHouse Cloud включает в себя:

  • Группу из двух или более узлов ClickHouse (или реплик), но дочерние службы могут быть с единственной репликой.
  • Конечную точку (или несколько конечных точек, созданных через интерфейс ClickHouse Cloud), что представляет собой URL сервиса, который вы используете для подключения к сервису (например, https://dv2fzne24g.us-east-1.aws.clickhouse.cloud:8443).
  • Папку объектного хранилища, в которой сервис хранит все данные и частично метаданные:
примечание

Дочерние отдельные сервисы могут масштабироваться вертикально, в отличие от единственных родительских сервисов.


NEEDS ALT

Рис. 1 - текущий сервис в ClickHouse Cloud

Разделение вычислений позволяет пользователям создавать несколько групп вычислительных узлов, каждая из которых имеет свою конечную точку и использует одну и ту же папку объектного хранилища, а значит, и одни и те же таблицы, представления и т.д.

Каждая группа узлов вычислений будет иметь свою конечную точку, так что вы можете выбрать, какой набор реплик использовать для своих рабочей нагрузки. Некоторые ваши рабочие нагрузки могут быть удовлетворены только одной маленькой репликой, а другие могут требовать полной высокой доступности (HA) и сотен гигабайт памяти. Разделение вычислений также позволяет разделять операции чтения и записи, чтобы они не мешали друг другу:


NEEDS ALT

Рис. 2 - вычисления ClickHouse Cloud

В этой программе частного предварительного просмотра вы сможете создавать дополнительные сервисы, которые будут делить те же данные с вашими существующими сервисами, или создать совершенно новую настройку с несколькими сервисами, которые делят те же данные.

Что такое склад?

В ClickHouse Cloud склад - это набор сервисов, которые делят одни и те же данные. Каждый склад имеет основной сервис (этот сервис был создан первым) и вторичные сервисы. Например, на скриншоте ниже вы можете видеть склад "DWH Prod" с двумя сервисами:

  • Основной сервис DWH Prod
  • Вторичный сервис DWH Prod Subservice

NEEDS ALT

Рис. 3 - Пример склада

Все сервисы в складе используют одни и те же:

  • Регион (например, us-east1)
  • Облачный провайдер (AWS, GCP или Azure)
  • Версия базы данных ClickHouse

Вы можете сортировать сервисы по складу, к которому они принадлежат.

Контроль доступа

Учетные данные базы данных

Поскольку все в складе используют один и тот же набор таблиц, они также делят контроль доступа к другим сервисам. Это означает, что все пользователи базы данных, созданные в Сервисе 1, также смогут использовать Сервис 2 с теми же правами (предоставления на таблицы, представления и т.д.), и наоборот. Пользователи будут использовать другую конечную точку для каждого сервиса, но будут использовать одно и то же имя пользователя и пароль. Другими словами, пользователи делятся между сервисами, работающими с одним и тем же хранилищем:


NEEDS ALT

Рис. 4 - пользователь Алиса создан в Сервисе 1, но она может использовать те же учетные данные для доступа ко всем сервисам, которые делят одни и те же данные

Контроль сетевого доступа

Часто полезно ограничить доступ к конкретным сервисам от других приложений или случайных пользователей. Это можно сделать с помощью сетевых ограничений, аналогично тому, как это сейчас настраивается для обычных сервисов (перейдите в Настройки на вкладке сервиса в конкретном сервисе в консоли ClickHouse Cloud).

Вы можете применять настройки фильтрации IP к каждому сервису отдельно, что означает, что вы можете контролировать, какое приложение может получить доступ к какому сервису. Это позволяет вам ограничивать пользователей в использовании конкретных сервисов:


NEEDS ALT

Рис. 5 - Алиса ограничена в доступе к Сервису 2 из-за настроек сети

Чтение против чтения-записи

Иногда полезно ограничить доступ на запись к конкретному сервису и разрешить записи только для подмножества сервисов в складе. Это можно сделать при создании второго и nth сервисов (первый сервис всегда должен быть на чтение-запись):


NEEDS ALT

Рис. 6 - Сервисы на чтение-запись и только на чтение в складе

примечание

Сервисы только на чтение в настоящее время позволяют выполнять операции управления пользователями (создание, удаление и т.д.). Это поведение может измениться в будущем.

Масштабирование

Каждый сервис в складе можно настроить в соответствии с вашей рабочей нагрузкой по следующим параметрам:

  • Число узлов (реплик). Основной сервис (сервис, который был создан первым в складе) должен иметь 2 или более узлов. Каждому вторичному сервису может быть присвоено 1 или более узлов.
  • Размер узлов (реплик)
  • Если сервис должен автоматически масштабироваться
  • Если сервис должен быть неактивен при бездействии (не может быть применено к первому сервису в группе - см. раздел Ограничения)

Изменения в поведении

Как только разделение вычислений включено для сервиса (был создан как минимум один вторичный сервис), вызов функции clusterAllReplicas() с именем кластера default будет использовать только реплики из сервиса, в котором он был вызван. Это означает, что если два сервиса подключены к одному и тому же набору данных, и clusterAllReplicas(default, system, processes) вызывается из сервиса 1, то будут показаны только процессы, работающие на сервисе 1. Если необходимо, вы все равно можете вызвать clusterAllReplicas('all_groups.default', system, processes), например, чтобы достичь всех реплик.

Ограничения

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

  1. Основной сервис всегда должен быть запущен и не должен быть неактивен (ограничение будет снято некоторое время после GA). Во время частного предварительного просмотра и некоторое время после GA основной сервис (обычно существующий сервис, который вы хотите расширить, добавив другие сервисы) будет всегда запущен и будет иметь настройку бездействия отключенной. Вы не сможете остановить или вывести из строя основной сервис, если есть хотя бы одна вторичная служба. После удаления всех вторичных сервисов вы снова сможете остановить или неактивировать исходный сервис.

  2. Иногда рабочие нагрузки не могут быть изолированы. Хотя цель состоит в том, чтобы предоставить вам возможность изолировать рабочие нагрузки базы данных друг от друга, могут быть крайние случаи, когда одна рабочая нагрузка в одном сервисе повлияет на другой сервис, разделяющий одни и те же данные. Эти ситуации довольно редки и в основном связаны с OLTP-подобными рабочими нагрузками.

  3. Все службы на чтение-запись выполняют фоновые операции слияния. При вставке данных в ClickHouse база данных сначала вставляет данные в некоторые промежуточные партиции, а затем выполняет слияния в фоновом режиме. Эти слияния могут потреблять ресурсы памяти и ЦП. Когда два сервиса на чтение-запись делят одно и то же хранилище, оба они выполняют фоновые операции. Это означает, что может возникнуть ситуация, когда в Сервисе 1 выполняется запрос INSERT, но операция слияния завершается в Сервисе 2. Обратите внимание, что сервисы только на чтение не выполняют фоновые слияния, и, следовательно, не тратят свои ресурсы на эту операцию.

  4. Вставки в один сервис на чтение-запись могут предотвратить возможность неактивности другого сервиса на чтение-запись, если неактивность включена. Из-за предыдущего пункта второй сервис выполняет фоновые операции слияния для первого сервиса. Эти фоновые операции могут помешать второму сервису перейти в спящий режим при бездействии. После завершения фоновых операций сервис будет неактивен. Сервисы только на чтение не затрагиваются и будут неактивны без задержки.

  5. Запросы CREATE/RENAME/DROP DATABASE могут быть заблокированы неактивными/остановленными сервисами по умолчанию. Эти запросы могут зависать. Чтобы обойти это, вы можете выполнять запросы на управление базами данных с settings distributed_ddl_task_timeout=0 на уровне сессии или для конкретного запроса. Например:

  1. В очень редких случаях вторичные сервисы, которые были неактивны или остановлены в течение длительного времени (дней) без пробуждения/запуска, могут вызвать снижение производительности других сервисов в одном складе. Эта проблема будет решена скоро и связана с мутациями, выполняемыми в фоновом режиме. Если вы считаете, что сталкиваетесь с этой проблемой, пожалуйста, свяжитесь с поддержкой ClickHouse Support.

Цены

Дополнительные сервисы, созданные во время частного предварительного просмотра, оцениваются в обычном порядке. Цены на вычисления одинаковые для всех сервисов в складе (основных и вторичных). Хранение оплачивается только один раз - оно включено в первый (оригинальный) сервис.

Резервные копии

  • Поскольку все сервисы в одном складе делят одно и то же хранилище, резервные копии создаются только на основном (начальном) сервисе. Таким образом, данные для всех сервисов в складе резервируются.
  • Если вы восстанавливаете резервную копию из основного сервиса склада, она будет восстановлена в совершенно новом сервисе, не связанном с существующим складом. Вы можете сразу же добавить дополнительные сервисы в новый сервис после завершения восстановления.

Использование складов

Создание склада

Чтобы создать склад, необходимо создать второй сервис, который будет делить данные с существующим сервисом. Это можно сделать, нажав на знак плюса на любом из существующих сервисов:


NEEDS ALT

Рис. 7 - Нажмите на знак плюса, чтобы создать новый сервис в складе

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

Переименование склада

Существует два способа переименовать склад:

  • Вы можете выбрать "Сортировка по складу" на странице сервисов в правом верхнем углу и затем кликнуть на иконку карандаша рядом с именем склада.
  • Вы можете кликнуть на имя склада на любом из сервисов и переименовать склад там.

Удаление склада

Удаление склада означает удаление всех вычислительных сервисов и данных (таблицы, представления, пользователи и т.д.). Это действие не может быть отменено. Вы можете удалить склад, удалив первый созданный сервис. Для этого:

  1. Удалите все сервисы, которые были созданы вместе с сервисом, который был создан первым;
  2. Удалите первый сервис (предупреждение: все данные склада будут удалены на этом шаге).