AnalyticDB for PostgreSQLはゼロETL機能を提供し、エンドツーエンドでデータを同期および管理し、トランザクション処理とデータ分析を統合するのに役立ちます。
概要
ビッグデータの時代では、企業は抽出、変換、負荷 (ETL) ツールを使用して、さまざまなシステムやプラットフォームに分散された大量のビジネスデータを効率的に管理および使用する必要があります。
ETLツールは、上位レベルのビジネスシステムからデータを抽出し、データを変換した後、データをデータウェアハウスにロードします。 このプロセスは、さらなるコンピューティング、分析、およびビジネス意思決定のために、分散データをデータウェアハウスに組み込む。
従来のETLプロセスには、次の課題があります。
リソースコストの増加: データソースごとに異なるETLツールが必要になる場合があり、ETLタスクの作成に追加料金が発生します。
システムの複雑さの増加: ETLツールのメンテナンスは、O&Mの難易度を高め、ビジネスアプリケーションの開発に集中できなくなります。
データの適時性の低下: 特定のETLプロセスには定期的なバッチ更新が含まれます。 ほぼリアルタイムのシナリオでは、分析結果を迅速に生成することはできません。
上記の問題を解決するために、Alibaba Cloud ApsaraDBは、オンライントランザクション処理 (OLTP) システムとオンライン分析処理 (OLAP) システム間でデータ同期タスクを作成できるゼロETL機能を提供しています。 ゼロETL機能は、OLTPシステムからデータを抽出し、データを変換し、データをOLAPシステムにロードして、エンドツーエンドでデータを同期および管理し、トランザクション処理とデータ分析を統合し、データ分析に集中するのに役立ちます。
AnalyticDB for PostgreSQLは、次のゼロETLタスクのみをサポートします。
PolarDB for PostgreSQLからAnalyticDB for PostgreSQLへのデータ同期タスク。
PolarDB for MySQLからAnalyticDB for PostgreSQLへのデータ同期タスク。
ApsaraDB RDS for PostgreSQLからAnalyticDB for PostgreSQLへのデータ同期タスク。
ApsaraDB RDS for MySQLからAnalyticDB for PostgreSQLへのデータ同期タスク。
メリット
使いやすさ: ETL操作を実行するために、複雑なデータパイプラインを作成または維持する必要はありません。 リアルタイムのデータ同期タスクを作成するには、ソースとターゲットのインスタンスまたはクラスターのみを選択する必要があります。 これにより、データパイプラインの構築と管理の課題が軽減され、アプリケーション開発に集中できるようになります。
ゼロコスト: ゼロETLタスクの追加料金は発生しません。 ゼロETL機能を使用すると、AnalyticDB for PostgreSQLに同期されたデータを無料で分析できます。
マルチソース集約: ゼロETL機能を使用すると、複数のソースインスタンスまたはクラスターからAnalyticDB for PostgreSQLインスタンスにデータをリアルタイムで同期してグローバル分析を行うことができます。
使用上の注意
データ同期タスクに関する使用状況のメモ:
PolarDB for PostgreSQLからのデータ同期タスクに関する使用上の注意事項については、「PolarDB for PostgreSQLクラスターからAnalyticDB for PostgreSQLインスタンスへのデータの同期」トピックの「使用上の注意事項」をご参照ください。
PolarDB for MySQLからのデータ同期タスクに関する使用上の注意事項については、「PolarDB for MySQLクラスターからAnalyticDB for PostgreSQLインスタンスへのデータの同期」トピックの「使用上の注意事項」をご参照ください。
ApsaraDB RDS for PostgreSQLからのデータ同期タスクの使用状況に関する注意事項については、「ApsaraDB RDS for PostgreSQLインスタンスからAnalyticDB for PostgreSQLインスタンスへのデータの同期」トピックの「使用状況に関する注意事項」をご参照ください。
ApsaraDB RDS for MySQLからのデータ同期タスクの使用状況に関する注意事項については、「ApsaraDB RDS for MySQLインスタンスからAnalyticDB for PostgreSQLインスタンスへのデータの同期」トピックの「使用状況に関する注意事項」をご参照ください。
サポートされるリージョン
次の地域はゼロETL機能をサポートしています: 中国 (深セン) 、中国 (杭州) 、中国 (上海) 、中国 (北京) 、中国 (張家口) 、中国 (ウランカブ) 、中国 (青島) 、中国 (広州) 、中国東部2金融、中国 (成都) 、中国 (香港) 、マレーシア (クアラルンプール) 、米国 (バージニア) 、米国 (シリコンバレー) 、ドイツ (フランクフルト) 、インドネシア (ジャカルタ) 、日本 (東京) 、シンガポール。
課金ルール
データ同期タスクに対しては課金されません。 ソースPolarDB for PostgreSQLクラスター、PolarDB for MySQLクラスター、ApsaraDB RDS for PostgreSQLインスタンス、またはApsaraDB RDS for MySQLインスタンス、およびターゲットAnalyticDB for PostgreSQLインスタンスに対してのみ課金されます。
前提条件
次のインスタンスまたはクラスターが作成されます。
AnalyticDB for PostgreSQLインスタンス。 詳細については、「インスタンスの作成」をご参照ください。
ApsaraDB RDS for PostgreSQLインスタンス、ApsaraDB RDS for MySQLインスタンス、PolarDB for PostgreSQLクラスター、またはPolarDB for MySQLクラスター。 詳細については、インスタンスの作成、ApsaraDB RDS For MySQLインスタンスの作成、クラスターの作成、サーバーレスクラスターの作成をご参照ください。
ApsaraDB RDS for PostgreSQLインスタンス、ApsaraDB RDS for MySQLインスタンス、PolarDB for PostgreSQLクラスター、またはPolarDB for MySQLクラスターのwal_levelパラメーターがlogicalに設定されています。 詳細については、「ApsaraDB RDS For PostgreSQLインスタンスからAnalyticDB for PostgreSQLインスタンスへのデータの同期」をご参照ください。
AnalyticDB for PostgreSQLインスタンスの使用可能なストレージ容量は、ApsaraDB RDS for PostgreSQLインスタンス、ApsaraDB RDS for MySQLインスタンス、PolarDB for PostgreSQLクラスター、またはPolarDB for MySQLクラスターの使用ストレージ容量よりも大きい。
準備
サービスにリンクされたロールの作成AnalyticDB for PostgreSQL
Resource Access Management (RAM) コンソールにログインします。 左側のナビゲーションウィンドウで、[アイデンティティ]> [ロール] を選択します。
AliyunServiceRoleForADBPGという名前のサービスにリンクされたロールがロールリストに存在するかどうかを確認します。 サービスにリンクされたロールが存在しない場合は、ロールを作成します。[ロール] ページの左上隅にある [ロールの作成] をクリックします。
[ロールタイプの選択] ステップで、[Alibaba Cloud Service] を選択し、[次へ] をクリックします。

[ロールの設定] ステップで、[ロールの種類] パラメーターに [サービスにリンクされたロール] を選択し、[サービスの選択] ドロップダウンリストから AnalyticDB for PostgreSQL を選択します。

[OK] をクリックします。 [ロール] ページに戻り、サービスにリンクされたロールが作成されているかどうかを確認します。
RAMユーザーに管理権限を付与
RAMユーザーがゼロETLタスクを作成および管理できるようにするには、次の操作を実行する必要があります。
RAMユーザーにAnalyticDB for PostgreSQLを管理する権限を付与する
RAMユーザーがAnalyticDB for PostgreSQLのゼロETLタスクを作成および管理する前に、AnalyticDB for PostgreSQLのAliyunGPDBFullAccessポリシーをRAMユーザーにアタッチする必要があります。 詳細については、「RAMユーザーへの権限付与」をご参照ください。
RAMユーザーにゼロETL機能を管理する権限を付与する
RAMユーザーがゼロETLタスクを作成および管理する前に、RAMユーザーはデータソースとAnalyticDB for PostgreSQL間でデータ同期タスクを作成する権限を持っている必要があります。 RAMユーザーがデータソースおよびAnalyticDB for PostgreSQLのすべてのインスタンスまたはクラスターに対してデータ同期タスクを作成できるようにするカスタムポリシーを設定できます。
すべてのApsaraDB RDS for PostgreSQL、ApsaraDB RDS for MySQL、PolarDB for PostgreSQL、PolarDB for MySQL、およびAnalyticDB for PostgreSQLインスタンスとクラスターに対する権限を付与します。 スクリプト例:
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "dts:*", "Resource": [ "acs:gpdb:*:*:*", "acs:rds:*:*:*", "acs:polardb:*:*:*" ] }, { "Effect": "Allow", "Action": [ "dts:DescribeRegions", "dts:DescribeConfigRelations", "dts:DescribeSrcLinkConfig", "dts:DescribeDestLinkConfig", "dts:DescribeLinkConfig" ], "Resource": [ "acs:gpdb:*:*:*" ] } ] }特定のApsaraDB RDS for PostgreSQLインスタンス、ApsaraDB RDS for MySQLインスタンス、PolarDB for PostgreSQLクラスター、PolarDB for MySQLクラスター、およびAnalyticDB for PostgreSQLインスタンスに対する権限を付与します。 スクリプト例:
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "dts:*", "Resource": [ "acs:gpdb:*:*:dbinstanc****", "acs:rds:*:*:dbinstance****", "acs:polardb:*:*:dbclus****" ] }, { "Effect": "Allow", "Action": [ "dts:DescribeRegions", "dts:DescribeConfigRelations", "dts:DescribeSrcLinkConfig", "dts:DescribeDestLinkConfig", "dts:DescribeLinkConfig" ], "Resource": "acs:dts:*:*:*" } ] }
RAMコンソールでカスタムポリシーを作成します。 詳細については、「カスタムポリシーの作成」をご参照ください。
手順
AnalyticDB for PostgreSQLコンソールにログインします。
ホームページの左上でリージョンを選択します。
管理するインスタンスを検索し、インスタンスIDをクリックします。
左側のナビゲーションウィンドウで、ゼロETLを選択します。 ページの左上隅にある [ゼロETLタスクの作成] をクリックします。

[ゼロETLタスクの作成] ページの [ソースデータベースと宛先データベースの設定] ステップで、ソースインスタンスと宛先インスタンスとクラスターのパラメーターを設定します。
次の表に、ソースインスタンスまたはクラスターのパラメーターを示します。
パラメーター
説明
例
タスク名
ゼロETLタスクの名前。
Zeroetltest
データベースエンジン
ソースインスタンスまたはクラスターのデータベースエンジン。 RDS for PostgreSQL、RDS for MySQL、PolarDB for MySQL、またはPolarDB for PostgreSQLを選択します。
RDS for PostgreSQL
アクセス方法
ソースインスタンスまたはクラスターのアクセス方法。 値は自動的にAlibaba Cloudインスタンスに設定されます。
Alibaba Cloudインスタンス
インスタンスリージョン
ソースインスタンスまたはクラスターが存在するリージョン。
中国 (上海)
インスタンス ID
ソースインスタンスまたはクラスターのID。
pgm-2ze ****
データベース名
ソースインスタンスまたはクラスター内のデータベースの名前。
testdb
データベースアカウント
ソースインスタンスまたはクラスターのデータベースアカウントの名前。
test
データベースパスワード
ソースインスタンスまたはクラスターのデータベースアカウントのパスワード。
パスワード ****
暗号化
ソースインスタンスまたはクラスターへの接続に使用される暗号化方法。 非暗号化またはSSL暗号化を選択します。
説明SSL暗号化は、証明書を使用して送信データを暗号化します。 これにより、データ漏洩が発生してもデータが復号化されない。
SSL暗号化
次の表に、ターゲットインスタンスのパラメーターを示します。
パラメーター
説明
例
データベースエンジン
ターゲットインスタンスのデータベースエンジン。 値は自動的にAnalyticDB for PostgreSQLに設定されます。
AnalyticDB for PostgreSQL
アクセス方法
ターゲットインスタンスのアクセス方法。 値は自動的にAlibaba Cloudインスタンスに設定されます。
Alibaba Cloudインスタンス
インスタンスリージョン
AnalyticDB for PostgreSQLインスタンスが存在するリージョン。
中国 (上海)
インスタンス ID
AnalyticDB for PostgreSQLインスタンスのID。
gp-2zeod ****
データベース名
AnalyticDB for PostgreSQLインスタンス内のデータベースの名前。
testdb
データベースアカウント
AnalyticDB for PostgreSQLインスタンスのデータベースアカウントの名前。
test
データベースパスワード
AnalyticDB for PostgreSQLインスタンスのデータベースアカウントのパスワード。
パスワード ****
[Test Connectivity] をクリックして続行します。 [ゼロETLの設定] ステップで、次の表に示すパラメーターを設定します。
パラメーター
説明
例
同期するDDLおよびDML操作
DML操作 (INSERT、UPDATE、およびDELETE)
および同期するDDL操作 (CREATE、ALTER、DROP、RENAME、およびTRUNCATE) 。
DML操作 (INSERT、UPDATE、およびDELETE) 。
DDL操作 (CREATE、ALTER、DROP、RENAME、およびTRUNCATE) 。
ソースオブジェクトと選択オブジェクト
同期するソースオブジェクトとオブジェクト。
パブリック
詳細設定 (オプション)
ソースインスタンスとターゲットインスタンスとクラスター間の接続が失敗した場合のリトライ時間、およびソースインスタンスとターゲットインスタンスとクラスターで発生したその他の問題のリトライ時間。
失敗した接続の再試行時間: 10分。
その他の問題の再試行時間: 10分。
[次へ: データベースフィールドとテーブルフィールドの設定] をクリックします。 [データベースおよびテーブルフィールドの設定] ステップで、次の表に示すパラメーターを設定します。
パラメーター
説明
例
データベース名
選択したデータベースの名前。
パブリック
テーブル名
選択したテーブルの名前。
table1
主キー列
選択したテーブルの主キー列。
id
配布キー
選択したテーブルの1つ以上の配布キー列。
id
Type
選択したテーブルのデータパーティションタイプ。
ハッシュ分散テーブル
定义ステータス
選択したテーブルのステータス。 テーブルフィールドを設定すると、テーブルのステータスが未定義から定義に変わります。
定義済み
上記のパラメーターを設定したら、[次へ: タスク設定の保存と事前チェック] をクリックします。

事前チェックが成功すると、システムは自動的にゼロETLタスクを開始します。 タスクリストでタスクの進行状況を表示します。

ゼロETLタスクのモニタリングとアラート
zero-ETLタスクを作成してタスクを開始した後、CloudMonitorコンソールでタスクのアラートルールを設定し、タスクの実行ステータスをモニタリングできます。 以下の手順を実行します。
CloudMonitor コンソールにログインします。
モニタリング情報を表示します。
左側のナビゲーションウィンドウで、 を選択します。
ポインタをAnalyticDB for PostgreSQLカードに移動し、AnalyticDB for PostgreSQL - Zero-ETL Latencyをクリックします。
管理するインスタンスを見つけ、インスタンスIDをクリックして、ゼロETLタスクに関するモニタリング情報を表示します。
アラートルールを作成します。
左側のナビゲーションウィンドウで、 を選択します。
[アラートルールの作成] をクリックします。 [アラートルールの作成] パネルで、ゼロETLタスクのアラートルールパラメーターを設定します。 詳細については、「アラートルールの作成」をご参照ください。
サブスクリプションポリシーを作成します。
左側のナビゲーションウィンドウで、 を選択します。
[サブスクリプションポリシーの作成] をクリックします。 [サブスクリプションポリシーの作成] ページで、zero-ETLタスクのサブスクリプションポリシーパラメーターを設定します。 詳細については、「イベント購読ポリシーの管理 (推奨) 」トピックの「購読ポリシーの作成」セクションをご参照ください。