是否可以使用cosmos db中的Table API通过代码或arm模板在数据库级别提供吞吐量?

时间:2019-06-26 11:56:42

标签: azure azure-cosmosdb

我正在尝试在Azure DevOps中设置发布管道,以使用Azure资源管理器模板部署Azure环境。我要创建的资源之一是使用Azure Table Api的Cosmos数据库实例,我想为整个数据库而不是pr设置“帐户级吞吐量”。表。我可以通过ARM模板使用正确的api创建Cosmos数据库实例,但是无法通过模板或使用Microsoft.Azure.Cosmos.Table api将“帐户级别的吞吐量”设置为“开”

我能够配置它的唯一方法是登录到Azure门户并手动进行。是否可以通过ARM模板或使用Powershell或Microsoft.Azure.Cosmos.Table api来自动执行此操作?

这是我目前使用的模板

{
      "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 
   }
);

4 个答案:

答案 0 :(得分:0)

尝试以下手臂模板:

{
    "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

ps。不确定x-ms-offer-throughput,可能只是throughput

答案 1 :(得分:0)

请参考下面的ARM模板为Cosmos表提供吞吐量,并在以后更新该吞吐量。

此手臂模板使用初始吞吐量集创建一个Cosmos表。 https://azure.microsoft.com/en-us/resources/templates/101-cosmosdb-table/

此模板更新现有表的吞吐量。 https://azure.microsoft.com/en-us/resources/templates/101-cosmosdb-table-ru-update/

我们目前正在努力允许客户重新部署用于配置帐户和表格资源的模板,以更新吞吐量。它应该在十月或十一月初提供。

谢谢。

答案 2 :(得分:0)

我在Twitter上询问了Cosmos DB团队,并得到了以下答案:

“到目前为止,这仅可通过门户网站获得。请随时将其作为建议添加到我们的用户语音中,以便我们可以在下一个计划周期https://feedback.azure.com/forums/263030-azure-cosmos-db?category_id=321997中进行查看”

https://twitter.com/AzureCosmosDB/status/1175071433229312001

希望他们会在以后使之成为可能。

我已经为Cosmos DB团队提出了一项建议,您可以投票给它:https://feedback.azure.com/forums/263030-azure-cosmos-db/suggestions/38682238-set-account-level-throughput-on-cosmos-db-table-ap

答案 3 :(得分:0)

现在有可能: 参见https://github.com/Azure/azure-quickstart-templates/blob/master/101-cosmosdb-sql/azuredeploy.json

    {
        "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases",
        "name": "[concat(variables('accountName'), '/', parameters('databaseName'))]",
        "apiVersion": "2019-08-01",
        "dependsOn": [ "[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('accountName'))]" ],
        "properties":{
            "resource":{
                "id": "[parameters('databaseName')]"
            },
            "options": { "throughput": "[parameters('sharedThroughput')]" }
        }
    },