AnalyticDB for MySQL カタログを使用すると、既存の AnalyticDB for MySQL データベースを Flink SQL に直接マッピングでき、DDL ステートメントを手動で記述せずにテーブルを参照できます。カタログを作成後、そのカタログ内のテーブルを Flink SQL デプロイメントにおけるディメンションテーブルまたは結果テーブルとして使用できます。
前提条件
作業を開始する前に、以下の要件を満たしていることを確認してください。
-
Realtime Compute for Apache Flink が Ververica Runtime (VVR) 6.0.2 以降で実行されていること
-
AnalyticDB for MySQL データベースのホスト名(または IP アドレス)、ポート、ユーザー名、およびパスワード
制限事項
-
カタログの DDL ステートメントは、作成後に変更できません。
-
カタログテーブルは読み取り専用です。カタログ経由でデータベースやテーブルの作成、変更、削除はできません。
-
カタログテーブルはディメンションテーブルおよび結果テーブルとしてのみ使用可能で、ソーステーブルとしては使用できません。
カタログの作成
SQL エディターのScripts タブで、次の文を入力して実行します:
CREATE CATALOG <catalogName> WITH (
'type' = 'adb3.0',
'hostName' = '<hostname>',
'port' = '<port>',
'userName' = '<username>',
'password' = '<password>',
'defaultDatabase' = '<dbname>'
);
| パラメーター | 必須 | 説明 |
|---|---|---|
catalogName |
はい | カタログの名前。 |
type |
はい | カタログのタイプ。adb3.0 を指定します。 |
hostName |
はい | AnalyticDB for MySQL データベースの IP アドレスまたはホスト名。 |
port |
いいえ | データベースへの接続に使用するポート。デフォルト:3306。 |
userName |
はい | データベースのユーザー名。 |
password |
はい | データベースのパスワード。 |
defaultDatabase |
はい | デフォルトデータベースの名前。 |
ステートメントを選択し、エディター左側の [実行] をクリックします。
カタログメタデータの表示
-
Realtime Compute for Apache Flink コンソール にログインします。
-
ワークスペースを見つけ、[コンソール] を [操作] 列でクリックします。
-
左側のナビゲーションウィンドウで、[カタログ] をクリックします。
-
[カタログ一覧] ページで、対象のカタログを見つけ、[カタログ名] 列と [タイプ] 列を確認します。カタログ内のデータベースおよびテーブルを参照するには、[操作] 列の [表示] をクリックします。
カタログテーブルの使用
カタログテーブルは、AnalyticDB for MySQL の名前空間に対応する 3 部構成の識別子を使用します。
| Flink 名前空間 | AnalyticDB for MySQL 名前空間 |
|---|---|
| カタログ名 | (Flink のみ) |
| データベース名 | データベース名 |
| テーブル名 | テーブル名 |
カタログテーブルは、`<catalog>`.`<database>`.`<table>` の形式で参照します。
ディメンションテーブルとしての使用
時間的結合(Temporal Join)でカタログテーブルを参照します。
INSERT INTO <other_sink_table>
SELECT ...
FROM <other_source_table> AS e
JOIN `<adb_mysql_catalog>`.`<db_name>`.`<table_name>` FOR SYSTEM_TIME AS OF e.proctime AS w
ON e.id = w.id;
結果テーブルとしての使用
クエリ結果をカタログテーブルに直接書き込みます。
INSERT INTO `<adb_mysql_catalog>`.`<db_name>`.`<table_name>`
SELECT ...
FROM <other_source_table>;
追加のコネクタオプションを渡す場合は、DDL を変更せずに SQL ヒント を使用します。たとえば、AnalyticDB for MySQL V3.0 結果テーブル で replaceMode を有効にする場合:
INSERT INTO `<adb_mysql_catalog>`.`<db_name>`.`<table_name>` /*+ OPTIONS('replaceMode'='true') */
SELECT ...
FROM <other_source_table>;
カタログの削除
カタログを削除しても、実行中のデプロイメントには影響しません。ただし、このカタログ内のテーブルを参照している下書きがある場合、その下書きを公開したりデプロイメントを再起動したりすると、該当テーブルが見つからず失敗します。
UI(推奨)または SQL ステートメントでカタログを削除できます。
UI からのドロップ
-
Realtime Compute for Apache Flink コンソール にログインします。
-
[フルマネージド Flink] タブで、ご利用のワークスペースを見つけ、[操作] 列の [コンソール] をクリックします。
-
左側のナビゲーションウィンドウで、[カタログ] をクリックします。
-
[カタログ一覧] ページで、対象のカタログを見つけ、[操作] 列の [削除] をクリックします。
-
確認ダイアログで、[削除] をクリックします。
-
ページ左側の [カタログ] ウィンドウに、カタログが表示されなくなったことを確認します。
SQL ステートメントによる削除
-
SQL エディターの[スクリプト]タブで、次の文を入力します:
DROP CATALOG <catalogName>; -
ステートメントを右クリックし、[実行] を選択します。
-
ページ左側の [カタログ] ウィンドウに、カタログが表示されなくなったことを確認します。