Aprovisionar a taxa de transferência para contêineres e bancos de dadosProvision throughput on containers and databases

Um banco de dados do Azure Cosmos é uma unidade de gerenciamento para um conjunto de contêineres.An Azure Cosmos database is a unit of management for a set of containers. Um banco de dados é composto por um conjunto de contêineres independentes de esquema.A database consists of a set of schema-agnostic containers. Um contêiner do Azure Cosmos é a unidade de escalabilidade para taxa de transferência e armazenamento.An Azure Cosmos container is the unit of scalability for both throughput and storage. Um contêiner é particionado horizontalmente em um conjunto de máquinas em uma região do Azure e é distribuído em todas as regiões do Azure associadas à sua conta do Azure Cosmos.A container is horizontally partitioned across a set of machines within an Azure region and is distributed across all Azure regions associated with your Azure Cosmos account.

Com o Azure Cosmos DB, você pode provisionar a taxa de transferência em dois granularidades:With Azure Cosmos DB, you can provision throughput at two granularities:

  • Contêineres do Azure CosmosAzure Cosmos containers
  • Bancos de dados do Azure CosmosAzure Cosmos databases

Definir taxa de transferência em um contêinerSet throughput on a container

A taxa de transferência provisionada em um contêiner do Azure Cosmos é exclusivamente reservada para o contêiner.The throughput provisioned on an Azure Cosmos container is exclusively reserved for that container. O contêiner recebe a taxa de transferência provisionada o tempo todo.The container receives the provisioned throughput all the time. A taxa de transferência provisionada em um contêiner é respaldada financeiramente por SLAs.The provisioned throughput on a container is financially backed by SLAs. Para saber como configurar a taxa de transferência em um contêiner, consulte provisionar a produtividade em um contêiner do Azure Cosmos.To learn how to configure throughput on a container, see Provision throughput on an Azure Cosmos container.

Taxa de transferência provisionada em um contêiner de configuração é a opção usada com mais frequência.Setting provisioned throughput on a container is the most frequently used option. Você pode dimensionar elasticamente a taxa de transferência para um contêiner por meio do provisionamento qualquer quantidade de taxa de transferência usando unidades de solicitação (RUs).You can elastically scale throughput for a container by provisioning any amount of throughput by using Request Units (RUs).

A taxa de transferência provisionada em um contêiner do Azure Cosmos é distribuída uniformemente em todas as partições lógicas do contêiner.Throughput provisioned on an Azure Cosmos container is uniformly distributed across all the logical partitions of the container. Seletivamente não é possível especificar a taxa de transferência para partições lógicas.You cannot selectively specify the throughput for logical partitions. Como uma ou mais partições lógicas de um contêiner são hospedadas por uma partição física, as partições físicas pertencem exclusivamente ao contêiner e dão suporte à taxa de transferência provisionada no contêiner.Because one or more logical partitions of a container are hosted by a physical partition, the physical partitions belong exclusively to the container and support the throughput provisioned on the container.

Se a carga de trabalho em execução em uma partição lógica consome mais do que a taxa de transferência que foi alocada para essa partição lógica, as operações de ter sua taxa limitada.If the workload running on a logical partition consumes more than the throughput that was allocated to that logical partition, your operations get rate-limited. Quando ocorre a limitação de taxa, você pode aumentar a taxa de transferência provisionada para o contêiner inteiro ou repita as operações.When rate-limiting occurs, you can either increase the provisioned throughput for the entire container or retry the operations. Para saber mais sobre particionamento, confira Partições lógicas.For more information on partitioning, see Logical partitions.

É recomendável configurar a taxa de transferência na granularidade do contêiner quando você quiser desempenho garantido para o contêiner.We recommend that you configure throughput at the container granularity when you want guaranteed performance for the container.

A imagem a seguir mostra como uma partição física hospeda uma ou mais partições lógicas de um contêiner:The following image shows how a physical partition hosts one or more logical partitions of a container:

Partição física

Definir taxa de transferência em um banco de dadosSet throughput on a database

Ao provisionar a taxa de transferência em um banco de dados do Azure Cosmos, a taxa de transferência será compartilhada entre todos os contêineres no banco de dados.When you provision throughput on an Azure Cosmos database, the throughput is shared across all the containers in the database. Uma exceção é se você especificou uma taxa de transferência provisionada em contêineres específicos no banco de dados.An exception is if you specified a provisioned throughput on specific containers in the database. A taxa de transferência provisionada de nível de banco de dados entre seus contêineres de compartilhamento é análogo à hospedagem de um banco de dados em um cluster de computadores.Sharing the database-level provisioned throughput among its containers is analogous to hosting a database on a cluster of machines. Como todos os contêineres de um banco de dados compartilham os recursos disponíveis em um computador, evidentemente você não obtém o desempenho previsível em qualquer contêiner específico.Because all containers within a database share the resources available on a machine, you naturally do not get predictable performance on any specific container. Para saber como configurar a taxa de transferência provisionada em um banco de dados, consulte taxa de transferência provisionada em um banco de dados Cosmos do Azure configurar.To learn how to configure provisioned throughput on a database, see Configure provisioned throughput on an Azure Cosmos database.

Taxa de transferência de configuração em um banco de dados Cosmos do Azure garante que você receba a taxa de transferência provisionada para esse banco de dados o tempo todo.Setting throughput on an Azure Cosmos database guarantees that you receive the provisioned throughput for that database all the time. Como todos os contêineres do banco de dados compartilham a taxa de transferência provisionada, o Azure Cosmos DB não fornece nenhuma garantia de taxa de transferência previsível para um contêiner específico nesse banco de dados.Because all containers within the database share the provisioned throughput, Azure Cosmos DB doesn't provide any predictable throughput guarantees for a particular container in that database. A parte da taxa de transferência que um contêiner específico pode receber depende do seguinte:The portion of the throughput that a specific container can receive is dependent on:

  • Número de contêineres.The number of containers.
  • Escolha de chaves de partição para vários contêineres.The choice of partition keys for various containers.
  • Da distribuição da carga de trabalho entre várias partições lógicas dos contêineres.The distribution of the workload across various logical partitions of the containers.

É recomendável que você configure a taxa de transferência em um banco de dados quando quiser compartilhar a taxa de transferência em vários contêineres, mas não quer dedicar a taxa de transferência a nenhum contêiner específico.We recommend that you configure throughput on a database when you want to share the throughput across multiple containers, but don't want to dedicate the throughput to any particular container.

Os exemplos a seguir demonstram onde é preferível provisionar a taxa de transferência no nível do banco de dados:The following examples demonstrate where it's preferred to provision throughput at the database level:

  • Compartilhar a taxa de transferência provisionada de um banco de dados em um conjunto de contêineres é útil para um aplicativo multilocatário.Sharing a database’s provisioned throughput across a set of containers is useful for a multitenant application. Cada usuário pode ser representado por um contêiner do Azure Cosmos distinto.Each user can be represented by a distinct Azure Cosmos container.

  • Compartilhar a taxa de transferência provisionada de um banco de dados em um conjunto de contêineres é útil quando você migra um banco de dados NoSQL, como MongoDB ou Cassandra, hospedado em um cluster de VMs ou de servidores físicos locais para o Azure Cosmos DB.Sharing a database’s provisioned throughput across a set of containers is useful when you migrate a NoSQL database, such as MongoDB or Cassandra, hosted on a cluster of VMs or from on-premises physical servers to Azure Cosmos DB. Pense na taxa de transferência provisionada configurada no banco de dados do Azure Cosmos como um equivalente lógico, porém mais econômico e elástico, ao da capacidade de computação do cluster do MongoDB ou Cassandra.Think of the provisioned throughput configured on your Azure Cosmos database as a logical equivalent, but more cost-effective and elastic, to that of the compute capacity of your MongoDB or Cassandra cluster.

Todos os contêineres de criado dentro de um banco de dados com produtividade provisionada devem ser criados com uma chave de partição.All containers created inside a database with provisioned throughput must be created with a partition key. A qualquer momento, a taxa de transferência alocada a um contêiner dentro de um banco de dados será distribuída entre todas as partições lógicas desse contêiner.At any given point of time, the throughput allocated to a container within a database is distributed across all the logical partitions of that container. Quando você tem os contêineres que compartilham a taxa de transferência provisionada, configurada em um banco de dados, é possível aplicar seletivamente a taxa de transferência para um contêiner específico ou uma partição lógica.When you have containers that share provisioned throughput configured on a database, you can't selectively apply the throughput to a specific container or a logical partition.

Se a carga de trabalho em uma partição lógica consumir mais do que a taxa de transferência alocada para uma partição lógica específica, suas operações serão limitadas por taxa.If the workload on a logical partition consumes more than the throughput that's allocated to a specific logical partition, your operations are rate-limited. Quando ocorre a limitação de taxa, você pode aumentar a taxa de transferência para o banco de dados inteiro ou repita as operações.When rate-limiting occurs, you can either increase the throughput for the entire database or retry the operations. Para saber mais sobre particionamento, confira Partições lógicas.For more information on partitioning, see Logical partitions.

Várias partições lógicas que pertencem a diferentes contêineres que compartilham a taxa de transferência provisionada para um banco de dados podem ser hospedadas em uma única partição física.Multiple logical partitions that belong to different containers that share the throughput provisioned to a database can be hosted on a single physical partition. Embora sempre tem como escopo uma única partição lógica de um contêiner em uma partição física, "L" partições lógicas entre "C" contêineres que compartilham a taxa de transferência provisionada de um banco de dados podem ser mapeado e hospedado no "R" partições físicas.While a single logical partition of a container is always scoped within a physical partition, "L" logical partitions across "C" containers that share the provisioned throughput of a database can be mapped and hosted on "R" physical partitions.

A imagem a seguir mostra como uma partição física pode hospedar uma ou mais partições lógicas que pertencem a contêineres diferentes dentro de um banco de dados:The following image shows how a physical partition can host one or more logical partitions that belong to different containers within a database:

Partição física

Definir taxa de transferência em um banco de dados e um contêinerSet throughput on a database and a container

É possível combinar os dois modelos.You can combine the two models. É permitido provisionar a taxa de transferência tanto no banco de dados como no contêiner.Provisioning throughput on both the database and the container is allowed. O exemplo a seguir mostra como provisionar a taxa de transferência em um banco de dados do Azure Cosmos e em um contêiner:The following example shows how to provision throughput on an Azure Cosmos database and a container:

  • Você pode criar um banco de dados Cosmos do Azure denominado Z com produtividade provisionada da "K" RUs.You can create an Azure Cosmos database named Z with provisioned throughput of "K" RUs.

  • Em seguida, cria cinco contêineres nomeados um, B, C, 1!d, e E no banco de dados.Next, create five containers named A, B, C, D, and E within the database. Ao criar o contêiner B, verifique se você habilitou taxa de transferência dedicada para esse contêiner provisionar opção e configurar explicitamente "P" RUs da produtividade provisionada neste contêiner.When creating container B, make sure to enable Provision dedicated throughput for this container option and explicitly configure "P" RUs of provisioned throughput on this container. Observe que você pode configurar a taxa de transferência compartilhada e dedicada somente ao criar o banco de dados e o contêiner.Note that you can configure shared and dedicated throughput only when creating the database and container.

    Definir a taxa de transferência no nível do contêiner

  • O "K" RUs taxa de transferência é compartilhada entre os contêineres de quatro um, C, 1!d, e E. A quantidade exata produtividade disponível para um, C, 1!d, ou E varia de acordo.The "K" RUs throughput is shared across the four containers A, C, D, and E. The exact amount of throughput available to A, C, D, or E varies. Não há SLAs para taxa de transferência de cada contêiner individual.There are no SLAs for each individual container’s throughput.

  • O contêiner nomeado B é garantia de obter o "P" taxa de transferência de RUs o tempo todo.The container named B is guaranteed to get the "P" RUs throughput all the time. É respaldado por SLAs.It's backed by SLAs.

Taxa de transferência de atualização em um banco de dados ou um contêinerUpdate throughput on a database or a container

Depois de criar um contêiner do Cosmos do Azure ou um banco de dados, você pode atualizar a taxa de transferência provisionada.After you create an Azure Cosmos container or a database, you can update the provisioned throughput. Não há nenhum limite na taxa de transferência provisionada máxima que você pode configurar o banco de dados ou o contêiner.There is no limit on the maximum provisioned throughput that you can configure on the database or the container. Taxa de transferência provisionada mínima depende dos seguintes fatores:The minimum provisioned throughput depends on the following factors:

  • O tamanho máximo dos dados armazenados no contêinerThe maximum data size that you ever store in the container
  • A taxa de transferência máxima que provisionar no contêinerThe maximum throughput that you ever provision on the container
  • O número máximo de contêineres do Cosmos do Azure que você nunca cria um banco de dados com taxa de transferência compartilhada.The maximum number of Azure Cosmos containers that you ever create in a database with shared throughput.

Você pode recuperar a taxa de transferência mínima de um contêiner ou um banco de dados programaticamente usando os SDKs ou exibir o valor no portal do Azure.You can retrieve the minimum throughput of a container or a database programmatically by using the SDKs or view the value in the Azure portal. Ao usar o SDK do .NET, o DocumentClient.ReplaceOfferAsync método permite que você dimensione o valor de taxa de transferência provisionada.When using the .NET SDK, the DocumentClient.ReplaceOfferAsync method allows you to scale the provisioned throughput value. Ao usar o SDK do Java, o RequestOptions.setOfferThroughput método permite que você dimensione o valor de taxa de transferência provisionada.When using the Java SDK, the RequestOptions.setOfferThroughput method allows you to scale the provisioned throughput value.

Ao usar o SDK do .NET, o DocumentClient.ReadOfferAsync método permite que você recupere a taxa de transferência mínima de um contêiner ou um banco de dados.When using the .NET SDK, the DocumentClient.ReadOfferAsync method allows you to retrieve the minimum throughput of a container or a database.

Você pode dimensionar a taxa de transferência provisionada de um contêiner ou um banco de dados a qualquer momento.You can scale the provisioned throughput of a container or a database at any time. Quando uma operação de escala é executada para aumentar a taxa de transferência, pode levar mais tempo devido às tarefas do sistema para provisionar os recursos necessários.When a scale operation is performed to increase the throughput, it can take longer time due to the system tasks to provision the required resources. Você pode verificar o status da operação de escala no portal do Azure ou programaticamente usando os SDKs.You can check the status of the scale operation in Azure portal or programmatically using the SDKs. Ao usar o SDK do .net, você pode obter o status da operação de escala usando o DocumentClient.ReadOfferAsync método.When using the .Net SDK, you can get the status of the scale operation by using the DocumentClient.ReadOfferAsync method.

Comparação de modelosComparison of models

ParâmetroParameter Taxa de transferência provisionada em um banco de dadosThroughput provisioned on a database Taxa de transferência provisionada em um contêinerThroughput provisioned on a container
Mínimo de RUsMinimum RUs 400 (após os primeiros quatro contêineres, cada contêiner adicional irá exigir um mínimo de 100 RUs por segundo.)400 (After the first four containers, each additional container requires a minimum of 100 RUs per second.) 400400
Mínimo de RUs por contêinerMinimum RUs per container 100100 400400
Máximo de RUsMaximum RUs Ilimitado, no banco de dados.Unlimited, on the database. Ilimitado, no contêiner.Unlimited, on the container.
RUs atribuídas ou disponíveis para um contêiner específicoRUs assigned or available to a specific container Sem garantias.No guarantees. RUs atribuídas a um determinado contêiner dependem das propriedades.RUs assigned to a given container depend on the properties. As propriedades podem ser a escolha de chaves de partição de contêineres que compartilham a taxa de transferência, a distribuição da carga de trabalho e o número de contêineres.Properties can be the choice of partition keys of containers that share the throughput, the distribution of the workload, and the number of containers. Todas as RUs configuradas no contêiner são reservadas exclusivamente ao contêiner.All the RUs configured on the container are exclusively reserved for the container.
Armazenamento máximo para um contêinerMaximum storage for a container Ilimitado.Unlimited. Ilimitado.Unlimited.
Taxa de transferência máxima por partição lógica de um contêinerMaximum throughput per logical partition of a container 10 mil RUs10K RUs 10 mil RUs10K RUs
Taxa de transferência máxima (dados + índice) por partição lógica de um contêinerMaximum storage (data + index) per logical partition of a container 10 GB10 GB 10 GB10 GB

Próximas etapasNext steps