Azure Cosmos DB のデータベース、コンテナー、項目の操作Work with databases, containers, and items in Azure Cosmos DB

Azure サブスクリプションで Azure Cosmos DB アカウントを作成した後は、そのアカウントでデータベース、コンテナー、および項目を作成して、データを管理できます。After you create an Azure Cosmos DB account under your Azure subscription, you can manage data in your account by creating databases, containers, and items. この記事では、これらの各エンティティについて説明します。This article describes each of these entities.

次の画像は、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. 次の表は、Azure Cosmos データベースがどのように、API 固有のさまざまなエンティティにマップされてるかを示しています。The following table shows how an Azure Cosmos 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 DatabaseDatabase キースペースKeyspace DatabaseDatabase DatabaseDatabase 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:

OperationOperation 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 and the throughput that you provision on it are automatically distributed across a set of logical partitions based on the partition key. パーティション分割とパーティション キーの詳細については、データのパーティション分割に関するページを参照してください。To learn more about partitioning and partition keys, see Partition data.

Azure Cosmos コンテナーを作成するときには、次のいずれかのモードでスループットを構成します。When you create an Azure Cosmos 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. 詳細については、Azure Cosmos コンテナーのスループットをプロビジョニングする方法に関するページを参照してください。To learn more, see How to provision throughput on an Azure Cosmos 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. 詳細については、Azure Cosmos データベースのスループットをプロビジョニングする方法に関するページを参照してください。To learn more, see How to provision throughput on an Azure Cosmos 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.

Azure Cosmos コンテナーは、スキーマに依存しない、項目のコンテナーです。An Azure Cosmos 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.

Azure Cosmos コンテナー内の選択された項目、またはコンテナー全体に対して Time to Live (TTL) を設定することによって、それらの項目をシステムから正常に消去できます。You can set Time to Live (TTL) on selected items in an Azure Cosmos 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.

ご利用の Azure Cosmos コンテナーには、ストアド プロシージャ、トリガー、ユーザー定義関数 (UDF)マージ プロシージャを登録できます。You can register stored procedures, triggers, user-defined functions (UDFs), and merge procedures for your Azure Cosmos 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.

Azure Cosmos コンテナーは、以下の表に示すように API 固有のエンティティに特化されます。An Azure Cosmos 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 GraphGraph テーブルTable

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
_id_id システム生成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:

OperationOperation 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 ドキュメントDocument 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
_id_id システム生成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. ユーザーが ID を指定しない場合、システムによって ID が自動生成されます。If the user doesn’t specify the ID, the system automatically generates one. はい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.

OperationOperation 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

次のタスクと概念について説明します。Learn about these tasks and concepts: