Управление Compute Group: создание, предоставление прав доступа и масштабирование
Compute Group (в версиях до 3.0.2 называлась «Compute Cluster») — это механизм физической изоляции разных рабочих нагрузок в архитектуре с разделением хранения и вычислений. Compute Group состоит из одного или нескольких узлов BE. Несколько Compute Group обращаются к одним и тем же данным через общий слой хранения.

Основные характеристики:
- Узлы BE не хранят состояние локально, а данные находятся в общем хранилище.
- Несколько Compute Group используют одни и те же данные без дополнительных реплик.
- Добавление или удаление Compute Group не требует переноса данных: достаточно прогрева кеша при выполнении запросов.
По сравнению с Resource Group, Compute Group обладает следующими преимуществами:
| Критерий | Compute Group | Resource Group |
|---|---|---|
| Стоимость хранения | Данные находятся в общем хранилище. Число Compute Group не ограничено количеством реплик, а стоимость не растёт с увеличением числа групп. | При добавлении реплик стоимость хранения растёт линейно. |
| Гибкость масштабирования | Добавление новой Compute Group требует только прогрева кеша, без переноса данных. | Добавление реплики требует переноса большого объёма данных. |
| Полнота изоляции | Общий слой хранения гарантирует наличие нескольких реплик. Сбой узла BE в одной Compute Group не влияет на загрузку данных. | Сбой узла BE может привести к сбою загрузки данных. |
В версиях до 3.0.2 Compute Group называлась Compute Cluster.
Просмотр Compute Group
Просмотрите все Compute Group в текущем warehouse:
SHOW COMPUTE GROUPS;
Добавление Compute Group
Используйте команду ADD BACKEND, чтобы добавить узел BE и указать Compute Group, к которой он относится.
С указанием Compute Group:
ALTER SYSTEM ADD BACKEND 'host:9050' PROPERTIES ("tag.compute_group_name" = "new_group");
Без указания Compute Group (по умолчанию узел присоединяется к default_compute_group):
ALTER SYSTEM ADD BACKEND 'host:9050';
Управление правами доступа к Compute Group
Предоставление права доступа
Предоставьте пользователю право использовать указанную Compute Group:
GRANT USAGE_PRIV ON COMPUTE GROUP {compute_group_name} TO {user};
Отзыв права доступа
Отзовите у пользователя право использовать указанную Compute Group:
REVOKE USAGE_PRIV ON COMPUTE GROUP {compute_group_name} FROM {user};
Настройка Compute Group по умолчанию
Настройка и просмотр Compute Group по умолчанию
| Операция | Команда | Необходимые права |
|---|---|---|
| Задать Compute Group по умолчанию для текущего пользователя | SET PROPERTY 'default_compute_group' = '{clusterName}'; | Дополнительные права не требуются |
| Задать Compute Group по умолчанию для другого пользователя | SET PROPERTY FOR {user} 'default_compute_group' = '{clusterName}'; | Требуются права администратора |
| Просмотреть Compute Group по умолчанию для текущего пользователя | SHOW PROPERTY; | Дополнительные права не требуются |
| Просмотреть Compute Group по умолчанию для другого пользователя | SHOW PROPERTY FOR {user}; | Требуются соответствующие права на просмотр |
Значение поля default_compute_group в возвращаемом результате указывает текущую Compute Group по умолчанию.
Описание прав
Администратор (например, CREATE USER jack IDENTIFIED BY '123456' DEFAULT ROLE "admin"):
- Может задавать Compute Group по умолчанию для себя и других пользователей.
- Может просматривать
PROPERTYдля себя и других пользователей.
Обычный пользователь (например, CREATE USER jack1 IDENTIFIED BY '123456'):
- Может задавать Compute Group по умолчанию только для себя.
- Может просматривать только собственные
PROPERTY. - Не может выполнять
SHOW COMPUTE GROUPS(для этой операции требуется правоGRANT ADMIN).
Часто задаваемые вопросы
Вопрос: при чтении или записи данных возникает ошибка
Текущий пользователь не настроил Compute Group по умолчанию. Выполните use @cluster, чтобы указать Compute Group для текущего сеанса, или используйте SET PROPERTY, чтобы задать значение по умолчанию.
Вопрос: Compute Group по умолчанию задана, но при чтении и записи по-прежнему возникают ошибки
Ранее указанная Compute Group была удалена. Выполните use @cluster, чтобы указать её заново, или используйте SET PROPERTY, чтобы обновить настройку по умолчанию.
Автоматический выбор Compute Group по умолчанию
Если пользователь явно не задал Compute Group по умолчанию, система автоматически выбирает группу, которая соответствует следующим условиям:
- Содержит узлы BE в состоянии Active.
- Текущий пользователь имеет право её использовать.
В пределах одного сеанса Compute Group по умолчанию остаётся неизменной. При переходе к новому сеансу система автоматически выполняет повторный выбор в следующих случаях:
| Условие повторного выбора | Изменение выбора |
|---|---|
| Пользователь теряет право использовать ранее выбранную Compute Group | Всегда меняется |
| Добавлена или удалена Compute Group | Всегда меняется |
| В ранее выбранной Compute Group больше нет узлов BE в состоянии Active | Может измениться |
Переключение между Compute Group
В архитектуре с разделением хранения и вычислений можно указать базу данных и Compute Group в одном операторе:
USE { [catalog_name.]database_name[@compute_group_name] | @compute_group_name }
Если имя базы данных или Compute Group содержит зарезервированное ключевое слово, заключите соответствующее имя в обратные кавычки (`).
Масштабирование Compute Group
Для эластичного масштабирования Compute Group добавляйте или удаляйте узлы BE:
- Увеличение числа узлов:
ALTER SYSTEM ADD BACKENDдобавляет новый узел BE в указанную Compute Group. - Уменьшение числа узлов:
ALTER SYSTEM DECOMMISSION BACKENDвыводит узел BE из эксплуатации в Compute Group.
Подробные инструкции см. в разделе Эксплуатация в режиме разделения хранения и вычислений.