Compute Group
Compute Group は、ストレージ・コンピュート分離アーキテクチャにおいて異なるワークロード間の物理的分離を実現するメカニズムです。Compute Group の基本原理は以下の図で説明されています:

-
1つ以上のBEノードでCompute Groupを構成できます。
-
BEノードはローカルではステートレスで、データは共有ストレージに保存されます。
-
複数のCompute Groupが共有ストレージを通じてデータにアクセスします。
Resource Groupのような強力な分離の利点を維持しながら、Compute Groupは以下の優位性を提供します:
-
より低コスト:ストレージ・コンピュート分離アーキテクチャにより、データは共有ストレージに存在するため、Compute Groupの数はレプリカ数によって制限されなくなりました。ユーザーはストレージコストを増加させることなく、必要に応じて任意の数のCompute Groupを作成できます。
-
より高い柔軟性:ストレージ・コンピュート分離アーキテクチャでは、BEノード上のデータはキャッシュされるため、Compute Groupを追加する際に煩雑なデータ移行プロセスは不要です。新しいCompute Groupはクエリ実行時にキャッシュのウォームアップを行うだけで済みます。
-
より良い分離:データの可用性は共有ストレージ層で処理されるため、任意のCompute Group内のBEノードの障害が、Resource Groupで発生するようなデータ読み込み失敗を引き起こすことはありません。
3.0.2より前では、Compute Clusterと呼ばれていました。
全Compute Groupの表示
SHOW COMPUTE GROUPSコマンドを使用して、現在のリポジトリ内の全てのcompute groupを表示します。返される結果は、ユーザーの権限レベルに基づいて異なる内容が表示されます:
ADMIN権限を持つユーザーは全てのcompute groupを表示できます- 一般ユーザーは使用権限(USAGE_PRIV)を持つcompute groupのみを表示できます
- ユーザーがいずれのcompute groupに対しても使用権限を持たない場合、空の結果が返されます
SHOW COMPUTE GROUPS;
Compute Groupの追加
compute groupの管理にはOPERATOR権限が必要です。この権限はノード管理の許可を制御します。詳細については、Privilege Managementを参照してください。デフォルトでは、rootアカウントのみがOPERATOR権限を持っていますが、GRANTコマンドを使用して他のアカウントに付与することができます。
BEを追加してcompute groupに割り当てるには、Add BEコマンドを使用します。例:
ALTER SYSTEM ADD BACKEND 'host:9050' PROPERTIES ("tag.compute_group_name" = "new_group");
上記のsqlはhost:9050をcompute group new_groupに追加します。PROPERTIES文を省略した場合、BEはcompute group default_compute_groupに追加されます。例:
ALTER SYSTEM ADD BACKEND 'host:9050';
Compute Group アクセスの付与
前提条件: 現在の操作ユーザーが 'ADMIN' 権限を持っているか、現在のユーザーが admin ロールに属している。
GRANT USAGE_PRIV ON COMPUTE GROUP {compute_group_name} TO {user}
Compute Group アクセスの取り消し
前提条件:現在の操作ユーザーが'ADMIN'権限を持っているか、現在のユーザーがadminロールに属していること。
REVOKE USAGE_PRIV ON COMPUTE GROUP {compute_group_name} FROM {user}
デフォルトCompute Groupの設定
現在のユーザーのデフォルトcompute groupを設定するには(この操作では、現在のユーザーがすでにそのcomputing groupを使用する権限を持っている必要があります):
SET PROPERTY 'default_compute_group' = '{clusterName}';
他のユーザーのデフォルトcompute groupを設定するには(この操作にはAdmin権限が必要です):
SET PROPERTY FOR {user} 'default_compute_group' = '{clusterName}';
現在のユーザーのデフォルトコンピュートグループを確認するには、返された結果のdefault_compute_groupの値がデフォルトコンピュートグループです:
SHOW PROPERTY;
他のユーザーのデフォルトcompute groupを表示するには、この操作では現在のユーザーが管理者権限を持っている必要があり、返された結果のdefault_compute_groupの値がデフォルトcompute groupです:
SHOW PROPERTY FOR {user};
現在のリポジトリで利用可能なすべてのcompute groupを表示するには:
SHOW COMPUTE GROUPS;
- 現在のユーザーがAdmin roleを持つ場合、例えば:
CREATE USER jack IDENTIFIED BY '123456' DEFAULT ROLE "admin"の場合:- 自分自身と他のユーザーのデフォルトcompute groupを設定できます
- 自分自身と他のユーザーの
PROPERTYを表示できます
- 現在のユーザーがAdmin roleを持たない場合、例えば:
CREATE USER jack1 IDENTIFIED BY '123456'の場合:- 自分自身のデフォルトcompute groupを設定できます
- 自分自身の
PROPERTYを表示できます - すべてのcompute groupを表示することはできません。この操作には
GRANT ADMIN権限が必要です
- 現在のユーザーがデフォルトcompute groupを設定していない場合、既存のシステムはデータの読み書き操作を実行する際にエラーを発生させます。この問題を解決するために、ユーザーは
use @clusterコマンドを実行して現在のコンテキストで使用されるcompute groupを指定するか、SET PROPERTY文を使用してデフォルトcompute groupを設定できます。 - 現在のユーザーがデフォルトcompute groupを設定しているが、そのclusterがその後削除された場合、データの読み書き操作時にエラーが発生します。ユーザーは
use @clusterコマンドを実行して現在のコンテキストで使用されるcompute groupを再指定するか、SET PROPERTY文を使用してデフォルトcluster設定を更新できます。
Compute Groupの切り替え
ユーザーは、コンピュート・ストレージ分離アーキテクチャで使用するデータベースとcompute groupを指定できます。
構文
USE { [catalog_name.]database_name[@compute_group_name] | @compute_group_name }
データベースまたはcompute group名に予約キーワードが含まれている場合、対応する名前はバッククォート```で囲む必要があります。
Compute Groupのスケーリング
ALTER SYSTEM ADD BACKENDとALTER SYSTEM DECOMMISION BACKENDを使用してBEを追加または削除することで、compute groupをスケールできます。