Editar

Compartilhar via


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

APLICA-SE AO: NoSQL MongoDB Cassandra Gremlin Table

O uso de chaves de partição hierárquicas, também chamado de subparticionamento, permite configurar uma hierarquia de até três níveis para suas chaves de partição para otimizar ainda mais a distribuição de dados e habilitar uma escala mais alta. Este artigo responde a perguntas frequentes sobre as chaves de partição hierárquicas do Azure Cosmos DB.

Posso adicionar chaves de partição hierárquicas 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 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 copiar dados, consulte trabalhos de cópia de contêiner.

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

Sim. Assim como no Azure Cosmos DB atualmente, o tamanho da partição lógica ainda está limitado a 20 GB. No entanto, com chaves de partição hierárquicas, a partição lógica agora é o caminho de chave de partição inteiro. Por exemplo, se você particionou por TenantId -> UserId, uma partição lógica de exemplo seria Contoso_Alice. Usar subparticionamento significa que você pode ter 20 GB de dados em que 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 exclusivas para o locatário "Contoso".

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

Não. Assim como no Azure Cosmos DB, uma partição física pode conter 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 prefixo de chave de partição específico, por exemplo, TenantId, estiverem em várias partições físicas, o subparticionamento significa que o total de RU/s alcançáveis para apenas uma 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 a UserId na consulta, essa consulta será distribuída para todas as partições físicas.

Para ter uma consulta roteada com eficiência usando o exemplo TenantId -> UserId, há duas opções:

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

Preciso criar uma propriedade em meus documentos para usar esse recurso?

Não. 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 propriedade com esses valores concatenados. Verifique se cada documento tem uma propriedade TenantId e uma propriedade UserId. Para obter mais informações, confira os 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. Esse cenário pode significar que um ou mais níveis da chave de partição hierárquica têm baixa cardinalidade. Para solucionar problemas de cenário, sempre recomendamos recriar sua chave de partição hierárquica e você pode usar o DTS para alterar a chave e copiar os dados do contêiner para o novo contêiner. Se essa etapa não for possível, há duas soluções alternativas que sugerimos para 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 haja divisões de partição.
  3. Escalar verticalmente até as RUs desejadas, continuar ingerindo dados e o Azure Cosmos DB garantir 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ção para garantir que as partições da carga de trabalho não sejam fragmentadas e tenha distribuição uniforme
  3. Depois que a mesclagem for concluída, reduza verticalmente para o número original desejado de RUs.

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

Próximas etapas