Azure Cosmos DB リソース モデルAzure Cosmos DB resource model

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

Azure Cosmos DB はフルマネージドのサービスとしてのプラットフォーム (PaaS) です。Azure Cosmos DB is a fully managed platform-as-a-service (PaaS). Azure Cosmos DB の使用を開始するには、最初に、Azure サブスクリプション内に Azure Cosmos アカウントを作成し、その下にデータベース、コンテナー、項目を作成する必要があります。To begin using Azure Cosmos DB, you should initially create an Azure Cosmos account in your Azure subscription and databases, containers, items under it. この記事では、Azure Cosmos DB リソース モデルと、リソース モデル階層内のさまざまなエンティティについて説明します。This article describes the Azure Cosmos DB resource model and different entities in the resource model hierarchy.

Azure Cosmos アカウントは、グローバルな分散と高可用性の基本単位です。The Azure Cosmos account is the fundamental unit of global distribution and high availability. Azure Cosmos アカウントには固有の DNS 名が含まれており、Azure portal または Azure CLI を使用するか、別の言語固有の SDK を使用してアカウントを管理できます。Your Azure Cosmos account contains a unique DNS name and you can manage an account by using the Azure portal or the Azure CLI, or by using different language-specific SDKs. 詳細については、Azure Cosmos アカウントの管理方法に関するページを参照してください。For more information, see how to manage your Azure Cosmos account. データやスループットを複数の Azure リージョンにグローバルに分散させる場合は、お使いのアカウントに、いつでも Azure リージョンを追加したり、削除したりすることができます。For globally distributing your data and throughput across multiple Azure regions, you can add and remove Azure regions to your account at any time. アカウントは、単一リージョンまたは複数の書き込みリージョンを持つように構成できます。You can configure your account to have either a single region or multiple write regions. 詳細については、アカウントに Azure リージョンを追加および削除する方法に関するページを参照してください。For more information, see how to add and remove Azure regions to your account. アカウントに対して既定の一貫性レベルを構成できます。You can configure the default consistency level on an account.

Azure Cosmos アカウントの要素Elements in an Azure Cosmos account

Azure Cosmos コンテナーは、スケーラビリティの基本単位です。An Azure Cosmos container is the fundamental unit of scalability. コンテナー上に持つことができるプロビジョニング スループット (RU/秒) とストレージは事実上無制限です。You can virtually have an unlimited provisioned throughput (RU/s) and storage on a container. Azure Cosmos DB では、プロビジョニング スループットとストレージを柔軟にスケーリングするために、指定した論理パーティション キーを使用してコンテナーを透過的に分割します。Azure Cosmos DB transparently partitions your container using the logical partition key that you specify in order to elastically scale your provisioned throughput and storage.

現時点では、Azure サブスクリプションで最大 50 の Azure Cosmos アカウントを作成できます (これはサポート リクエストを通じて増加できるソフト制限です)。Currently, you can create a maximum of 50 Azure Cosmos accounts under an Azure subscription (this is a soft limit that can be increased via support request). 1 つの Azure Cosmos アカウントで、事実上無制限のデータ量とプロビジョニング スループットを管理できます。A single Azure Cosmos account can virtually manage an unlimited amount of data and provisioned throughput. データとプロビジョニング スループットを管理するには、自分のアカウントで 1 つまたは複数の Azure Cosmos データベースを作成し、そのデータベース内に 1 つまたは複数のコンテナーを作成することができます。To manage your data and provisioned throughput, you can create one or more Azure Cosmos databases under your account and within that database, you can create one or more containers. 次の画像は、Azure Cosmos アカウントの要素の階層を示しています。The following image shows the hierarchy of elements in an Azure Cosmos account:

Azure Cosmos アカウントの階層

Azure サブスクリプションでアカウントを作成したら、データベース、コンテナー、および項目を作成することによって、アカウント内のデータを管理できます。After you create an account under your Azure subscription, you can manage the data in your account by creating databases, containers, and items.

次の画像は、Azure Cosmos DB アカウントのさまざまなエンティティの階層を示しています。The following image shows the hierarchy of different entities in an Azure Cosmos DB account:

Azure Cosmos アカウントのエンティティ

Azure Cosmos データベースAzure Cosmos databases

ご利用のアカウントの下に、1 つまたは複数の Azure Cosmos データベースを作成できます。You can create one or multiple Azure Cosmos databases under your account. データベースは名前空間に似ています。A database is analogous to a namespace. データベースは、一連の Azure Cosmos コンテナーを管理する単位です。A database is the unit of management for a set of Azure Cosmos containers. 次の表は、データベースがどのように API 固有のさまざまなエンティティにマップされているかを示しています。The following table shows how a database is mapped to various API-specific entities:

Azure Cosmos エンティティAzure Cosmos entity SQL APISQL API Cassandra APICassandra API MongoDB 用 Azure Cosmos DB APIAzure Cosmos DB API for MongoDB Gremlin APIGremlin API テーブル APITable API
Azure Cosmos データベースAzure Cosmos database データベースDatabase キースペースKeyspace データベースDatabase データベースDatabase NANA

注意

Table API アカウントでは、最初のテーブルを作成すると、自分の Azure Cosmos アカウント内に既定のデータベースが自動的に作成されます。With Table API accounts, when you create your first table, a default database is automatically created in your Azure Cosmos account.

Azure Cosmos データベースに対する操作Operations on an Azure Cosmos database

Azure Cosmos API を使用して、次の表で示しているように Azure Cosmos データベースとやりとりできます。You can interact with an Azure Cosmos database with Azure Cosmos APIs as described in the following table:

操作Operation Azure CLIAzure CLI SQL APISQL API Cassandra APICassandra API MongoDB 用 Azure Cosmos DB APIAzure Cosmos DB API for MongoDB Gremlin APIGremlin API テーブル APITable API
すべてのデータベースを列挙するEnumerate all databases はいYes はいYes はい (データベースはキースペースにマップされる)Yes (database is mapped to a keyspace) はいYes NANA NANA
データベースを読み込むRead database はいYes はいYes はい (データベースはキースペースにマップされる)Yes (database is mapped to a keyspace) はいYes NANA NANA
新しいデータベースの作成Create new database はいYes はいYes はい (データベースはキースペースにマップされる)Yes (database is mapped to a keyspace) はいYes NANA NANA
データベースを更新するUpdate database はいYes はいYes はい (データベースはキースペースにマップされる)Yes (database is mapped to a keyspace) はいYes NANA NANA

Azure Cosmos コンテナーAzure Cosmos containers

Azure Cosmos コンテナーは、プロビジョニング スループットとストレージの両方に関するスケーラビリティの単位です。An Azure Cosmos container is the unit of scalability both for provisioned throughput and storage. コンテナーは水平方向にパーティション分割され、その後、複数のリージョン間でレプリケートされます。A container is horizontally partitioned and then replicated across multiple regions. コンテナーに追加した項目は、パーティション キーに基づいて、論理パーティションに自動的にグループ化され、物理パーティション全体で自動的に分散されます。The items that you add to the container are automatically grouped into logical partitions, which are distributed across physical partitions, based on the partition key. コンテナー上のスループットは、物理パーティション全体で均等に分散されます。The throughput on a container is evenly distributed across the physical partitions. パーティション分割とパーティション キーの詳細については、データのパーティション分割に関するページを参照してください。To learn more about partitioning and partition keys, see Partition data.

コンテナーを作成するときには、次のいずれかのモードでスループットを構成します。When you create a container, you configure throughput in one of the following modes:

  • 専用プロビジョニング スループット モード: コンテナーにプロビジョニングされたスループットは、そのコンテナー専用に予約され、SLA によってバックアップされます。Dedicated provisioned throughput mode: The throughput provisioned on a container is exclusively reserved for that container and it is backed by the SLAs. 詳細については、コンテナーでのスループットをプロビジョニングする方法に関するページを参照してください。To learn more, see How to provision throughput on a container.

  • 共有プロビジョニング スループット モード: これらのコンテナーでは、同じデータベース内の他のコンテナー (専用プロビジョニング スループットで構成されたコンテナーを除く) とプロビジョニング スループットを共有します。Shared provisioned throughput mode: These containers share the provisioned throughput with the other containers in the same database (excluding containers that have been configured with dedicated provisioned throughput). つまり、データベース上のプロビジョニング スループットは、すべての "共有スループット" コンテナー間で共有されます。In other words, the provisioned throughput on the database is shared among all the “shared throughput” containers. 詳細については、データベースでのスループットをプロビジョニングする方法に関するページを参照してください。To learn more, see How to provision throughput on a database.

注意

共有および専用のスループットを構成できるのは、データベースとコンテナーを作成する場合のみになります。You can configure shared and dedicated throughput only when creating the database and container. コンテナーを作成した後に専用スループット モードから共有スループット モード (またはその逆) に切り替えるには、新しいコンテナーを作成して、その新しいコンテナーにデータを移行する必要があります。To switch from dedicated throughput mode to shared throughput mode (and vice versa) after the container is created, you have to create a new container and migrate the data to the new container. データの移行は、Azure Cosmos DB の変更フィード機能を使用して行うことができます。You can migrate the data by using the Azure Cosmos DB change feed feature.

Azure Cosmos コンテナーでは、コンテナーを専用または共有のどちらのプロビジョニング スループット モードで作成していても、柔軟にスケーリングできます。An Azure Cosmos container can scale elastically, whether you create containers by using dedicated or shared provisioned throughput modes.

コンテナーは、スキーマに依存しない、項目のコンテナーです。A container is a schema-agnostic container of items. コンテナー内の項目には、任意のスキーマを含めることができます。Items in a container can have arbitrary schemas. たとえば、人物を表す項目と自動車を表す項目を 同じコンテナー に配置できます。For example, an item that represents a person and an item that represents an automobile can be placed in the same container. 既定では、コンテナーに追加するすべての項目に自動的にインデックスが付けられ、明示的なインデックスやスキーマ管理は必要とされません。By default, all items that you add to a container are automatically indexed without requiring explicit index or schema management. コンテナーでインデックス作成ポリシーを構成することによって、インデックス作成の動作をカスタマイズできます。You can customize the indexing behavior by configuring the indexing policy on a container.

コンテナー内の選択された項目、またはコンテナー全体に対して Time to Live (TTL) を設定すると、それらの項目をシステムから正常に消去できます。You can set Time to Live (TTL) on selected items in a container or for the entire container to gracefully purge those items from the system. Azure Cosmos DB では、項目の有効期限が切れるとそれらが自動的に削除されます。Azure Cosmos DB automatically deletes the items when they expire. これによって、コンテナーに対して実行されるクエリにより、固定されたバインド内の有効期限切れの項目が返されないことも保証されます。It also guarantees that a query performed on the container doesn't return the expired items within a fixed bound. 詳細については、コンテナーでの TTL の構成に関するページを参照してください。To learn more, see Configure TTL on your container.

変更フィードを使用して、コンテナーの論理パーティションごとに管理されている操作ログにサブスクライブできます。You can use change feed to subscribe to the operations log that is managed for each logical partition of your container. 変更フィードでは、項目の前後のイメージと共に、コンテナーに対して実行されたすべての更新のログが提供されます。Change feed provides the log of all the updates performed on the container, along with the before and after images of the items. 詳細については、変更フィードを使用した待ち受け型のアプリケーションの構築に関するページを参照してください。For more information, see Build reactive applications by using change feed. また、コンテナーの変更フィード ポリシーを使用することで、変更フィードの保有期間を構成することもできます。You can also configure the retention duration for the change feed by using the change feed policy on the container.

コンテナーには、ストアド プロシージャ、トリガー、ユーザー定義関数 (UDF)マージ プロシージャを登録できます。You can register stored procedures, triggers, user-defined functions (UDFs), and merge procedures for your container.

Azure Cosmos コンテナーで一意キー制約を指定できます。You can specify a unique key constraint on your Azure Cosmos container. 一意キー ポリシーを作成することで、論理パーティション キーごとに、1 つまたは複数の値の一意性を確保します。By creating a unique key policy, you ensure the uniqueness of one or more values per logical partition key. 一意キー ポリシーを使用してコンテナーを作成する場合、一意キー制約で指定されている値と重複する値を持つ新しい項目や更新された項目を作成することはできません。If you create a container by using a unique key policy, no new or updated items with values that duplicate the values specified by the unique key constraint can be created. 詳細については、一意キーの制約に関するページを参照してください。To learn more, see Unique key constraints.

コンテナーは、次の表に示すように、API 固有のエンティティに特化されます。A container is specialized into API-specific entities as shown in the following table:

Azure Cosmos エンティティAzure Cosmos entity SQL APISQL API Cassandra APICassandra API MongoDB 用 Azure Cosmos DB APIAzure Cosmos DB API for MongoDB Gremlin APIGremlin API テーブル APITable API
Azure Cosmos コンテナーAzure Cosmos container コンテナーContainer テーブルTable コレクションCollection グラフGraph テーブルTable

注意

コンテナーを作成するときは、同じ名前で大文字と小文字が異なる 2 つのコンテナーを作成しないようにしてください。When creating containers, make sure you don’t create two containers with the same name but different casing. これは、Azure プラットフォームの一部で大文字と小文字が区別されないため、このような名前のコンテナーでテレメトリとアクションの混同や衝突が発生する可能性があるためです。That’s because some parts of the Azure platform are not case-sensitive, and this can result in confusion/collision of telemetry and actions on containers with such names.

Azure Cosmos コンテナーのプロパティProperties of an Azure Cosmos container

Azure Cosmos コンテナーには、一連のシステム定義のプロパティがあります。An Azure Cosmos container has a set of system-defined properties. 使用する API によっては、一部のプロパティが直接公開されない場合があります。Depending on which API you use, some properties might not be directly exposed. 次の表は、システム定義のプロパティの一覧を示しています。The following table describes the list of system-defined properties:

システム定義のプロパティSystem-defined property システム生成またはユーザー構成可能System-generated or user-configurable 目的Purpose SQL APISQL API Cassandra APICassandra API MongoDB 用 Azure Cosmos DB APIAzure Cosmos DB API for MongoDB Gremlin APIGremlin API テーブル APITable API
_rid_rid システム生成System-generated コンテナーの一意識別子Unique identifier of container はいYes いいえNo いいえNo いいえNo いいえNo
_etag_etag システム生成System-generated オプティミスティック同時実行制御に使用されるエンティティ タグEntity tag used for optimistic concurrency control はいYes いいえNo いいえNo いいえNo いいえNo
_ts_ts システム生成System-generated コンテナーの最終更新時のタイムスタンプLast updated timestamp of the container はいYes いいえNo いいえNo いいえNo いいえNo
_self_self システム生成System-generated コンテナーのアドレス指定可能な URIAddressable URI of the container はいYes いいえNo いいえNo いいえNo いいえNo
idid ユーザー構成可能User-configurable コンテナーのユーザーが定義した一意の名前User-defined unique name of the container はいYes はいYes はいYes はいYes はいYes
indexingPolicyindexingPolicy ユーザー構成可能User-configurable インデックスのパス、インデックスの種類、インデックス モードを変更する機能を提供しますProvides the ability to change the index path, index type, and index mode はいYes いいえNo いいえNo いいえNo はいYes
TimeToLiveTimeToLive ユーザー構成可能User-configurable 設定した期間後にコンテナーから自動的に項目を削除する機能を提供します。Provides the ability to delete items automatically from a container after a set time period. 詳細については、Time to Live に関するページを参照してください。For details, see Time to Live. はいYes いいえNo いいえNo いいえNo はいYes
changeFeedPolicychangeFeedPolicy ユーザー構成可能User-configurable コンテナー内の項目に加えられた変更の読み取りに使用されます。Used to read changes made to items in a container. 詳細については、変更フィードに関するページを参照してください。For details, see Change feed. はいYes いいえNo いいえNo いいえNo はいYes
uniqueKeyPolicyuniqueKeyPolicy ユーザー構成可能User-configurable 論理パーティション内の 1 つまたは複数の値の一意性を確保するために使用されます。Used to ensure the uniqueness of one or more values in a logical partition. 詳細については、一意キー制約に関するページを参照してください。For more information, see Unique key constraints. はいYes いいえNo いいえNo いいえNo はいYes

Azure Cosmos コンテナーに対する操作Operations on an Azure Cosmos container

Azure Cosmos コンテナーでは、いずれかの Azure Cosmos API を使用する場合、以下の操作をサポートします。An Azure Cosmos container supports the following operations when you use any of the Azure Cosmos APIs:

操作Operation Azure CLIAzure CLI SQL APISQL API Cassandra APICassandra API MongoDB 用 Azure Cosmos DB APIAzure Cosmos DB API for MongoDB Gremlin APIGremlin API テーブル APITable API
データベース内のコンテナーを列挙するEnumerate containers in a database はいYes はいYes はいYes はいYes NANA NANA
コンテナーを読み取るRead a container はいYes はいYes はいYes はいYes NANA NANA
新しいコンテナーを作成するCreate a new container はいYes はいYes はいYes はいYes NANA NANA
コンテナーを更新するUpdate a container はいYes はいYes はいYes はいYes NANA NANA
コンテナーを削除するDelete a container はいYes はいYes はいYes はいYes NANA NANA

Azure Cosmos 項目Azure Cosmos items

使用する API に応じて、Azure Cosmos 項目では、コレクション内のドキュメント、テーブル内の行、グラフ内のノードまたはエッジのいずれかを表すことができます。Depending on which API you use, an Azure Cosmos item can represent either a document in a collection, a row in a table, or a node or edge in a graph. 次の表は、API 固有のエンティティと Azure Cosmos 項目との間のマッピングを示しています。The following table shows the mapping of API-specific entities to an Azure Cosmos item:

Cosmos エンティティCosmos entity SQL APISQL API Cassandra APICassandra API MongoDB 用 Azure Cosmos DB APIAzure Cosmos DB API for MongoDB Gremlin APIGremlin API テーブル APITable API
Azure Cosmos 項目Azure Cosmos item ItemItem Row ドキュメントDocument ノードまたはエッジNode or edge ItemItem

項目のプロパティProperties of an item

Azure Cosmos のどの項目にも、以下のシステム定義プロパティがあります。Every Azure Cosmos item has the following system-defined properties. 使用する API に応じて、一部は直接公開されない場合があります。Depending on which API you use, some of them might not be directly exposed.

システム定義のプロパティSystem-defined property システム生成またはユーザー構成可能System-generated or user-configurable 目的Purpose SQL APISQL API Cassandra APICassandra API MongoDB 用 Azure Cosmos DB APIAzure Cosmos DB API for MongoDB Gremlin APIGremlin API テーブル APITable API
_rid_rid システム生成System-generated 項目の一意識別子Unique identifier of the item はいYes いいえNo いいえNo いいえNo いいえNo
_etag_etag システム生成System-generated オプティミスティック同時実行制御に使用されるエンティティ タグEntity tag used for optimistic concurrency control はいYes いいえNo いいえNo いいえNo いいえNo
_ts_ts システム生成System-generated 項目の最終更新のタイムスタンプTimestamp of the last update of the item はいYes いいえNo いいえNo いいえNo いいえNo
_self_self システム生成System-generated 項目のアドレス指定可能な URIAddressable URI of the item はいYes いいえNo いいえNo いいえNo いいえNo
idid 接続前/接続後Either 論理パーティション内のユーザーが定義した一意の名前。User-defined unique name in a logical partition. はいYes はいYes はいYes はいYes はいYes
任意のユーザー定義のプロパティArbitrary user-defined properties ユーザー定義User-defined API のネイティブ表現 (JSON、BSON、CQL など) で表されるユーザー定義のプロパティUser-defined properties represented in API-native representation (including JSON, BSON, and CQL) はいYes はいYes はいYes はいYes はいYes

注意

id プロパティの一意性は、各論理パーティション内でのみ適用されます。Uniqueness of the id property is only enforced within each logical partition. 複数のドキュメントで、異なるパーティション キー値を持つ同じ id プロパティを使用できます。Multiple documents can have the same id property with different partition key values.

項目に対する操作Operations on items

Azure Cosmos 項目では、次の操作をサポートします。Azure Cosmos items support the following operations. Azure Cosmos API のいずれかを使用して操作を実行できます。You can use any of the Azure Cosmos APIs to perform the operations.

操作Operation Azure CLIAzure CLI SQL APISQL API Cassandra APICassandra API MongoDB 用 Azure Cosmos DB APIAzure Cosmos DB API for MongoDB Gremlin APIGremlin API テーブル APITable API
挿入、置換、削除、アップサート、読み取りInsert, Replace, Delete, Upsert, Read いいえNo はいYes はいYes はいYes はいYes はいYes

次のステップNext steps

Azure Cosmos アカウントの管理方法とその他の概念を確認します。Learn how to manage your Azure Cosmos account and other concepts: