Hologres V2.0 では、仮想ウェアハウスインスタンスが新しいタイプの弾力性と高可用性を備えたインスタンスとして導入されました。コンピューティングリソースは、高可用性シナリオにより適した複数の仮想ウェアハウスに分割されます。このトピックでは、仮想ウェアハウスの使用方法について説明します。
背景情報
Hologres V2.0 では、仮想ウェアハウスインスタンスが新しいタイプのインスタンスとして導入されました。コンピューティングリソースは異なる仮想ウェアハウスに分割され、読み書き分離、リソース隔離、ビジネス隔離などの複数のシナリオを効果的にサポートします。これにより、リソースの隔離と弾力性などのコア機能がユーザーに提供されます。仮想ウェアハウスのアーキテクチャの詳細については、「仮想ウェアハウスインスタンスのアーキテクチャ」をご参照ください。
注意事項
仮想ウェアハウスインスタンスは、Hologres V2.0.4 以降でのみサポートされています。Hologres インスタンスのバージョンが V2.0.4 より前の場合、Hologres コンソールで Hologres インスタンスを手動でアップグレードするか、Hologres DingTalk グループに参加してテクニカルサポートを受けてください。Hologres コンソールで Hologres インスタンスを手動でアップグレードする方法の詳細については、「インスタンスのアップグレード」をご参照ください。Hologres DingTalk グループへの参加方法の詳細については、「Hologres のオンラインサポートを受ける」をご参照ください。
仮想ウェアハウスインスタンスを作成する
このセクションでは、読み書き分離を実装するために仮想ウェアハウス read_warehouse_1
が作成されます。仮想ウェアハウス init_warehouse
はデータの書き込みに使用され、仮想ウェアハウス read_warehouse_1
はデータの読み取りに使用されます。
データベースを作成する
スーパーユーザーとして HoloWeb コンソールにログオンし、
erp_database
という名前のデータベースを作成します。詳細については、「データベースを作成する」をご参照ください。次の SQL 文を実行して、サンプルデータをデータベースにインポートします。
DROP FOREIGN TABLE IF EXISTS odps_customer_10g; DROP FOREIGN TABLE IF EXISTS odps_lineitem_10g; DROP FOREIGN TABLE IF EXISTS odps_nation_10g; DROP FOREIGN TABLE IF EXISTS odps_orders_10g; DROP FOREIGN TABLE IF EXISTS odps_part_10g; DROP FOREIGN TABLE IF EXISTS odps_partsupp_10g; DROP FOREIGN TABLE IF EXISTS odps_region_10g; DROP FOREIGN TABLE IF EXISTS odps_supplier_10g; IMPORT FOREIGN SCHEMA "MAXCOMPUTE_PUBLIC_DATA#default" LIMIT to ( odps_customer_10g, odps_lineitem_10g, odps_nation_10g, odps_orders_10g, odps_part_10g, odps_partsupp_10g, odps_region_10g, odps_supplier_10g ) FROM SERVER odps_server INTO public OPTIONS(if_table_exist'error',if_unsupported_type'error'); // 以降のコードは省略
仮想ウェアハウスを作成する
Hologres コンソール にログオンし、特定のインスタンスの [インスタンスの詳細] ページに移動します。
左側のナビゲーションウィンドウで、[仮想ウェアハウス管理] をクリックして、[仮想ウェアハウスリソース管理] タブに移動します。このタブには、既存の仮想ウェアハウスのリストが表示されます。
[仮想ウェアハウスの作成] をクリックします。表示されるダイアログボックスで、[仮想ウェアハウス名] パラメーターと [仮想ウェアハウスリソース] パラメーターを構成して、仮想ウェアハウスを作成します。
この例では、
read_warehouse_1
という名前の仮想ウェアハウスが作成されます。[OK] をクリックします。
[仮想ウェアハウス管理] ページで、仮想ウェアハウスのステータスを確認します。仮想ウェアハウスの [ステータス] が [実行中] になると、仮想ウェアハウスが正常に作成されます。
仮想ウェアハウスにデータを読み込む
テーブルグループは、Hologres にデータを格納するために使用されます。デフォルトでは、新しい仮想ウェアハウスを使用してテーブルグループにアクセスすることはできません。仮想ウェアハウスを使用してテーブルグループにアクセスするには、テーブルグループに対する必要な権限を仮想ウェアハウスに付与する必要があります。
現在のデータベースに構成されているテーブルグループを表示します。
次の SQL 文を実行して、現在のデータベースに構成されているテーブルグループを表示します。
SELECT tablegroup_name FROM hologres.hg_table_group_properties GROUP BY tablegroup_name;
次の図は、返された結果を示しています。
現在のデータベースには、1 つのテーブルグループのみが構成されています。
テーブルグループを仮想ウェアハウスに読み込みます。
この例では、仮想ウェアハウス read_warehouse_1 を使用して、データベース内のテーブルグループ erp_database_tg_default のデータを読み取る必要があります。この場合、次の SQL 文を実行して、テーブルグループ erp_database_tg_default を仮想ウェアハウス read_warehouse_1 に読み込む必要があります。
CALL hg_table_group_load_to_warehouse('erp_database.erp_database_tg_default', 'read_warehouse_1', 1);
テーブルグループが仮想ウェアハウスに読み込まれているかどうかを確認します。
SELECT * FROM hologres.hg_warehouse_table_groups;
次の図は、返された結果を示しています。
テーブルグループ erp_database_tg_default のデータが仮想ウェアハウス read_warehouse_1 に読み込まれます。
RAM ユーザーに権限を付与する
デフォルトでは、RAM ユーザーが新しい仮想ウェアハウスを使用できるようにするには、RAM ユーザーに新しい仮想ウェアハウスに対する権限を付与する必要があります。次の手順では、仮想ウェアハウス read_warehouse_1 に対する権限を RAM ユーザー ram_test
に付与する方法について説明します。
仮想ウェアハウスに対する権限を表示します。
SELECT * FROM hologres.hg_warehouse_users;
デフォルトの仮想ウェアハウスの構成を表示します。
SELECT * FROM hologres.hg_user_default_warehouse;
RAM ユーザーを Hologres インスタンスに追加します。
HoloWeb コンソールにログオンします。[ユーザー管理] ページで、RAM ユーザーを Hologres インスタンスに追加します。詳細については、「ユーザーを管理する」をご参照ください。
データベース
erp_database
に対する読み取り権限を RAM ユーザーram_test
に付与します。HoloWeb コンソールの [データベース認証] ページで、データベースに対する読み取り権限を RAM ユーザー
ram_test
に付与します。詳細については、「RAM ユーザーに権限を付与する」をご参照ください。仮想ウェアハウス read_warehouse_1 に対する権限を RAM ユーザー
ram_test
に付与します。CALL hg_grant_warehouse_access_privilege ('read_warehouse_1', 'p4_2xxxxxxxxxxxxxxx');
詳細については、「仮想ウェアハウスの権限を管理する」をご参照ください。
仮想ウェアハウス read_warehouse_1 を RAM ユーザー
ram_test
のデフォルトの仮想ウェアハウスとして構成します。この例では、RAM ユーザー
ram_test
は Hologres インスタンスにアクセスし、仮想ウェアハウス read_warehouse_1 を使用して読み書き分離を実装する必要があります。この場合、次の文を実行して、read_warehouse_1 を RAM ユーザーram_test
のデフォルトの仮想ウェアハウスとして構成する必要があります。CALL hg_set_user_default_warehouse('p4_2xxxxxxxxxxxxxxx', 'read_warehouse_1');
RAM ユーザーが使用している仮想ウェアハウスを表示します。
次の文を実行して、RAM ユーザー
ram_test
が仮想ウェアハウス read_warehouse_1 を使用しているかどうかを確認します。SELECT current_warehouse();
仮想ウェアハウス間のトラフィックを切り替える
仮想ウェアハウス read_warehouse_1
を作成した後に障害が発生した場合、RAM ユーザー ram_test
のトラフィックを仮想ウェアハウス init_warehouse に切り替える必要があります。
トラフィックのスイッチオーバーは、接続が再確立された後にのみ有効になります。そのため、Hologres に接続するアプリケーションに再接続メカニズムが実装されていることを確認する必要があります。
アプリケーションを Hologres に接続する場合は、Hologres の自動ルーティングロジックを使用する必要があります。接続文字列で仮想ウェアハウスを指定しないでください。
仮想ウェアハウス init_warehouse に対する権限を RAM ユーザー
ram_test
に付与します。init_warehouse に対する権限を RAM ユーザー
ram_test
に付与していない場合は、次の文を実行して、ram_test
に init_warehouse に対する権限を付与する必要があります。CALL hg_grant_warehouse_access_privilege('init_warehouse', 'p4_2xxxxxxxxxxxxxxx');
init_warehouse を RAM ユーザー
ram_test
のデフォルトの仮想ウェアハウスとして構成します。次の文を実行して、init_warehouse を RAM ユーザー
ram_test
のデフォルトの仮想ウェアハウスとして構成します。構成が完了すると、RAM ユーザーと Hologres インスタンスの間で接続が再確立された場合に、init_warehouse が使用されます。CALL hg_set_user_default_warehouse('p4_2xxxxxxxxxxxxxxx', 'init_warehouse');
すべてのユーザーとデフォルト以外の仮想ウェアハウス間の接続を切断します。
SELECT hg_kill_non_default_warehouse_connections();
接続が再確立されると、RAM ユーザー ram_test は新しいデフォルトの仮想ウェアハウスを使用します。