Azure Cosmos DB for NoSQL についてよく寄せられる質問

適用対象: NoSQL

Azure Cosmos DB for NoSQL で開発を開始するにはどうすればいいですか?

まず、Azure サブスクリプションにサインアップする必要があります。 Azure サブスクリプションにサインアップすると、NoSQL 用 API コンテナーを Azure サブスクリプションに追加できます。

.NET、Python、Node.js、JavaScript、Go、Java では ソフトウェア開発キット (SDK) が利用できます。 また、開発者は REST API を使用することで、より多くのプラットフォームや言語で Azure Cosmos DB リソースを操作することもできます。

使用を開始するための Azure Cosmos DB for NoSQL のサンプルはありますか?

NoSQL 用 API のクイックスタートのコード サンプルとテンプレートを確認してください。

Azure Cosmos DB for NoSQL はスキーマのないデータをサポートしますか?

はい。NoSQL 用 API では、スキーマ定義やヒントがなくても、アプリケーションが任意の JSON ドキュメントを項目として格納できます。 データは、Azure Cosmos DB for NoSQL クエリ言語を使用したクエリにすぐに使用できます。

Azure Cosmos DB for NoSQL は、ACID (原子性、整合性、分離性、持続性) トランザクションをサポートしますか?

はい。NoSQL 用 API は、SDK 内のバッチまたは JavaScript のストアド プロシージャとトリガーを使用して表現されるクロス ドキュメント トランザクションをサポートします。 トランザクションは、各コンテナー内の単一のパーティションを対象とし、他の同時実行されるコードおよびユーザー要求から "完全に" 分離された ACID セマンティクスで実行されます。 例外が発生した場合は、トランザクション全体がロールバックされます。

Azure Cosmos DB for NoSQL データベースを作成するにはどうすればいいですか?

次のツールのいずれかを使用してデータベースを作成できます。

Azure Cosmos DB for NoSQL データベースのネイティブ ユーザーとアクセス許可を構成するにはどうすればいいですか?

ユーザーとアクセス許可を作成するには、Azure Cosmos DB for NoSQL SDK のいずれかか REST API を使用します。 詳しくは、「ユーザーとリソース トークンを構成する」をご覧ください。 リソース トークンの使用によるアクセス許可の作成は、コンテナー レベルとその子孫 (ドキュメントや添付ファイルなど) で許可されます。 データベース レベルまたはアカウント レベルでのアクセス許可の作成は、現時点では許可されません。

既存の Microsoft Entra ID アカウントを使用して、Azure Cosmos DB for NoSQL に対して認証を行うことはできますか?

はい。 Azure Cosmos DB は、サービスとそのリソース (コントロール プレーン) を管理し、データ、操作、クエリ (データ プレーン) を実行するための Microsoft Entra 認証をサポートしています。 コントロール プレーンの認証は、Azure のロールベースのアクセス制御機能を使用して実行されます。 事前構成済みの組み込みロール (../../role-based-access-control/built-in-roles.md) を使用することもできれば、カスタム ロールを作成することもできます。 Azure のロールベースのアクセス制御を使用すると、アカウント、データベース、コンテナー、メタデータを管理できます。 コントロール プレーンにはこれらの例を含む操作が含まれます (ただし、これらに限定されません)。

  • データベースの作成、置換、または削除 - コンテナーの作成、置換、または削除 - データベース スループットの読み取りまたは置換 - コンテナー スループットの読み取りまたは置換 詳細については、「Azure Cosmos DB のコントロール プレーンのロールベースのアクセス制御」を参照してください。 データ プレーンの認証では、NoSQL ネイティブのロールベースのアクセス制御実装用のカスタム API が使用されます。 このネイティブ実装では、事前構成済みロールまたはカスタム ロールを使用することもできます。 ネイティブのロールベースのアクセス制御を使用すると、クエリを実行し、項目を管理し、その他の一般的な操作を実行できます。 データ プレーンにはこれらの例を含む操作が含まれます (ただし、これらに限定されません)。
  • 項目の作成、置換、更新、または削除 - 項目の修正プログラムの適用 - クエリの実行 詳細については、「Azure Cosmos DB のデータ プレーンのロールベースのアクセス制御」を参照してください。

Azure Cosmos DB for NoSQL は SQL クエリ言語をサポートしますか?

構造化照会言語 (SQL) は、リレーショナル データのクエリに通常使用される言語です。 NoSQL 用 API には、SQL から派生したカスタム NoSQL クエリ言語があります。 NoSQL クエリ言語には、さまざまな NoSQL 固有の機能強化に加え、SQL Server に通常関連付けられた SQL クエリ言語のサブセットが含まれています。 NoSQL クエリ言語は、JavaScript ベースのユーザー定義関数 (UDF) により高度な階層演算子とリレーショナル演算子の機能拡張を提供します。 JSON 文法では、ラベル付きノードが配置されたツリーとして JSON ドキュメントをモデル化できます。これは、Azure Cosmos DB の自動インデックス作成手法と Azure Cosmos DB の SQL クエリ言語の両方で使用されます。 このクエリ言語の使用については、「NoSQL クエリ」を参照してください。

Azure Cosmos DB for NoSQL は SQL 集計関数をサポートしますか?

NoSQL 用 API は、NoSQL クエリ言語経由で COUNTMAXAVGSUM などの集計関数を使用した集計をサポートします。

Azure Cosmos DB for NoSQL はどのように同時実行を提供しますか?

NoSQL 用 API は、HTTP エンティティ タグ (ETag) によるオプティミスティック同時実行制御 (OCC) をサポートしています。 すべての NoSQL 用 API リソースに ETag があり、ドキュメントが更新されるたびにサーバーで ETag が設定されます。 すべての応答メッセージに ETag ヘッダーと現在の値が含まれます。 ETag を If-Match ヘッダーと共に使用すると、サーバーはリソースを更新する必要があるかどうかを判断できるようになります。 If-Match 値は、チェック対象の ETag 値です。 対象の ETag 値がサーバーの ETag 値と一致する場合に、リソースが更新されます。 ETag が最新ではない場合、サーバーは操作を拒否して "HTTP 412 Precondition failure" 応答コードを返します。 この場合、クライアントは、リソースを再フェッチしてリソースの最新の ETag 値を取得します。 また、Etag を If-None-Match ヘッダーと共に使用すると、リソースの再フェッチが必要かどうかを判断できます。

NoSQL 用 API SDK のほとんどには、オプティミスティック同時実行制御を管理するためのクラスが含まれています。

Azure Cosmos DB for NoSQL にドキュメントを一括挿入するにはどうすればいいですか?

.NET SDK の一括インポート機能または NoSQL 用 API の Java SDK を使用して、大量のデータ セットをインポートします。 この機能によりプロビジョニングされたスループットが最適化されるため、大量のデータ セットをインポートできます。

または、Apache Spark を使用して、Python または Scala を通じて大量のデータをインポートします。

Azure Cosmos DB for NoSQL はリソース リンクのキャッシュをサポートしますか?

はい。Azure Cosmos DB for NoSQL は RESTful サービスであるため、リソース リンクは変更できず、キャッシュできます。 NoSQL 用 API クライアントでは、リソースのようなドキュメントやコンテナーに対する読み取りに "If-None-Match" ヘッダーを指定し、サーバー バージョンが変更されると、ローカル コピーを更新できます。

Azure Cosmos DB for NoSQL のローカル インスタンスは使用できますか?

はい。 Azure Cosmos DB エミュレーターは、Azure Cosmos DB サービスの高精度なエミュレーションを提供します。 さまざまな API で Azure Cosmos DB と同じ機能をサポートします。 この機能には、項目の作成、項目のクエリ、コンテナーのプロビジョニング、コンテナーのスケーリングのサポートが含まれます。 エミュレーターのエンドポイントを使用して、アプリケーションを開発し、テストできます。 その後、接続文字列をエミュレーターからライブ サービスに変更することで、グローバル規模で Azure にアプリケーションをデプロイできます。

ポータルでデータ エクスプローラーを使用すると、Azure Cosmos DB for NoSQL 項目の長い浮動小数点値が四捨五入されるのはどうしてですか?

このデータ エクスプローラーの制限は、JavaScript の制限です。 JavaScript は、電気電子学会 (IEEE) 754 で指定されている倍精度浮動小数点形式を使用します。 このデータ型は、-(253 - 1) から 253 - 1 (つまり、9007199254740991) までの数値のみを安全に保持できます。