Обновление политики индексации CosmosDb через шаблоны ARM - PullRequest
0 голосов
/ 14 февраля 2020

Я пытаюсь использовать шаблоны ARM для обновления политики индексации контейнера cosmos. Я попробовал 2 способа, один из которых - просто объявить политику индексации при объявлении контейнера в ARM.

{
      "apiVersion": "[variables('cosmosDbApiVersion')]",
      "type": "Microsoft.DocumentDB/databaseAccounts/apis/databases/containers",
      "dependsOn": [ /* resourceId */ ],
      "name": "/* containerName */",
      "properties": {
        "resource": {
          "id": "/* id */",
          "partitionKey": {
            "paths": [
              "/partitionKey"
            ],
            "kind": "Hash"
          },
          "indexes": [
            {
              "indexingMode": "consistent",
              "automatic": true,
              "includedPaths": [
                {
                  "path": "/*",
                  "indexes": [
                    {
                      "kind": "Range",
                      "dataType": "Number",
                      "precision": -1
                    },
                    {
                      "kind": "Hash",
                      "dataType": "String",
                      "precision": 3
                    }
                  ]
                }
              ]
            }
          ],
          "defaultTtl": "[variables('defaultTtlValueToEnableTtl')]"
        }
      }
    },

Второй - использовать ARM для развертывания настроек контейнера следующим образом:

{
      "apiVersion": "[variables('cosmosDbApiVersion')]",
      "type": "Microsoft.DocumentDB/databaseAccounts/apis/databases/containers/settings",
      "name": "[/* name */",
      "dependsOn": [ " /* container name */" ],
      "properties": {
        "resource": {
          "throughput": "/* some throughput */",
          "indexes": [
            {
              "indexingMode": "consistent",
              "automatic": true,
              "includedPaths": [
                {
                  "path": "/*",
                  "indexes": [
                    {
                      "kind": "Range",
                      "dataType": "Number",
                      "precision": -1
                    },
                    {
                      "kind": "Hash",
                      "dataType": "String",
                      "precision": 3
                    }
                  ]
                }
              ]
            }
          ]
        }
      }
    },

Оба метода не дают сбоя при развертывании, но политика индексирования не меняется.

Буду признателен за помощь.

Ответы [ 2 ]

0 голосов
/ 16 февраля 2020

Range и ha sh типы индексов теперь игнорируются поставщиком ресурсов Cosmos для новых контейнеров или контейнеров, которые были созданы в течение прошлого года или около того. ARM не проверяет политику индексации, поэтому шаблон будет успешно развернут.

Индекс Ha sh объявлен устаревшим для этих более новых контейнеров, поскольку производительность индекса диапазона в новом индексаторе превосходит показатели ha * 1013. * индекс предоставлен, поэтому больше не нужен.

Чтобы создать / изменить политику индекса, обратитесь к этой статье ниже. Существует множество примеров политик индексов, которые реализуют все, от очень простых до более сложных политик, которые включают составные индексы, пространственные индексы и уникальные ключи.

https://docs.microsoft.com/en-us/azure/cosmos-db/manage-sql-with-resource-manager#create -ресурс

0 голосов
/ 14 февраля 2020

это пример из шаблона (выглядит немного иначе, чем вы делаете):

"resource": {
  "id": "string",
  "indexingPolicy": {
    "automatic": "boolean",
    "indexingMode": "string",
    "includedPaths": [
      {
        "path": "string",
        "indexes": [
          {
            "dataType": "string",
            "precision": "integer",
            "kind": "string"
          }
        ]
      }
    ],
    "excludedPaths": [
      {
        "path": "string"
      }
    ],
    "spatialIndexes": [
      {
        "path": "string",
        "types": [
          "string"
        ]
      }
    ]
  },
  xxx
}

https://docs.microsoft.com/en-us/azure/templates/microsoft.documentdb/2019-08-01/databaseaccounts/sqldatabases/containers

...