Criação de partições e dimensionamento horizontal no Azure Cosmos DBPartitioning and horizontal scaling in Azure Cosmos DB

Este artigo explica a relação entre divisórias lógicas e físicas.This article explains the relationship between logical and physical partitions. Também discute as melhores práticas para a partição e dá uma visão aprofundada de como a escala horizontal funciona em Azure Cosmos DB.It also discusses best practices for partitioning and gives an in-depth view at how horizontal scaling works in Azure Cosmos DB. Não é necessário compreender estes detalhes internos para selecionar a sua chave de partição, mas cobrimo-los para que tenha clareza sobre como funciona a Azure Cosmos DB.It's not necessary to understand these internal details to select your partition key but we have covered them so you have clarity for how Azure Cosmos DB works.

Partições lógicasLogical partitions

Uma partição lógica consiste num conjunto de itens que têm a mesma chave de partição.A logical partition consists of a set of items that have the same partition key. Por exemplo, num recipiente que contém dados sobre nutrição alimentar, todos os itens contêm uma foodGroup propriedade.For example, in a container that contains data about food nutrition, all items contain a foodGroup property. Pode utilizar foodGroup como chave de partição para o recipiente.You can use foodGroup as the partition key for the container. Grupos de itens que têm valores foodGroup específicos para, por Beef Products Baked Products exemplo, e Sausages and Luncheon Meats formam divisórias lógicas distintas.Groups of items that have specific values for foodGroup, such as Beef Products,Baked Products, and Sausages and Luncheon Meats, form distinct logical partitions. Não tens de te preocupar em eliminar uma partição lógica quando os dados subjacentes são eliminados.You don't have to worry about deleting a logical partition when the underlying data is deleted.

Uma divisória lógica também define o âmbito das transações de base de dados.A logical partition also defines the scope of database transactions. Pode atualizar itens dentro de uma divisória lógica utilizando uma transação com isolamento instantâneo.You can update items within a logical partition by using a transaction with snapshot isolation. Quando novos itens são adicionados a um recipiente, novas divisórias lógicas são criadas de forma transparente pelo sistema.When new items are added to a container, new logical partitions are transparently created by the system.

Não há limite para o número de divisórias lógicas no seu recipiente.There is no limit to the number of logical partitions in your container. Cada divisória lógica pode armazenar até 20GB de dados.Each logical partition can store up to 20GB of data. Boas escolhas chave de partição têm uma ampla gama de valores possíveis.Good partition key choices have a wide range of possible values. Por exemplo, num recipiente onde todos os itens contêm uma foodGroup propriedade, os dados dentro da Beef Products partição lógica podem crescer até 20GB.For example, in a container where all items contain a foodGroupproperty, the data within the Beef Products logical partition can grow up to 20GB. Selecionar uma chave de partição com uma ampla gama de valores possíveis garante que o recipiente é capaz de escalar.Selecting a partition key with a wide range of possible values ensures that the container is able to scale.

Divisórias físicasPhysical partitions

Um recipiente Azure Cosmos é dimensionado distribuindo dados e produção através de divisórias físicas.An Azure Cosmos container is scaled by distributing data and throughput across physical partitions. Internamente, uma ou mais divisórias lógicas são mapeadas para uma única partição física.Internally, one or more logical partitions are mapped to a single physical partition. A maioria dos pequenos contentores do Cosmos têm muitas divisórias lógicas, mas só requerem uma única partição física.Most small Cosmos containers have many logical partitions but only require a single physical partition. Ao contrário das divisórias lógicas, as divisórias físicas são uma implementação interna do sistema e são inteiramente geridas pela Azure Cosmos DB.Unlike logical partitions, physical partitions are an internal implementation of the system and they are entirely managed by Azure Cosmos DB.

O número de divisórias físicas no seu recipiente Cosmos depende do seguinte:The number of physical partitions in your Cosmos container depends on the following:

  • Montante de produção provisida (cada partição física individual pode fornecer um rendimento de até 10.000 unidades de pedido por segundo)Amount of provisioned throughput (each individual physical partition can provide a throughput of up to 10,000 request units per second)
  • Total de armazenamento de dados (cada partição física individual pode armazenar até 50GB)Total data storage (each individual physical partition can store up to 50GB)

Não há limite para o número total de divisórias físicas no seu recipiente.There is no limit to the total number of physical partitions in your container. À medida que o seu rendimento ou tamanho de dados aumenta, a Azure Cosmos DB criará automaticamente novas divisórias físicas dividindo as existentes.As your provisioned throughput or data size grows, Azure Cosmos DB will automatically create new physical partitions by splitting existing ones. As divisórias físicas não afetam a disponibilidade da sua aplicação.Physical partition splits do not impact your application's availability. Após a divisão física, todos os dados dentro de uma única partição lógica ainda serão armazenados na mesma partição física.After the physical partition split, all data within a single logical partition will still be stored on the same physical partition. Uma divisão de partição física simplesmente cria um novo mapeamento de divisórias lógicas para divisórias físicas.A physical partition split simply creates a new mapping of logical partitions to physical partitions.

A produção prevista para um recipiente é dividida uniformemente entre divisórias físicas.Throughput provisioned for a container is divided evenly among physical partitions. Um design de chave de partição que não distribua os pedidos de produção uniformemente pode criar divisórias "quentes".A partition key design that doesn't distribute the throughput requests evenly might create "hot" partitions. As divisórias quentes podem resultar na limitação das taxas e na utilização ineficiente da produção prevista e nos custos mais elevados.Hot partitions might result in rate-limiting and in inefficient use of the provisioned throughput, and higher costs.

Pode ver as divisórias físicas do seu recipiente na secção de armazenamento da lâmina métrica do portal Azure:You can see your container's physical partitions in the Storage section of the Metrics blade of the Azure portal:

Número de visualização de divisórias físicas

Neste recipiente de exemplo onde escolhemos /foodGroup como a nossa chave de partição, cada um dos três retângulos representa uma divisória física.In this example container where we have chosen /foodGroup as our partition key, each of the three rectangles represents a physical partition. Na imagem, o alcance da chave de partição é o mesmo que uma partição física.In the image, partition key range is the same as a physical partition. A partição física selecionada contém três divisórias lógicas: Beef Products Vegetable and Vegetable Products , e Soups, Sauces, and Gravies .The selected physical partition contains three logical partitions: Beef Products, Vegetable and Vegetable Products, and Soups, Sauces, and Gravies.

Se providenciarmos uma produção de 18.000 unidades de pedido por segundo (RU/s), então cada uma das três divisórias físicas pode utilizar 1/3 do total de produção a provisionada.If we provision a throughput of 18,000 request units per second (RU/s), then each of the three physical partition can utilize 1/3 of the total provisioned throughput. Dentro da partição física selecionada, as teclas de partição Beef Products Vegetable and Vegetable Products lógica, e Soups, Sauces, and Gravies podem, coletivamente, utilizar os 6.000 RU/s provisados da partição física.Within the selected physical partition, the logical partition keys Beef Products, Vegetable and Vegetable Products, and Soups, Sauces, and Gravies can, collectively, utilize the physical partition's 6,000 provisioned RU/s. Como a produção a provisionada está igualmente dividida nas divisórias físicas do seu contentor, é importante escolher uma chave de partição que distribua uniformemente o consumo de produção, escolhendo a chave de partição lógica certa.Because provisioned throughput is evenly divided across your container's physical partitions, it's important to choose a partition key that evenly distributes throughput consumption by choosing the right logical partition key. Se escolher uma chave de partição que distribui uniformemente o consumo de produção através de divisórias lógicas, garantirá que o consumo de produção através de divisórias físicas seja equilibrado.If you choose a partition key that evenly distributes throughput consumption across logical partitions, you will ensure that throughput consumption across physical partitions is balanced.

Conjuntos de réplicasReplica sets

Cada partição física consiste num conjunto de réplicas, também referidas como um conjunto de réplicas.Each physical partition consists of a set of replicas, also referred to as a replica set. Cada conjunto de réplicas acolhe uma instância do motor de base de dados Azure Cosmos.Each replica set hosts an instance of the Azure Cosmos database engine. Um conjunto de réplica torna os dados armazenados dentro da partição física durável, altamente disponíveis e consistentes.A replica set makes the data stored within the physical partition durable, highly available, and consistent. Cada réplica que compõe a partição física herda a quota de armazenamento da partição.Each replica that makes up the physical partition inherits the partition's storage quota. Todas as réplicas de uma partição física suportam coletivamente a produção que é atribuída à partição física.All replicas of a physical partition collectively support the throughput that's allocated to the physical partition. A Azure Cosmos DB gere automaticamente conjuntos de réplicas.Azure Cosmos DB automatically manages replica sets.

A maioria dos pequenos contentores do Cosmos só requerem uma única partição física, mas ainda terão pelo menos 4 réplicas.Most small Cosmos containers only require a single physical partition but will still have at least 4 replicas.

A imagem a seguir mostra como as divisórias lógicas são mapeadas para divisórias físicas que são distribuídas globalmente:The following image shows how logical partitions are mapped to physical partitions that are distributed globally:

Uma imagem que demonstra a partição de Azure Cosmos DB

Próximos passosNext steps