💭

Azure CosmosDB for MongoDBで16MBのドキュメントを有効にする

2024/03/13に公開

通常の 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