Perguntas frequentes sobre chaves de partição hierárquica no Azure Cosmos DB

APLICA-SE A: NoSQL MongoDB Cassandra Gremlin Tabela

As chaves de partição hierárquicas, ou subpartitoning, permitem configurar até uma hierarquia de três níveis para suas chaves de partição para otimizar ainda mais a distribuição de dados e permitir uma escala mais alta. Este artigo responde a perguntas frequentes sobre chaves de partição hierárquica do Azure Cosmos DB.

Posso adicionar chaves de partição hierárquica a contêineres existentes?

Não há suporte para a adição de chaves de partição hierárquicas a contêineres existentes. No entanto, você pode criar um novo contêiner com a chave de partição hierárquica desejada e executar um trabalho de cópia de contêiner para copiar dados do contêiner existente para o novo. Para obter mais informações sobre como fazer a cópia de dados, consulte trabalhos de cópia de contêiner.

Existe um limite de armazenamento para o tamanho de uma chave de partição lógica?

Sim. Assim como no Azure Cosmos DB hoje, o tamanho da partição lógica ainda é limitado a 20 GB. No entanto, com chaves de partição hierárquicas, a partição lógica é agora o caminho da chave de partição inteira. Por exemplo, se você particionou por TenantId -> UserId, um exemplo de partição lógica seria Contoso_Alice. Utilizar o subparticionamento significa que você pode ter 20 GB de dados onde o valor da chave de partição é Contoso_Alice. A quantidade de armazenamento permitida para dados em "Contoso" é efetivamente 20 GB * número de UserIds exclusivos para o locatário "Contoso".

Há alguma alteração nos limites de armazenamento e RU/s em partições físicas?

N.º Assim como no Azure Cosmos DB hoje, uma partição física pode armazenar 50 GB de armazenamento e servir até 10.000 RU/s. No entanto, com chaves de partição hierárquicas, se os dados de um determinado prefixo de chave de partição - por exemplo, TenantId - estiverem em várias partições físicas, o subparticionamento significa que o total de RU/s alcançável para um único TenantId pode exceder 10.000 RU/s.

O que acontece se eu consultar e especificar apenas uma chave de partição no "meio" do caminho?

Sua consulta é uma consulta entre partições. Por exemplo, se você particionar por TenantId -> UserId e fornecer apenas o UserId na consulta, essa consulta será exibida para todas as partições físicas.

Para ter uma consulta roteada de forma eficiente usando o exemplo TenantId -> UserId, há duas opções:

  • Forneça o TenantId. As consultas vão para todas as partições físicas que contêm os dados TenantId.
  • Forneça o TenantId e o UserId. As consultas vão para a única partição física que contém o TenantId e o UserId específico.

Tenho de criar uma nova propriedade nos meus documentos para utilizar esta funcionalidade?

N.º Especifique a hierarquia de caminhos de chave de partição que você deseja usar durante a criação do contêiner. Por exemplo, se você particionar por TenantId -> UserId, não precisará criar uma nova propriedade com esses valores concatenados. Certifique-se de que cada documento tenha uma propriedade TenantId e uma propriedade UserId. Para obter mais informações, consulte exemplos de código de subparticionamento.

Criei uma hierarquia de chaves que não tem muita cardinalidade. O que devo fazer?

Você pode estar em um cenário em que sua carga de trabalho está atingindo apenas algumas partições físicas de todas as partições. Este cenário pode significar que um ou mais níveis da sua chave de partição hierárquica tem baixa cardinalidade. Para solucionar problemas de cenário, sempre recomendamos recriar sua chave de partição hierárquica e você pode usar DTS para alterar sua chave e copiar os dados do contêiner para o novo contêiner. Se esta etapa não for possível, há duas soluções alternativas que sugerimos garantir a distribuição uniforme de seus dados

  • Abordagem 1:
  1. Você pode criar um contêiner com menos de 10.000 RUs para garantir que você tenha apenas uma partição física.
  2. Ingerir cerca de 5 GB de dados para garantir que não há divisões de partição.
  3. Aumente a escala para as RUs desejadas, continue ingerindo dados e o Azure Cosmos DB garante que suas partições físicas sejam divididas uniformemente.
  • Abordagem 2:
  1. Você pode aumentar sua oferta total para um número maior de RUs e ingerir todos os seus dados.
  2. Em seguida, execute a mesclagem de partições para garantir que as partições da sua carga de trabalho não estejam fragmentadas e tenham distribuição uniforme
  3. Quando a mesclagem estiver concluída, reduza novamente para o número desejado original de RUs.

Para ter mais controle sobre a taxa de transferência de cada partição, você também pode usar a redistribuição de taxa de transferência para garantir que as partições usadas pela carga de trabalho tenham RUs suficientes para suas solicitações futuras.

Próximos passos

  • Saiba mais sobre chaves de partição hierárquicas.