Azure Cosmos DB で API を選択する

適用対象: NoSQL MongoDB Cassandra Gremlin Table PostgreSQL

Azure Cosmos DB は、最新のアプリ開発に対応するフル マネージドの NoSQL、リレーショナル、ベクトル データベースです。 Azure Cosmos DB では、管理、更新、パッチ適用が自動的に行われるため、ユーザー側でのデータベース管理が不要になります。 また、アプリケーションのニーズに対応して需要に容量を一致させるコスト効果の高いサーバーレスおよび自動スケーリング オプションにより、容量管理が処理されます。

Azure Cosmos DB の API

Azure Cosmos DB には、NoSQL、MongoDB、PostgreSQL、Cassandra、Gremlin、Table などの複数のデータベース API が揃っています。 これらの API を使用することで、ドキュメント、キー値、グラフ、および列ファミリのデータ モデルを使って実世界のデータをモデル化できます。 これらの API を使用すると、アプリケーションでは、他のさまざまなデータベース テクノロジと同様に Azure Cosmos DB を扱うことができ、管理のオーバーヘッドやスケーリング アプローチが不要になります。 Azure Cosmos DB は各種 API により、データのモデル化とクエリに既に存在するエコシステム、ツール、スキルを利用するのに役立ちます。

すべての API により、ストレージとスループットの自動スケーリング、柔軟性、およびパフォーマンスの保証が提供されます。 最良の API は 1 つではなく、いずれかの API を選択してアプリケーションを構築することができます。 この記事は、ワークロードとチームの要件に基づいて API を選択するのに役立ちます。

API 選択時の考慮事項

NoSQL 用 API は Azure Cosmos DB にネイティブなものです。

MongoDB、PostgreSQL、Cassandra、Gremlin、Table 用の API では、オープンソース データベース エンジンのワイヤ プロトコルが実装されます。 これらの API は、次の条件が満たされている場合に最適です。

  • 既存の MongoDB、PostgreSQL Cassandra、または Gremlin アプリケーションがある場合
  • データ アクセス層全体を書き直す必要がない場合
  • オープンソースの開発者エコシステム、クライアント ドライバー、専門知識、データベースのリソースを使用する場合
  • 次のような Azure Cosmos DB のコア機能を使用する場合:
    • グローバル配信
    • ストレージとスループットのエラスティック スケーリング
    • 大規模なハイ パフォーマンス
    • 待ち時間の短縮
    • トランザクション ワークロードと分析ワークロードを実行する機能
    • フル マネージド プラットフォーム
  • マルチクラウド環境で最新のアプリを開発している場合

これらの API を使用して新しいアプリケーションをビルドしたり、既存のデータを移行したりできます。 移行したアプリを実行するには、アプリケーションの接続文字列を変更し、以前と同じように引き続き実行します。 既存のアプリを移行するときは、必ずこれらの API の機能サポートを評価してください。

ワークロードに基づいて、要件に合った API を選択する必要があります。 次の図は、新しいアプリをビルドするとき、または既存のアプリを Azure Cosmos DB に移行するときに適切な API を選択する方法に関するフロー チャートを示しています。

Azure Cosmos DB で API を選択するためのデシジョン ツリーの図。

Azure Cosmos DB で API を選択するためのデシジョン ツリーの図。 この図の半分は、どれだけ多くの既存のオープンソース データベース ワークロードが Azure Cosmos DB の対応する API を使用できるかを示しています。 図の残りの半分は、新しいアプリケーションがどのようにして NoSQL 用 API を使用できるか、またはオープンソース データベース用の API に関する既存のスキルを使用できるかを示しています。

NoSQL 用 API

Azure Cosmos DB API for NoSQL では、データをドキュメント形式で格納します。 インターフェイス、サービス、SDK クライアント ライブラリを完全に制御できるため、最適なエンドツーエンド エクスペリエンスが提供されます。 Azure Cosmos DB にロールアウトされた新機能は、NoSQL 用 API アカウントで最初に使用できるようになります。 NoSQL アカウントでは、構造化照会言語 (SQL) 構文を使用した項目のクエリがサポートされています。これは、JSON オブジェクトを照会するための最もよく知られている一般的なクエリ言語の 1 つです。 詳細については、トレーニング モジュール「Azure Cosmos DB の NoSQL 用 API」と「SQL クエリの使用を開始する」の記事を参照してください。

Oracle、DynamoDB、HBase などの他のデータベースから移行する場合や、最新のテクノロジを使用してアプリをビルドする場合は、NoSQL 用 API を使用することをお勧めします。 NoSQL 用 API では分析がサポートされ、運用と分析のワークロード間でパフォーマンスを分離できます。

MongoDB 用 API

Azure Cosmos DB の MongoDB 用 API では、BSON 形式を使用してドキュメント構造にデータを格納します。 MongoDB ワイヤ プロトコルと互換性がありますが、ネイティブ MongoDB に関するコードは使用されません。 MongoDB 用 API は、Azure Cosmos DB の機能の使用を妥協することなく、より広範な MongoDB エコシステムとスキルを使用する場合に最適です。

Azure Cosmos DB によって提供される、妥協する必要がない機能には、次のものが含まれます。

  • Scaling
  • 高可用性
  • geo レプリケーション
  • 複数の書き込み場所
  • シャードの自動および透過的な管理
  • 運用ストアと分析ストア間の透過的なレプリケーション

接続文字列を変更するだけで、MongoDB 用 API で既存の MongoDB アプリを使用できます。 mongodump と mongorestore などのネイティブ MongoDB ツールまたは Azure Database Migration ツールを使用して、既存のデータを移動できます。 MongoDB シェル、MongoDB CompassRobo3T などのツールを使用すると、クエリを実行し、ネイティブ MongoDB の場合と同様にデータを操作できます。 詳細については、MongoDB 用 API に関する記事を参照してください。

PostgreSQL 用 API

Azure Cosmos DB for PostgreSQL は、Citus オープンソースの強力な分散テーブルを使用して、PostgreSQL を任意のスケールで実行するためのマネージド サービスです。 単一のノードにデータを格納する構成も、マルチノード構成で分散することも可能です。

Azure Cosmos DB for PostgreSQL は、PostgreSQL フォークではなく、ネイティブ PostgreSQL 上に構築されており、PostgreSQL コミュニティでサポートされている任意のメジャー データベース バージョンを選択できます。 豊富なインデックス作成、地理空間機能、JSONB サポートを備えており、単一ノード データベースから開始するのに最適です。 後で、より高いパフォーマンスが必要になった場合、ダウンタイムなしでクラスターにノードを追加できます。

ハイ パフォーマンスと geo レプリケーションを備えたマネージド オープンソース リレーショナル データベースを探しているならば、Azure Cosmos DB for PostgreSQL をお勧めします。 詳細については「Azure Cosmos DB for PostgreSQL の概要」を参照してください。

Apache Cassandra 用 API

Azure Cosmos DB の Cassandra 用 API では、列指向スキーマにデータを格納します。 Apache Cassandra では、列指向スキーマに対する柔軟なアプローチを提供しながら、大量のデータを格納するための高度な分散型水平方向スケーリング アプローチを提供します。 Azure Cosmos DB の Cassandra 用 API は、分散 NoSQL データベースに取り組むこの哲学と一致します。 この Cassandra 用 API は、ネイティブな Apache Cassandra と互換性のあるワイヤ プロトコルです。 Azure Cosmos DB の弾力性とフル マネージドの性質を活用しながら、ほとんどのネイティブ Apache Cassandra 機能、ツール、およびエコシステムを使用する場合は、Cassandra 用 API を考慮する必要があります。 このフル マネージドの性質は、Cassandra 用 API では、OS、Java VM、ガベージ コレクター、読み取り/書き込みパフォーマンス、ノード、クラスターなどを管理する必要がないことを意味します。

Apache Cassandra クライアント ドライバーを使用して、Cassandra 用 API に接続することができます。 Cassandra 用 API を使用すると、使い慣れた Cassandra クエリ言語 (CQL)、CQL シェルなどのツール、Cassandra クライアント ドライバーを使ってデータを操作できます。 現在、Cassandra 用 API でサポートされているのは OLTP シナリオのみです。 Cassandra 用 API を使えば、変更フィードなどの Azure Cosmos DB に固有の機能を使用することもできます。 詳細については、Cassandra 用 API に関する記事を参照してください。 Apache Cassandra は既に使い慣れているが、Azure Cosmos DB を初めて使用する場合の詳細については、Cassandra 用 API に適応する方法に関する記事を参照してください。

Apache Gremlin 用 API

Azure Cosmos DB の Gremlin 用 API を使用すると、ユーザーはグラフ クエリを作成できるようになり、データはエッジと頂点として格納されます。

Gremlin 用 API は、次のシナリオで使用します。

  • 動的データが含まれる
  • 複雑な関係を持つデータが含まれる
  • リレーショナル データベースでモデル化するには複雑すぎるデータが含まれる
  • Gremlin の既存のエコシステムとスキルを使用する場合

Gremlin 用 API では、グラフ データベース アルゴリズムの機能を非常にスケーラブルなマネージド インフラストラクチャと結合します。 この API によって、柔軟性の不足に関連する一般的なデータの問題への一意で柔軟な解決策や、リレーショナル アプローチが提供されます。 現在、Gremlin 用 API でサポートされているのは OLTP シナリオのみです。

Gremlin 用 API は、Apache TinkerPop グラフ コンピューティング フレームワークに基づいています。 Gremlin 用 API では、同じグラフ クエリ言語を使用してデータの取り込みとクエリを実行します。 また、Azure Cosmos DB のパーティション戦略を使用して、グラフ データベース エンジンからの読み取り/書き込み操作を行います。 Gremlin 用 API では、オープンソースの Gremlin によるワイヤ プロトコル サポートが得られるため、オープンソースの Gremlin SDK を使用してアプリケーションを構築できます。 Gremlin 用 API は、複雑な分析グラフ シナリオ向けの Apache Spark や GraphFrames でも機能します。 詳細については、Gremlin 用 API に関する記事を参照してください。

Table 用 API

Azure Cosmos DB の Table 用 API では、データをキー/値形式で格納します。 現在、Azure Table Storage を使用している場合は、待機時間、スケーリング、スループット、グローバル配布、インデックス管理、低クエリ パフォーマンスにいくつかの制限がある可能性があります。 Table 用 API によってこれらの制限が克服されます。Azure Cosmos DB のベネフィットを活用する場合は、アプリを移行することをお勧めします。 Table 用 API でサポートされているのは、OLTP シナリオのみです。

Azure Table Storage 用に作成されたアプリケーションを Table 用 API に移行することができます。これにより、コードにほとんど変更を加えることなく、高度な機能を利用できるようになります。 詳細については、Table 用 API に関する記事を参照してください。

データ移行時の容量計画

既存のデータベース クラスターから Azure Cosmos DB for NoSQL や Azure Cosmos DB for MongoDB への移行のための容量計画を行おうとしていますか? 容量計画のために、既存のデータベース クラスターに関する情報を使用できます。

次のステップ