💭
Azure CosmosDB for MongoDBで16MBのドキュメントを有効にする
通常の Azure CosmosDB では保存できるドキュメントサイズの上限は 2MB ですが、Azure CosmosDB の MongoDB 用 API では、保存できるドキュメントサイズの上限を 16MB に変更できます。
今回は Cloud Shell を使ってこの機能を有効にする手順を確認してみます。
Azure CosmosDB for MongoDB のリソースの作成
Azure CosmosDB for MongoDB のリソースを作成しておきます。
作成時点では Azure Portal の GUI 上「機能」の部分では 16MB のドキュメントについての項目はありません。
そのため、Cloud Shell などの CLI からの操作で設定をする必要があります。
Cloud Shell から 16MB のドキュメントの機能を有効にする
Azure Portal で Cloud Shell を起動します。ここでは Bash を使って操作することを前提としています。
RESOURCE_GROUP_NAME="<リソースグループ名>"
COSMOSDB_ACCOUNT_NAME="<CosmosDBのアカウント名>"
# 初期状態の設定を確認
az cosmosdb show --resource-group "${RESOURCE_GROUP_NAME}" --name "${COSMOSDB_ACCOUNT_NAME}" | jq .capabilities
初期状態では以下のようになっています。
azureuser [ ~ ]$ az cosmosdb show --resource-group "${RESOURCE_GROUP_NAME}" --name "${COSMOSDB_ACCOUNT_NAME}" | jq .capabilities
[
{
"name": "EnableMongo"
},
{
"name": "DisableRateLimitingResponses"
}
]
16MB のドキュメントの機能を有効にするには、以下のようにaz cosmosdb update
コマンドを利用します。
この操作の注意事項としては、オプション引数capabilities
に明示的に与えた機能が有効になります。デフォルトで有効なDisableRateLimitingResponses
を除くとサーバ側での再試行が無効化されるので注意が必要です。
az cosmosdb update \
--resource-group "${RESOURCE_GROUP_NAME}" \
--name "${COSMOSDB_ACCOUNT_NAME}" \
--capabilities DisableRateLimitingResponses EnableMongo16MBDocumentSupport
コマンドを実行してから数分待つと機能が有効になります。
再度、capabilities の情報を確認すると以下のようになっています。
azureuser [ ~ ]$ az cosmosdb show --resource-group "${RESOURCE_GROUP_NAME}" --name "${COSMOSDB_ACCOUNT_NAME}" | jq .capabilities
[
{
"name": "EnableMongo"
},
{
"name": "EnableMongo16MBDocumentSupport"
},
{
"name": "DisableRateLimitingResponses"
}
]
なお余談ですが、CLI から機能を有効にすると Azure Portal の GUI の「設定」からも 16MB のドキュメントの機能が有効になっていることが確認できます。
Discussion