分析クラスタでは、複数のデータソースに存在する複数のオブジェクトのテーブル統合がサポートされています。本稿ではテーブル統合の設定方法を詳細に説明します。
前提条件
クラスタの状態は稼働中です。
データベーステーブル自動マージ
注意:
バージョン4.2509.x以降のみが自動マッピングポリシーをサポートします。
1. データオブジェクトページで、同期とマッピング設定をクリックし、設定ページに移動します。
2. ステップ3の高度なマッピング設定では、高度なマッピング設定のポリシーを設定いただけます。
高度なポリシー設定で、ポリシーの追加をクリックします。追加されたポリシーは正規表現に基づき、類似のテーブル名ルールに一致するすべてのテーブルを特定のテーブルにマージできます。詳細な説明については、テーブルマッピングの高度なポリシーに関する記述を参照してください。 手動データベースマージ
オブジェクトを分析クラスタに同期した後、複数のソースデータベースインスタンスのデータを分析エンジンの同一データベース下に配置する必要がある場合、テーブルマージ機能を使用して実現できます。
2. 左側のクラスタリストでターゲットクラスタをクリックすると、クラスタ管理ページに移動します。
3. クラスタ詳細ページのコンピュートノードで詳細をクリックし、インスタンス詳細ページに移動します。
4. オブジェクト情報で、マージ対象のすべてのテーブルを選択し、上部のマッピング設定をクリックします。
5. ポップアップでテーブルマージ機能を有効にするボタンをクリックし、検証をクリックします。これにより、選択されたすべてのオブジェクトのマッピングデータベース名は、最初の行のオブジェクトに設定されたマッピングデータベースにマージされます。
手動でテーブルをマージします。
オブジェクトを分析クラスタに同期した後、複数のテーブル構造が同じテーブルを1つのテーブルにマージする必要がある場合、分析クラスタのテーブルマージ機能で実現できます。
テーブルマージ機能には以下の使用要件があります:
マージ対象のテーブル間でテーブル構造が一致している必要があります。
マージ対象のテーブルはすべて分析クラスタに同期されている必要があります。
ソース側テーブルでDDL操作を実行する場合、分析クラスタではデフォルトでマージ済みテーブルをクエリできません。マージ済みテーブルのすべての元テーブルのテーブル構造が一致するのを待ってから、クエリおよび使用する必要があります。
注意:
分析クラスタでは、マージ済みテーブルのソーステーブルに対してDDL変更(例えば、カラムの追加、変更、削除など)を行う場合、システムには2種類の処理戦略があります。
ペシミスティック調整モード:マージ済みテーブルのいずれかのソーステーブルのテーブル構造がマスターテーブルと異なる場合、クエリができなくなります。この処理戦略がデフォルトで採用されます。
楽観的調整モード:マージ済みテーブルは常にマスターテーブルのテーブル構造に基づいており、マージ済みテーブルのクエリに影響を与えません。このオプションはデフォルトで無効になっており、有効にする必要がある場合は、チケットを提出して申請してください。 操作手順
2. 左側のクラスタリストでターゲットクラスタをクリックすると、クラスタ管理ページに移動します。
3. クラスタ詳細ページのコンピュートノードで詳細をクリックし、インスタンス詳細ページに移動します。
4. オブジェクト情報で、マージが必要なすべてのテーブルを選択し、上部のマッピング設定をクリックします。
5. ポップアップでマージ済みテーブルのボタンを有効にし、検証をクリックします。これにより、現在選択されているすべてのオブジェクトのマッピングライブラリ名が、最初の行のオブジェクトに設定されたマッピングテーブルに統合されます。
説明:
分析クラスタのマッピング名はいつでも変更可能であり、テーブルマージも随時変更または取り消しが可能です。変更後は即時反映されます。
既存テーブルへのマージ:この項目にチェックを入れ、他のライブラリ名とテーブル名を選択した場合、現在選択されているすべてのテーブルを他のテーブルにマージすることを意味します。
仮想列の追加:この項目を選択すると、マージ後のテーブルに新規の仮想列が追加されます。仮想列は各行のレコードに識別子を付与し、このデータがどのデータソースから取得されたかを識別します。入力値はカスタマイズ可能で、デフォルトはインスタンスIDです。
注意:
マージ対象の複数のソーステーブルに自動増分主キーが存在する場合、分析エンジンにマージした後も主キーの競合問題は発生しません。データベース自体が主キーの競合を回避できますが、マージ後の自動増分主キー列には重複値が発生します。データの一意性を確認できない場合は、仮想列機能をご利用いただけます。
_libra_aggidフィールドはデフォルトでvarcharタイプであり、各種varcharタイプがサポートする式と関数を利用可能ですが、効率的なテーブルデータのフィルタリングが可能なのは等号・不等号・in演算子のみです。
select * from database.merge_table;
+
| id | c1 | _libra_aggid |
+
| 1 | 1 | cdb-adf3123 |
| 2 | 2 | cdb-adf3123 |
| 1 | 1 | cdb-bda41ag |
| 2 | 2 | cdb-bda41ag |
| 1 | 1 | cdb-zd3123d |
| 2 | 2 | cdb-zd3123d |
+
6 rows in set(0.01 sec)
マスターテーブル:複数テーブルのマージシナリオでは、マージ対象のテーブルの中から1つをマスターテーブルとして指定する必要があります。分析エンジンにおけるマージ済みテーブルのクエリ時のテーブル構造は、このマスターテーブルに基づきます。マスターテーブルは使用中にいつでも変更できます。