Azure Cosmos DB のデータベース、コンテナー、項目

適用対象: NoSQL MongoDB Cassandra Gremlin Table

Azure Cosmos DB はフルマネージドのサービスとしてのプラットフォーム (PaaS) です。 Azure Cosmos DB を使い始めるには、サブスクリプションの Azure リソース グループ内に Azure Cosmos DB アカウントを作成します。 次に、アカウント内にデータベースとコンテナーを作成します。

Azure Cosmos DB アカウントには一意の DNS 名が含まれており、次のような多くのツールを使用して管理できます。ただし、これらに限定されません。

  • Azure portal
  • Azure Resource Manager のテンプレート
  • Bicep テンプレート
  • Azure PowerShell
  • Azure CLI
  • Azure Management SDK
  • Azure REST API

詳しくは、Azure Cosmos DB アカウントの管理方法に関するページをご覧ください。

データやスループットを複数の Azure リージョンにレプリケートする場合は、いつでもアカウントの Azure リージョンを追加したり削除したりできます。 アカウントは、単一リージョンまたは複数の書き込みリージョンを持つように構成できます。 詳細については、アカウントに Azure リージョンを追加および削除する方法に関するページを参照してください。 アカウントに対して既定の一貫性レベルを構成できます。

Azure Cosmos DB アカウントの要素

現在、1 つの Azure サブスクリプションで Azure Cosmos DB アカウントを最大 50 個作成することができます。 この制限は、サポート リクエストを介して増やすことができるソフト制限です。

1 つの Azure Cosmos DB アカウントで、事実上無制限のデータ量とプロビジョニング スループットを管理できます。 データとプロビジョニングされたスループットを管理するには、アカウントに 1 つ以上のデータベースを作成した後、1 つ以上のコンテナーを作成してデータを格納できます。 次の図は、Azure Cosmos DB アカウントでの要素の階層を示したものです。

アカウント、データベース、コンテナーを含む Azure Cosmos DB アカウントの階層の図。

次の画像は、Azure Cosmos DB アカウントのさまざまなエンティティの階層を示しています。

コンテナーと、ストアド プロシージャ、UDF、トリガーなどの兄弟エンティティを含む項目間のリレーションシップの図。

Azure Cosmos DB データベース

Azure Cosmos DB では、データベースは名前空間に似ています。 データベースはコンテナーのグループに過ぎません。 次の表は、データベースがどのように API 固有のさまざまなエンティティにマップされているかを示しています。

Azure Cosmos DB のエンティティ NoSQL 用 API Apache Cassandra 用 API MongoDB 用 API Apache Gremlin 用 API Table 用 API
Azure Cosmos DB データベース データベース キースペース データベース データベース NA

Note

Table 用 API アカウントでは、Azure Storage テーブルとの互換性を維持するため、Azure Cosmos DB のテーブルがアカウント レベルで作成されます。

Azure Cosmos DB コンテナー

Azure Cosmos DB のコンテナーは、データが格納される場所です。 ほとんどのリレーショナル データベースはより大きな VM サイズでスケールアップしますが、Azure Cosmos DB はそれとは異なりスケールアウトします。データは、パーティションと呼ばれる 1 つ以上のサーバーに格納されます。 スループットまたはストレージを増やすには、パーティションが追加されます。 このリレーションシップにより、実質的に無制限のスループットとストレージがコンテナーに提供されます。 コンテナーを作成するときに、パーティション キーを指定する必要があります。 パーティション キーは、Azure Cosmos DB がパーティション間でデータを効率的に分散するのに役立つ、項目から選択するプロパティです。 このプロパティの値は、書き込み、更新、または削除が行われる適切なパーティションへのデータのルーティングに使われます。 また、パーティション キーは、データを効率的に取得するため、クエリの WHERE 句でも使用できます。

Azure Cosmos DB のデータの基になるストレージ メカニズムは、物理パーティションと呼ばれます。 これらの物理パーティションは、最大 10,000 RU/秒のスループットを持ち、最大 50 GB のデータを格納できます。 Azure Cosmos DB は、最大 20 GB のデータを格納できる論理パーティションでこのパーティション分割概念を抽象化します。 論理パーティションを使うことで、基になる物理パーティションが増えても、サービスはより優れた弾力性とパーティション上のデータの管理を提供できます。 パーティション分割とパーティション キーの詳細については、データのパーティション分割に関するページを参照してください。

コンテナーを作成するときには、次のいずれかのモードでスループットを構成します。

  • 専用スループット: コンテナーのスループットは、そのコンテナーに対してのみ予約されます。 専用スループットには、標準と自動スケーリングの 2 種類があります。 詳細については、コンテナーでのスループットを割り当てる方法に関するページを参照してください。
  • 共有スループット: このスループットは、データベース レベルで指定された後、データベース内の最大 25 個のコンテナーで共有されます。 スループットの共有では、独自の専用スループットで構成されているコンテナーは除外されます。 共有スループットは、データベース内のすべてのコンテナーの要求とストレージのニーズが似ている場合、またはデータで予測可能なパフォーマンスが必要ない場合に適したオプションです。 詳細については、データベースでのスループットを割り当てる方法に関するページを参照してください。

Note

専用スループットと共有スループットを切り替えることはできません。 共有スループット データベースに作成されたコンテナーを、専用スループットを使うように更新することはできません。 コンテナーを共有スループットから専用スループットに変更するには、新しいコンテナーを作成し、それにデータをコピーする必要があります。

コンテナーはスキーマに依存しません。 コンテナー内の項目は、同じパーティション キーを共有している限り、任意のスキーマまたは異なるエンティティを持つことができます。 たとえば、顧客を表す項目と、そのすべての注文を表す 1 つ以上の項目を、"同じコンテナー" に配置できます。 既定では、コンテナーに追加されるすべてのデータに自動的にインデックスが作成され、明示的にインデックスを作成する必要はありません。 コンテナーのインデックス作成ポリシーを構成することで、そのインデックス作成をカスタマイズできます。

コンテナー内の選択した項目またはコンテナー全体に対して有効期限 (TTL) を設定すると、パフォーマンスに影響を与えないように未使用のスループットを使ってバックグラウンドで、それらの項目を自動的に削除できます。 ただし、削除されていない場合でも、有効期限が切れたデータは読み取り操作には表示されません。 詳細については、コンテナーでの TTL の構成に関するページを参照してください。

Azure Cosmos DB には、変更フィードと呼ばれる変更データ キャプチャ機能が組み込まれており、それを使うと、コンテナー内のデータに対するすべての変更をサブスクライブできます。 詳しくは、「Azure Cosmos DB の変更フィード」をご覧ください。

コンテナーには、ストアド プロシージャ、トリガー、ユーザー定義関数 (UDF)マージ プロシージャを登録できます。

コンテナー内のデータには、論理パーティション キーの値ごとに一意の id プロパティ値が必要です。 このプロパティは、コンテナー内に一意制約を設定する場合に便利です。 また、1 つ以上の異なるプロパティを使用し、論理パーティション キーごとに 1 つ以上の値の一意性を保証する一意キー制約を、Azure Cosmos DB コンテナーに対して指定することもできます。 一意キー ポリシーを使用してコンテナーを作成する場合、一意キー制約で指定されている値と重複する値を持つ新しい項目や更新された項目を作成することはできません。 詳細については、一意キーの制約に関するページを参照してください。

コンテナーは、次の表に示すように、API 固有のエンティティに特化されます。

Azure Cosmos DB のエンティティ NoSQL 用 API Cassandra 用 API MongoDB 用 API Gremlin 用 API Table 用 API
Azure Cosmos DB コンテナー コンテナー テーブル コレクション グラフ テーブル

Note

コンテナーを作成するときは、同じ名前で大文字と小文字が異なる 2 つのコンテナーを作成しないようにしてください。 Azure プラットフォームの一部には大文字と小文字の区別がないため、そのような名前を持つコンテナーでテレメトリやアクションの混同や衝突が発生する可能性があります。

Azure Cosmos DB コンテナーのプロパティ

Azure Cosmos DB コンテナーには、一連のシステム定義のプロパティがあります。 使用する API によっては、一部のプロパティが直接公開されない場合があります。 次の表は、システム定義のプロパティの一覧を示しています。

システム定義のプロパティ システム生成またはユーザー構成可能 目的 NoSQL 用 API Cassandra 用 API MongoDB 用 API Gremlin 用 API Table 用 API
_rid システム生成 コンテナーの一意識別子 はい いいえ いいえ いいえ いいえ
_etag システム生成 オプティミスティック同時実行制御に使用されるエンティティ タグ はい いいえ いいえ いいえ いいえ
_ts システム生成 コンテナーの最終更新時のタイムスタンプ はい いいえ いいえ いいえ いいえ
_self システム生成 コンテナーのアドレス指定可能な URI はい いいえ いいえ いいえ いいえ
id ユーザー構成可能 コンテナーの名前 はい はい はい はい はい
indexingPolicy ユーザー構成可能 コンテナーのインデックスをビルドするために使用されるポリシー。 はい いいえ はい はい はい
TimeToLive ユーザー構成可能 設定した期間後に、コンテナーから項目が自動的に削除されます。 詳細については、Time to Live に関するページを参照してください。 はい いいえ いいえ いいえ はい
changeFeedPolicy ユーザー構成可能 コンテナー内の項目に加えられた変更の読み取りに使用されます。 詳細については、変更フィードに関するページを参照してください。 はい いいえ いいえ いいえ はい
uniqueKeyPolicy ユーザー構成可能 論理パーティション内の 1 つまたは複数の値の一意性を確保するために使用されます。 詳細については、一意キー制約に関するページを参照してください。 はい いいえ いいえ いいえ はい
AnalyticalTimeToLive ユーザー構成可能 分析ストアのコンテキストで、設定した期間後にコンテナーの項目が自動的に削除されます。 詳細については、「分析ストア」を参照してください。 はい いいえ はい いいえ いいえ

Azure Cosmos DB 項目

使用する API に応じて、個々のデータ エンティティはさまざまな方法で表すことができます。

Azure Cosmos DB のエンティティ NoSQL 用 API Cassandra 用 API MongoDB 用 API Gremlin 用 API Table 用 API
Azure Cosmos DB の項目 Item ドキュメント ノードまたはエッジ Item

項目のプロパティ

Azure Cosmos DB のどの項目にも、次のシステム定義プロパティがあります。 使用する API に応じて、一部は直接公開されない場合があります。

システム定義のプロパティ システム生成またはユーザー定義 目的 NoSQL 用 API Cassandra 用 API MongoDB 用 DB API Gremlin 用 API Table 用 API
_rid システム生成 項目の一意識別子 はい いいえ いいえ いいえ いいえ
_etag システム生成 オプティミスティック同時実行制御に使用されるエンティティ タグ はい いいえ いいえ いいえ いいえ
_ts システム生成 項目の最終更新のタイムスタンプ はい いいえ いいえ いいえ いいえ
_self システム生成 項目のアドレス指定可能な URI はい いいえ いいえ いいえ いいえ
id 接続前/接続後 論理パーティション内のユーザーが定義した一意の名前。 はい はい はい はい はい
任意のユーザー定義のプロパティ ユーザー定義 API のネイティブ表現 (JSON、BSON、CQL など) で表されるユーザー定義のプロパティ はい はい はい はい はい

注意

id プロパティの一意性は、各論理パーティション内で適用されます。 複数のドキュメントで、異なるパーティション キー値を持つ同じ id プロパティを使用できます。

項目に対する操作

Azure Cosmos DB の項目では、次の操作をサポートします。 Azure Cosmos DB のいずれかの API を使用して操作を実行できます。

操作 NoSQL 用 API Cassandra 用 API MongoDB 用 API Gremlin 用 API Table 用 API
挿入、置換、削除、アップサート、読み取り はい はい はい はい はい

次のステップ

Azure Cosmos DB アカウントの管理方法とその他の概念を確認します。