AnalyticDB for PostgreSQL は、インスタンスへのデータのインポートとエクスポート、およびアップストリームデータベースとの同期を維持するための複数のメソッドをサポートしています。このページでは、ソースシステム、データ量、およびレイテンシー要件に基づいて適切なメソッドを見つけるのに役立ちます。
メソッドの選択
データのソース、移動する必要のあるデータ量、および頻度の 3 つの要因に基づいてメソッドを選択します。
| 要因 | オプション |
|---|---|
| ソースタイプ | ファイル、リレーショナルデータベース、データウェアハウス、Hadoop クラスター、クラウドデータベース |
| レイテンシー要件 | ワンタイム移行 — バッチメソッド。継続的な同期 — Data Transmission Service (DTS) |
ほとんどのユースケースに推奨: 大規模な一括ロードには、Object Storage Service (OSS) 外部テーブル (gpossext 機能) を使用します。すべてのコンピュートノードが OSS から並列で読み取るため、一括ロードに非常に効率的です。ApsaraDB RDS for MySQL などのクラウドデータベースからの継続的な同期には、DTS を使用します。
データをロードせずに外部データをクエリする場合: OSS 外部テーブルと Hadoop 外部テーブル (gphdfs) はフェデレーテッド分析をサポートしています。AnalyticDB for PostgreSQL に物理的に移動することなく、OSS または HDFS に保持されているデータに対してクエリを実行します。
AnalyticDB for PostgreSQL へのデータのロード
データの書き込み
| メソッド | 使用する状況 | サーバーレス |
|---|---|---|
| INSERT ON CONFLICT | プライマリキーによって行をアップサートします。挿入する行が既存のプライマリキーと競合する場合、エラーとせずに既存の行が更新されます。 | いいえ |
| COPY ON CONFLICT | 制約の競合が予想される場合のファイルの一括ロード — 標準の COPY ステートメントを拡張して、インポート全体を中止することなく競合を処理します。 | いいえ |
| クライアント SDK | 高スループットを必要とするカスタム書き込みパイプラインを構築します。SDK は内部で並列処理を処理し、接続プールやキャッシュ管理を必要とせずに、COPY または INSERT よりも著しく高い書き込みパフォーマンスを提供します。 | はい |
テーブルデータのインポート
| メソッド | 使用する状況 | サーバーレス |
|---|---|---|
| OSS 外部テーブル (gpossext) | Object Storage Service (OSS) から大規模なデータセットをインポートします。すべてのコンピュートノードが OSS から並列で読み取るため、これは一括ロードの高速オプションです。 | はい |
| Data Integration | 異なるネットワーク環境間で異種ソースからデータをバッチ同期します。これは、幅広いソースコネクタを備えた DataWorks のコア機能です。「サポートされているデータソースタイプとプラグイン」をご参照ください。 | はい |
\copy コマンド | ご利用のローカルマシンから直接テキストファイルをインポートします。単一のクライアント接続で十分な、より小さなデータセットに適しています。 | はい |
| Hadoop 外部テーブル (gphdfs) | gphdfs プロトコルを使用して Hadoop クラスターからデータにアクセスまたは移行します。データを物理的に移動することなく、フェデレーテッド分析をサポートします。 | はい |
ウェアハウスデータの移行
AnalyticDB for PostgreSQL V6.0 は Greenplum 6.0 をベースに構築されており、Greenplum Community Edition と同じ API を使用するため、互換性のあるシステムからの移行が簡素化されます。
| ソース | メソッド | 注記 | サーバーレス |
|---|---|---|---|
| 自己管理 Greenplum | 外部テーブルまたはアプリケーションのリポイント | V6.0 は、複数のコーディネーターノードによるベクターコンピューティングとトランザクション処理をサポートします。アプリケーションとデータの両方を移行できます。 | いいえ(外部テーブル対応) |
| Teradata | SQL 移行 | Teradata 構文と互換性があります。 | いいえ(外部テーブルがサポートされています) |
| Amazon Redshift | エクスポートしてからインポート | Redshift からデータをアンロードし、AnalyticDB for PostgreSQL にインポートします。 | いいえ(外部テーブルがサポートされています) |
| Oracle (アプリケーション) | SQL 移行 | Oracle 構文と互換性があります。 | いいえ(外部テーブルはサポートされていません) |
| Oracle (DTS 経由) | Data Transmission Service (DTS) | 自動化された管理された移行に DTS を使用します。 | はい |
AnalyticDB for PostgreSQL からのデータのエクスポート
| メソッド | 使用する状況 | サーバーレス |
|---|---|---|
| OSS 外部テーブル (gpossext) | 大規模なデータセットを OSS に並列でエクスポートします。ファイルサイズとストレージコストを削減するために GZIP 圧縮をサポートします。 | はい |
\copy コマンド | クエリ結果をご利用のローカルマシン上のファイルにエクスポートします。 | はい |
他のデータベースからのデータ同期
クラウドデータベースから
このセクションのすべてのメソッドは、クラウドデータベースから AnalyticDB for PostgreSQL にデータを同期するために DTS を使用します。
| ソース | ガイド | サーバーレス |
|---|---|---|
| ApsaraDB RDS for MySQL | ApsaraDB RDS for MySQL から同期 | はい |
| ApsaraDB RDS for SQL Server | ApsaraDB RDS for SQL Server から同期 | はい |
| ApsaraDB RDS for PostgreSQL | ApsaraDB RDS for PostgreSQL から同期 | はい |
| PolarDB for MySQL | PolarDB for MySQL から同期 | はい |
自己管理データベースから
DTS は、ほとんどの自己管理ソースに対してリアルタイムの増分同期をサポートします。DTS を使用しないオープンソース移行には、rds_dbsync を使用します。
| ソース | ガイド | ツール | サーバーレス |
|---|---|---|---|
| Elastic Compute Service (ECS) 上の MySQL | ECS ベースの MySQL から同期 | DTS | はい |
| Express Connect、VPN Gateway、または Smart Access Gateway 経由の MySQL | プライベートネットワーク経由の MySQL から同期 | DTS | はい |
| SQL Server (自己管理) | 自己管理 SQL Server から同期 | DTS | はい |
| ECS 上の SQL Server | ECS 上の SQL Server から同期 | DTS | はい |
| PostgreSQL (自己管理) | 自己管理 PostgreSQL から同期 | DTS | はい |
| Oracle (自己管理) | 自己管理 Oracle から同期 | DTS | はい |
| Db2 for LUW | Db2 for LUW から同期 | DTS | はい |
| MySQL (オープンソース) | rds_dbsync を使用した MySQL データの移行 — mysql2pgsql 機能は両方のデータベースに接続し、ソースから読み取り、中間ストレージなしで COPY を使用してデータを送信先にストリームします。 | rds_dbsync | いいえ |
| PostgreSQL (オープンソース) | rds_dbsync を使用した PostgreSQL データの移行 — pgsql2pgsql 機能は、AnalyticDB for PostgreSQL、Greenplum Database、および PostgreSQL 間でテーブルを移行します。 | rds_dbsync | いいえ |