ポータルで Azure Cosmos DB for NoSQL コンテナーの既定のインデックス ポリシーを確認する
Azure Cosmos DB のすべてのコンテナーには、コンテナー内の項目のインデックスを作成する方法をサービスに指示するインデックス作成ポリシーがあります。 既定では、このインデックス作成ポリシーは、すべての項目のすべてのプロパティにインデックスを付けます。 既定のインデックス作成ポリシーを使用すると、プロジェクトの開始時にインデックス作成、パフォーマンス、および管理について考える必要がないため、Azure Cosmos DB をすばやく簡単に開始できます。
このラボでは、データ エクスプローラーを使用して、いくつかのコンテナーのデフォルトのインデックス ポリシーを監視および操作します。
Azure Cosmos DB for NoSQL アカウントを作成する
Azure Cosmos DB は、複数の API をサポートするクラウドベースの NoSQL データベース サービスです。 Azure Cosmos DB アカウントを初めてプロビジョニングするときに、そのアカウントでサポートする API (たとえば、Mongo API や NoSQL API) を選択します。 Azure Cosmos DB for NoSQL アカウントのプロビジョニングが完了したら、エンドポイントとキーを取得し、Azure SDK for .NET または任意の他の SDK を使用して Azure Cosmos DB for NoSQL アカウントに接続する際に使用できます。
-
新しい Web ブラウザー ウィンドウまたはタブで、Azure portal (
portal.azure.com
) に移動します。 -
ご利用のサブスクリプションに関連付けられている Microsoft 資格情報を使用して、ポータルにサインインします。
-
[+ リソースの作成] を選択し、Cosmos DB を検索して、新しい Azure Cosmos DB for NoSQL アカウント リソースを作成します。以下を設定して、残りの設定はすべて既定値のままにします。
設定 Value サブスクリプション ’‘既存の Azure サブスクリプション’’ リソース グループ ’‘既存のリソース グループを選択するか、新しいものを作成します’’ アカウント名 ’‘グローバルに一意の名前を入力します’’ 場所 ’‘使用可能なリージョンを選びます’’ 容量モード プロビジョニング済みスループット Apply Free Tier Discount (Free レベル割引の適用) 適用しない 📝 ご利用のラボ環境には、新しいリソース グループを作成できない制限が存在する場合があります。 その場合は、事前に作成されている既存のリソース グループを使用します。
-
デプロイ タスクが完了するまで待ってから、このタスクを続行してください。
-
新しく作成された Azure Cosmos DB アカウント リソースに移動し、 [キー] ペインに移動します。
-
このペインには、SDK からアカウントに接続するために必要な接続の詳細と資格情報が含まれています。 具体的な内容は次のとおりです。
-
[URI] フィールドに注目します。 このエンドポイントの値は、この演習で後ほど使用します。
-
[主キー] フィールドに注目してください。 このキーの値は、この演習で後ほど使用します。
-
Azure Cosmos DB for NoSQL アカウントにデータをシードする
cosmicworks コマンドライン ツールを使用して、Azure Cosmos DB for NoSQL アカウントにサンプル データをデプロイします。 このツールはオープンソースで、NuGet から入手できます。 このツールを Azure Cloud Shell にインストールして、データベースのシードに使用します。
-
Visual Studio Code を起動します。
-
Visual Studio Code で、 [ターミナル] メニューを開き、 [新しいターミナル] を選択して新しいターミナル インスタンスを開きます。
📝 Visual Studio Code インターフェイスについてまだよく理解していない場合は、Visual Studio Code の入門ガイドを参照してください
-
コンピューターでグローバルに使用するために cosmicworks コマンドライン ツールをインストールします。
dotnet tool install cosmicworks --global --version 1.*
💡 このコマンドが完了するまで数分かかる場合があります。 過去にこのツールの最新バージョンを既にインストールしている場合は、このコマンドによって警告メッセージ (*ツール ‘cosmicworks’ は既にインストールされています) が出力されます。
-
cosmicworks を実行し、次のコマンドライン オプションを使用して Azure Cosmos DB アカウントをシードします。
オプション Value –endpoint ’‘このラボで先ほどコピーしたエンドポイントの値’’ –key ’‘このラボで先ほどコピーしたキーの値’’ –datasets product cosmicworks --endpoint <cosmos-endpoint> --key <cosmos-key> --datasets product
📝 たとえば、エンドポイントが https://dp420.documents.azure.com:443/ で、キーが fDR2ci9QgkdkvERTQ== の場合、コマンドは次のようになります。
cosmicworks --endpoint https://dp420.documents.azure.com:443/ --key fDR2ci9QgkdkvERTQ== --datasets product
-
cosmicworks コマンドによって、データベース、コンテナー、および項目がアカウントに設定されるまで待ちます。
-
統合ターミナルを閉じます。
既定のインデックス作成ポリシーを表示および操作する
コンテナーがコード、ポータル、またはツールによって作成される場合、特に指定しなければ、インデックス作成ポリシーはインテリジェントな既定値に設定されます。 既定のインデックス作成ポリシーを確認し、ポリシーを変更します。
-
Web ブラウザーに戻ります。
-
Azure Cosmos DB アカウント リソース内で、 [データ エクスプローラー] ペインに移動します。
-
[データ エクスプローラー] で、cosmicworks データベース ノードを展開し、NoSQL API ナビゲーション ツリー内の新しい products コンテナー ノードを確認します。
-
NoSQL API ナビゲーション ツリー内の products コンテナー ノードを選択し、[新しい SQL クエリ] を選択します。
-
エディター領域のコンテンツを削除します。
-
名前が HL ヘッドセットと同じであるすべてのドキュメントを返す新しい SQL クエリを作成します。
SELECT * FROM p WHERE p.name = 'HL Headset'
-
[クエリの実行] を選択します。
-
クエリの結果を確認します。
-
[クエリ] タブで、[クエリ統計] を選択します。
-
[クエリ統計] セクション内の [要求使用量] フィールドの値を確認します。
📝 現在、すべてのパスにインデックスが付けられているため、このクエリは比較的効率的です。
-
NoSQL API ナビゲーション ツリーの products コンテナー ノード内で、[スケールと設定] を選択します。
-
[インデックス作成ポリシー] セクションで、既定のインデックス作成ポリシーを確認します。
{ "indexingMode": "consistent", "automatic": true, "includedPaths": [ { "path": "/*" } ], "excludedPaths": [ { "path": "/\"_etag\"/?" } ] }
📝 この既定のポリシーでは、_etag を除くすべての可能なパスにインデックスを付けます。
-
エディター内で、インデックス作成ポリシーの内容を置換して、/price パスのみにインデックスを付けます。
{ "indexingMode": "consistent", "automatic": true, "includedPaths": [ { "path": "/price/?" } ], "excludedPaths": [ { "path": "/*" } ] }
-
[保存] を選択してご自身の変更を保存します。
-
[新しい SQL クエリ] を選択します。
-
エディター領域のコンテンツを削除します。
-
名前が HL ヘッドセットと同じであるすべてのドキュメントを返す新しい SQL クエリを作成します。
SELECT * FROM p WHERE p.name = 'HL Headset'
-
[クエリの実行] を選択します。
-
クエリの結果を確認します。
-
[クエリ] タブで、[クエリ統計] を選択します。
-
[クエリ統計] セクション内の [要求使用量] フィールドの値を確認します。
📝 name プロパティにインデックスが付けられなくなったため、要求料金が高くなりました。
-
エディター領域のコンテンツを削除します。
-
price が $3,000 より大きいすべてのドキュメントを返す新しい SQL クエリを作成します。
SELECT * FROM p WHERE p.price > 3000
-
[クエリの実行] を選択します。
-
クエリの結果を確認します。
-
[クエリ] タブで、[クエリ統計] を選択します。
-
[クエリ統計] セクション内の [要求使用量] フィールドの値を確認します。