Можно ли обеспечить пропускную способность на уровне базы данных через код или шаблон руки, используя Table API в cosmos db? - PullRequest
0 голосов
/ 26 июня 2019

Я пытаюсь настроить конвейер выпуска в DevOps Azure, который развертывает среду Azure с использованием шаблонов диспетчера ресурсов Azure. Один из ресурсов, которые я хочу создать, - это экземпляр базы данных Cosmos с использованием API таблицы Azure, и я хочу обеспечить «пропускную способность на уровне учетной записи» для всей базы данных, а не pr. Таблица. Я могу создать экземпляр Cosmos DB с правильным API через шаблон ARM, но не могу установить для параметра «Пропускная способность на уровне аккаунта» значение «Вкл.» Через шаблон или с помощью API-интерфейса Microsoft.Azure.Cosmos.Table. .

Единственный способ настроить это - войти на портал Azure и сделать это вручную. Можно ли автоматизировать это с помощью шаблона ARM или с помощью Powershell или API-интерфейса Microsoft.Azure.Cosmos.Table?

Это шаблон, который я сейчас использую

{
      "type": "Microsoft.DocumentDB/databaseAccounts",
      "name": "[variables('cosmosStreamDBName')]",
      "apiVersion": "2016-03-31",
      "location": "[parameters('location')]",
      "tags": {
        "defaultExperience": "Azure Table"
      },
      "kind": "GlobalDocumentDB",
      "properties": {
        "capabilities": [ { "name": "EnableTable" } ],
        "consistencyPolicy": {
          "defaultConsistencyLevel": "BoundedStaleness",
          "maxIntervalInSeconds": 86400,
          "maxStalenessPrefix": 1000000
        },
        "databaseAccountOfferType": "Standard",
        "enableAutomaticFailover": false,
        "enableMultipleWriteLocations": false,
        "isVirtualNetworkFilterEnabled": false,
        "virtualNetworkRules": [],
        "locations": [
          {
            "locationName": "[parameters('location')]",
            "failoverPriority": 0
          }
        ]
      }
    }

Это пример того, как я предоставляю пропускную способность на уровне базы данных при использовании SQL API:

var client = new DocumentClient(
   new Uri(EndpointUri), 
   PrimaryKey, 
   serializerSettings: Settings
);

var db =  await client.CreateDatabaseIfNotExistsAsync(
   new Database { Id = DatabaseName }, 
   new RequestOptions() { 
     PartitionKey = new PartitionKey(key), 
     OfferThroughput = 400 
   }
);

1 Ответ

0 голосов
/ 26 июня 2019

попробуйте следующий шаблон руки:

{
    "type": "Microsoft.DocumentDB/databaseAccounts/apis/tables",
    "name": "[concat(account-name, '/table/', database-name)]",
    "apiVersion": "2016-03-31",
    "dependsOn": [ "[resourceId('Microsoft.DocumentDB/databaseAccounts/', account-name)]" ],
    "properties":{
        "resource":{
            "id": "table-name"
        },
        "options": {
            "x-ms-offer-throughput": 1000
        }
    }
}

Ссылка:
https://docs.microsoft.com/en-us/rest/api/cosmos-db/create-a-collection
https://docs.microsoft.com/en-us/rest/api/cosmos-db-resource-provider/databaseaccounts/createupdatetable

пс.не уверен насчет x-ms-offer-throughput, это может быть просто throughput

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...