オンプレミスまたはクラウドのデータを Azure Cosmos DB に移行するためのオプション

適用対象: SQL API Cassandra API Gremlin API Table API MongoDB 用 Azure Cosmos DB API

さまざまなデータ ソースから Azure Cosmos DB にデータを読み込むことができます。 Azure Cosmos DB は複数の API をサポートしているため、ターゲットには既存のあらゆる API を指定できます。 Azure Cosmos DB にデータを移行する場合のいくつかのシナリオを次に示します。

  • ある Azure Cosmos コンテナーから、同じデータベースまたは別のデータベース内の別のコンテナーにデータを移動する。
  • 専用コンテナーから共有データベース コンテナーにデータを移動する。
  • region1 にある Azure Cosmos アカウントから、同じまたは別のリージョンの別の Azure Cosmos アカウントにデータを移動する。
  • Azure Blob Storage、JSON ファイル、Oracle Database、Couchbase、DynamoDB などのソースから Azure Cosmos DB にデータを移動する。

さまざまなソースからさまざまな Azure Cosmos DB API への移行パスをサポートする目的で、移行パスごとに特別な処理を行うソリューションが複数用意されています。 このドキュメントでは、利用できるソリューションをリストアップし、その利点と制限事項について説明します。

移行ツールの選択に影響を与える要因

移行ツールの選択は次の要因によって決定されます。

  • オンライン移行またはオフライン移行: 多くの移行ツールでは、1 回限りの移行を行うためのパスが与えられます。 これは、データベースにアクセスしているアプリケーションに一定時間のダウンタイムが発生する可能性を意味します。 一部の移行ソリューションでは、ライブ移行の手段が与えられます。ライブ移行では、移行元と移行先の間にレプリケーション パイプラインが設定されます。

  • データ ソース: 既存のデータは、Oracle DB2、Datastax Cassandra、Azure SQL Database、PostgreSQL など、さまざまなデータ ソースに含まれています。データは既存の Azure Cosmos DB アカウントに含まれていることもあります。データ モデルを変更することや、パーティション キーの異なるコンテナーに含まれるデータを再パーティションすることが移行の意図になることもあります。

  • Azure Cosmos DB API: Azure Cosmos DB の SQL API については、Azure Cosmos DB チームによって、さまざまな移行シナリオを支援するさまざまなツールが開発されています。 他の API にはすべて、コミュニティによって開発され、保守されている独自の特別なツール セットが含まれています。 Azure Cosmos DB ではそのような API がワイヤ プロトコル レベルでサポートされているため、Azure Cosmos DB にデータを移行する間、それらのツールもそのまま動作するはずです。 ただし、この概念は Azure Cosmos DB に固有であるため、スロットルのカスタム処理が必要になることがあります。

  • データのサイズ: データセットが小規模な場合、ほとんどの移行ツールは非常にうまく動作します。 データセットが数百ギガ バイトを超えると、移行ツールの選択肢が限られます。

  • 予想される移行時間: 移行は、消費するスループットの少ない、ゆっくりしたインクリメンタル ペースで行うように構成するか、移行先 Azure Cosmos DB コンテナーでプロビジョニングされているスループット全体を消費し、少ない時間で移行を完了するように構成できます。

Azure Cosmos DB SQL API

容量計画に関するサポートが必要な場合は、Azure Cosmos DB キャパシティ プランナーで RU/s を見積もる方法に関するガイドを読むことを検討してください。

移行の種類 解決策 サポートされているソース サポートされているターゲット 考慮事項
オフライン データ移行ツール •JSON/CSV ファイル
•Azure Cosmos DB SQL API
•MongoDB
•SQL Server
•Table Storage
•AWS DynamoDB
•Azure Blob Storage
•Azure Cosmos DB SQL API
•Azure Cosmos DB Tables API
•JSON ファイル
• セットアップが簡単で、さまざまなソースをサポートします。
• 大規模なデータセットには適していません。
オフライン Azure Data Factory •JSON/CSV ファイル
•Azure Cosmos DB SQL API
•MongoDB 用 Azure Cosmos DB API
•MongoDB
•SQL Server
•Table Storage
•Azure Blob Storage

サポートされているその他のソースについては、Azure Data Factory に関する記事をご覧ください。
•Azure Cosmos DB SQL API
•MongoDB 用 Azure Cosmos DB API
•JSON ファイル

サポートされているその他のターゲットについては、Azure Data Factory に関する記事をご覧ください。
• セットアップが簡単で、さまざまなソースをサポートします。
• Azure Cosmos DB Bulk Executor ライブラリを使用します。
• 大規模なデータセットに適しています。
• チェックポイントがない - つまり、移行の途中で問題が発生した場合、移行プロセス全体をやり直す必要があります。
• 配信不能キューがない - つまり、エラーが含まれるファイルがいくつかあると、移行プロセス全体が停止することがあります。
オフライン Azure Cosmos DB Spark コネクタ Azure Cosmos DB SQL API。

Spark エコシステムからの追加コネクタで他のソースを使用できます。
Azure Cosmos DB SQL API。

Spark エコシステムからの追加コネクタで他のターゲットを使用できます。
• Azure Cosmos DB Bulk Executor ライブラリを使用します。
• 大規模なデータセットに適しています。
• カスタム Spark セットアップが必要です。
• Spark ではスキーマの不整合に注意を要し、移行中、問題になることがあります。
オフライン カスタム ツールと Cosmos DB Bulk Executor ライブラリ ソースはカスタム コードに依存します Azure Cosmos DB SQL API • 移行の回復性を向上させるチェックポイント機能や配信不能機能を提供します。
• 非常に大規模なデータセット (10 TB 以上) に適しています。
• App Service として実行されるこのツールのカスタム セットアップが必要になります。
オンライン Cosmos DB Functions + ChangeFeed API Azure Cosmos DB SQL API Azure Cosmos DB SQL API • セットアップが簡単です。
• ソースが Azure Cosmos DB コンテナーの場合にのみ動作します。
• 大規模なデータセットには適していません。
• ソース コンテナーからの削除をキャプチャすることはありません。
オンライン ChangeFeed を利用したカスタム移行サービス Azure Cosmos DB SQL API Azure Cosmos DB SQL API • 進捗状況を追跡します。
• ソースが Azure Cosmos DB コンテナーの場合にのみ動作します。
• 大規模なデータセットでも機能します。
• ユーザーは、Change Feed プロセッサをホストするように App Service を設定する必要があります。
• ソース コンテナーからの削除をキャプチャすることはありません。
オンライン Striim •Oracle
•Apache Cassandra

サポートされているその他のソースについては、Striim の Web サイトを参照してください。
•Azure Cosmos DB SQL API
•Azure Cosmos DB Cassandra API

サポートされているその他のターゲットについては、Striim の Web サイトを参照してください。
• Oracle、DB2、SQL Server などのさまざまなソースで動作します。
• ETL パイプラインの構築が簡単で、監視用のダッシュボードを提供します。
• 大規模なデータセットをサポートします。
• これはサードパーティ製のツールであるため、マーケットプレースから購入し、ユーザーの環境にインストールする必要があります。

Azure Cosmos DB Mongo API

移行前ガイドの説明に従って、移行の計画を立てます。

移行準備を終えて移行ツールを使用するときは、下に挙げる詳細なガイドを利用できます

移行を終えたら、移行後ガイドの説明に従って Azure Cosmos DB のデータ資産を最適化します。

現在のソリューションから Azure Cosmos DB API for MongoDB への移行様式を下にまとめます。

移行の種類 解決策 サポートされているソース サポートされているターゲット 考慮事項
オンライン Azure Database Migration Service MongoDB MongoDB 用 Azure Cosmos DB API • Azure Cosmos DB Bulk Executor ライブラリを使用します。
• 大規模なデータセットに適し、ライブ変更のレプリケーションを処理します。
• 他の MongoDB ソースでのみ機能します。
オフライン Azure Database Migration Service MongoDB MongoDB 用 Azure Cosmos DB API • Azure Cosmos DB Bulk Executor ライブラリを使用します。
• 大規模なデータセットに適し、ライブ変更のレプリケーションを処理します。
• 他の MongoDB ソースでのみ機能します。
オフライン Azure Data Factory •JSON/CSV ファイル
•Azure Cosmos DB SQL API
•MongoDB 用 Azure Cosmos DB API
•MongoDB
•SQL Server
•Table Storage
•Azure Blob Storage

サポートされているその他のソースについては、Azure Data Factory に関する記事をご覧ください。
•Azure Cosmos DB SQL API
•MongoDB 用 Azure Cosmos DB API
• JSON ファイル

サポートされているその他のターゲットについては、Azure Data Factory に関する記事をご覧ください。
• セットアップが簡単で、さまざまなソースをサポートします。
• Azure Cosmos DB Bulk Executor ライブラリを使用します。
• 大規模なデータセットに適しています。
• チェックポイントがなく、移行の途中で問題が発生した場合、移行プロセス全体をやり直す必要があります。
• 配信不能キューがなく、エラーが含まれるファイルがいくつかあっただけで移行プロセス全体が停止することがあります。
• 特定のデータ ソースの読み取りスループットを向上させるためのカスタム コードが必要です。
オフライン 既存の Mongo ツール (mongodumpmongorestoreStudio3T) MongoDB MongoDB 用 Azure Cosmos DB API • セットアップと統合が簡単です。
• スロットルのカスタム処理が必要です。

Azure Cosmos DB の Cassandra API

容量計画に関するサポートが必要な場合は、Azure Cosmos DB キャパシティ プランナーで RU/s を見積もる方法に関するガイドを読むことを検討してください。

移行の種類 解決策 サポートされているソース サポートされているターゲット 考慮事項
オフライン cqlsh COPY コマンド CSV ファイル Azure Cosmos DB の Cassandra API • セットアップが簡単です。
• 大規模なデータセットには適していません。
• ソースが Cassandra テーブルの場合にのみ機能します。
オフライン Spark でテーブルをコピーする •Apache Cassandra
•Azure Cosmos DB Cassandra API
Azure Cosmos DB の Cassandra API • Spark 機能を使用し、変換と取り込みを並列処理できます。
• スロットルを処理するカスタム再試行ポリシーを含む構成が必要です。
オンライン Striim (Oracle DB/Apache Cassandra からの) •Oracle
•Apache Cassandra

サポートされているその他のソースについては、Striim の Web サイトを参照してください。
•Azure Cosmos DB SQL API
•Azure Cosmos DB Cassandra API

サポートされているその他のターゲットについては、Striim の Web サイトを参照してください。
• Oracle、DB2、SQL Server などのさまざまなソースで動作します。
• ETL パイプラインの構築が簡単で、監視用のダッシュボードを提供します。
• 大規模なデータセットをサポートします。
• これはサードパーティ製のツールであるため、マーケットプレースから購入し、ユーザーの環境にインストールする必要があります。
オンライン Blitzz (Oracle DB/Apache Cassandra からの) •Oracle
•Apache Cassandra

サポートされているその他のソースについては、Blitzz の Web サイトを参照してください。
Azure Cosmos DB の Cassandra API。

サポートされているその他のターゲットについては、Blitzz の Web サイトを参照してください。
• 大規模なデータセットをサポートします。
• これはサードパーティ製のツールであるため、マーケットプレースから購入し、ユーザーの環境にインストールする必要があります。

その他の API

SQL API、Mongo API、Cassandra API 以外の API については、API の既存エコシステム別にさまざまなツールがサポートされています。

テーブル API

Gremlin API

次のステップ

  • Azure Cosmos DB への移行のための容量計画を立てる場合。
  • .NETJava で Bulk Executor ライブラリを使用するサンプル アプリケーションを試して、さらに詳しく学習します。
  • Bulk Executor ライブラリは Cosmos DB Spark コネクタに統合されています。詳細については、Azure Cosmos DB Spark コネクタに関する記事をご覧ください。
  • 大規模な移行に関して別途支援が必要な場合は、問題のタイプに "General Advisory (一般的な勧告)" を、問題のサブタイプに "Large (TB+) migrations (大規模な (TB 以上の) 移行)" を選択してサポート チケットを開き、Azure Cosmos DB 製品チームに連絡します。