Menu Docs
Página inicial do Docs
/
MongoDB Atlas
/ /

Shard uma collection global

Nesta página

  • Compartilhe uma coleção global de gravações globais na interface do usuário do Atlas
  • Acesso necessário
  • Considerações
  • Procedimento
  • Referência de fragmentação de cluster global
  • Fragmentando coleções para gravações globais
  • Tratamento de erros
  • Fragmentando coleções sem gravações globais
  • Coleções não fragmentadas em clusters globais de gravação

Importante

Recurso Indisponível em Instâncias sem Servidor

Neste momento, as instâncias sem servidor não permitem essa funcionalidade. Para saber mais, consulte Limitações de instância sem servidor.

Observação

  • As gravações globais só são suportadas em clusters globais, que exigem uma camada de cluster M30+.

  • Você pode usar a UI do Atlas para fragmentar uma collection global somente para clusters globais com o Atlas-Managed Sharding ativado.

  • Este documento pressupõe conhecimento prévio da semântica de fragmentação. Leia a documentação sobre fragmentação antes de continuar com este tutorial.

Em clusters fragmentados, você pode criar zonas de dados fragmentados com base na chave de shard. Suas zonas podem segmentar dados com base na área geográfica. Para saber mais sobre fragmentação com base na área geográfica, consulte Segmentação de dados porlocalização.

A UI do Atlas suporta o sharding de coleções de Escrita Global apenas para clusters globais que usam fragmentação gerenciada pelo Atlas. Para fragmentar coleções de gravação não global ou coleções de gravação global que usam fragmentação autogerenciada, você deve usar mongosh ou o código do aplicativo. Para saber mais, consulte Implementar um cluster fragmentado.

Você deve ter a função Project Owner ou Organization Owner no projeto Atlas do cluster para fragmentar uma coleção para gravações globais na UI do Atlas.

Antes de iniciar este procedimento, revise:

Você pode configurar o Arquivo Online para mover os dados raramente acessados do seu agrupamento do Atlas para uma instância do banco de dados federado somente para leitura gerenciado pelo MongoDB em vez de compartilhar sua coleção ou atualizar sua camada de agrupamento. Para saber mais sobre o arquivo online, consulte Gerenciar arquivos online.

Depois de selecionar uma chave de shard por meio da interface do usuário do Atlas, o Atlas tenta fragmentar a coleção alvo. Durante esse período, certifique-se de que nenhum usuário fragmente manualmente a coleção. Se o Atlas detectar que a coleção de destino foi fragmentada com uma chave diferente da selecionada por meio da interface do usuário do Atlas, o Atlas interromperá o procedimento e exibirá um aviso para essa coleção na interface do usuário do Atlas. Você pode clicar em Unmanage Collection para limpar o aviso. Essa ação remove a coleção do gerenciamento do Atlas enquanto deixa a coleção subjacente e a chave de shard escolhida manualmente intactas.

A partir do MongoDB 4.2, você pode atualizar o valor da chave de shard de um documento, a menos que o campo chave de shard seja o campo _id imutável. Para saber mais, consulte Alterar o valor da chave de fragmento de um documento.

No MongoDB 4.0 e versões anteriores, não é possível atualizar o valor de um campo de chave de shard em um documento existente em uma coleção habilitada para Global Writes.

Importante

Valores-chave de shards e clusters globais

Em todas as versões do MongoDB, você não pode refragmentar uma coleção em um cluster global. Para saber mais, consulte Sharding Collections for Global Writes.

Para fragmentar uma coleção em um cluster global:

1
2
3
4
5
6

Você pode escolher uma das seguintes opções:

Default
O Atlas usa o documento que especifica o campo ou campos como a chave de shard.
Use unique index as the shard key
O Atlas usa o índice subjacente para impor uma restrição exclusiva à chave de shard da Coleção Global.
Use hashed index as the shard key

O Atlas distribui os dados fragmentados uniformemente por meio do hash do segundo campo da chave fragmentada. Essa opção só está disponível para clusters do Atlas executando o MongoDB v5.0 ou posterior.

Opcionalmente, você pode selecionar Pre-split data for even distribution para especificar se deseja executar a criação e a distribuição inicial de blocos para uma coleção vazia ou inexistente com base nas zonas e intervalos de zonas definidos para a coleção.

Se você selecionar a opção Pre-split data for even distribution , também poderá especificar o número mínimo de blocos a serem criados inicialmente ao fragmentar uma coleção vazia com uma chave fragmentada com hash. A distribuição inicial de shards permite que o Atlas configure rapidamente a fragmentação por zonas. O número de blocos que o Atlas cria depende do número de zonas que você define. Por padrão, o Atlas cria um bloco por código de localização e distribui blocos uniformemente em todos os shards.

Para saber mais sobre essas opções, consulte Referência de Sharding de Cluster Global.

7

O Atlas exibe a chave de fragmento composta próxima à parte superior da guia Global Writes após configurar a coleção.

As seções a seguir descrevem o comportamento de fragmentação e como habilitar a fragmentação para Gerenciar Clusters Globais.

Para clusters globais com sharding gerenciado pela Atlas. habilitadas, as collections não fragmentadas devem atender aos seguintes requisitos de compatibilidade antes da fragmentação para usar gravações globais quando fragmentadas:

Uma chave de shard somente no campo location pode resultar em gargalos, especialmente para cargas de trabalho em que um subconjunto de países ou subdivisões recebe a maioria das operações de gravação. O Atlas Global Writes requer uma chave de shard composta para facilitar a distribuição eficiente de dados fragmentados no cluster. As chaves de fragmentação do Cluster Global da Atlas compartilham as mesmas restrições que as chaves de fragmentação MongoDB. Aplicam-se as seguintes limitações do Atlas Global Cluster:

  • O primeiro campo da chave do fragmento composto deve ser location e não pode ser codificado em hash.

  • Só pode haver um campo de chave de shard secundário em uma chave de shard composta.

  • O campo de chave de fragmento secundário de uma chave de fragmento composta pode ser criptografado.

  • O campo de chave de shard secundário não pode ser uma array.

Para saber mais sobre:

Importante

Alterando a chave de shard

Após a fragmentação, o que você pode modificar depende da versão do MongoDB que você executa:

Versão do MongoDB
Modificar chaves de chave de shard
Modificar valores-chave de shard
MongoDB 5.0
Sim, adicione campos a uma chave usando apenas a interface do usuário do Atlas.
Sim
MongoDB 6.0
Sim, adicione campos a uma chave usando apenas a interface do usuário do Atlas.
Sim
MongoDB 7.0
Sim, adicione campos a uma chave usando apenas a interface do usuário do Atlas.
Sim

Em todas as versões do MongoDB, você não pode refragmentar uma coleção em um cluster global.

A IU do Atlas é compatível com a criação de coleções fragmentadas com validações específicas para Global Writes. Para saber mais, consulte Fragmentar uma coleção global para Global Writes na IU do Atlas.

Você também pode usar mongosh para executar o sh.shardCollection(). Depois de fragmentar a coleção, você deve usar a interface do usuário do Atlas para habilitar gravações globais para essa coleção.

Aviso

Se você fragmentar uma collection que já tenha um índice do Atlas Search, poderá passar por um breve período de inatividade de query quando a coleção começar a aparecer em um fragmento. Além disso, se você adicionar um fragmento a uma coleção já fragmentada que contenha um índice do Atlas Search, suas pesquisas nessa coleção falharão até que o processo de initial sync seja concluído nos fragmentos adicionados. Para saber mais, consulte processo de sincronização inicial.

Para saber mais sobre a fragmentação de coleções por meio da IU do Atlas, consulte Fragmentar uma coleção global para gravações globais na IU do Atlas.

As chaves de fragmentação usam fragmentação com hash e dados pré-divididos para distribuição uniforme. Disponível somente em clusters Atlas que executam o MongoDB 5.0 e posterior.

O Atlas distribui os dados fragmentados uniformemente fazendo o hashing do segundo campo da chave de fragmentação se você executar uma das seguintes ações:

  • Habilite o uso das chaves de fragmento de índice com hash selecionando Use hashed index as the shard key na IU do Atlas.

  • Defina isCustomShardKeyHashed por meio da API.

Opcionalmente, você pode especificar se deseja executar a criação e a distribuição inicial de blocos para uma coleção vazia ou inexistente. Esta ação é baseada nas zonas e intervalos de zonas definidos para a coleção. Para fazer isso, execute uma das seguintes ações:

  • Selecione Pre-split data for even distribution na IU do Atlas.

  • Configure o presplitHashedZone utilizando a API.

Quando você cria uma coleção fragmentada usando uma chave de shard composta com hash para clusters globais, o Atlas cria pelo menos 1 chunk por código de localização e tenta distribuir os shards uniformemente entre os shards no cluster.

Você também pode especificar o número mínimo de blocos a serem criados inicialmente ao fragmentar uma coleção vazia com uma chave fragmentada com hash usando a UI do Atlas ou definindo o parâmetro numInitialChunks por meio da API.

Observação

Se você especificar o número de blocos por shard, o Atlas criará pelo menos o número mínimo de blocos que você especificou, com o mesmo número de blocos por código de localização. Se você especificar o número mínimo de blocos, o Atlas configurará a fragmentação por zonas rapidamente, especialmente se você já souber como distribuir geograficamente seus dados antes da fragmentação.

Se o Atlas encontrar um erro ao fragmentar uma coleção para gravações globais, será exibida uma mensagem no banner na parte superior da tela.

  1. Clique em See Details para saber mais sobre o erro e o namespace onde ocorreu o erro. Uma janela modal é exibida com a mensagem de erro completa e um botão Fix Now.

  2. Clique em Close e navegue até a coleção na UI do Atlas. Você também pode clicar no botão Fix Now para ir até a UI do Atlas para este cluster do Atlas.

  3. Clique na guia Global Writes da coleção mencionada na mensagem de erro.

  4. Clique em Unmanage Collection para cancelar a operação global de fragmentação de gravações. Você deve ter a role Project Data Access Admin para cancelar a operação de fragmentação.

Depois de fazer as alterações necessárias na coleção, conforme indicado pela mensagem de erro, você poderá iniciar o processo de sharding novamente.

Possíveis erros incluem:

Já existe um índice na chave de shard personalizada.
Se o campo escolhido como a segunda parte da chave do shard composto já estiver indexado, a operação de fragmentação poderá falhar.
O campo-chave do shard não está presente.
Todos os documentos da coleção devem conter os dois campos-de chave de fragmento. Esse erro ocorre apenas em versões anteriores ao MongoDB 5.0.
A coleção já foi fragmentada.
Se a coleção já tiver sido manualmente fragmentada, a operação falhará.
A coleção tem um agrupamento padrão personalizado.
Um agrupamento padrão personalizado na coleção pode causar um erro de fragmentação.

Para cada documento em uma operação de gravação, o MongoDB usa o campo location da chave do shard (se incluído) para determinar a zona para a qual encaminhar os dados. O MongoDB seleciona um shard associado a essa zona como o destino para a gravação do documento, facilitando o armazenamento de dados segmentados e isolados geograficamente.

Aviso

Se uma chave de shard não estiver incluída na operação de gravação ou uma chave de fragmento estiver incluída, mas o campo location não estiver presente, a operação de gravação será bem-sucedida, mas os documentos resultantes não serão distribuídos.

O MongoDB pode garantir esse comportamento somente para documentos inseridos que atendam aos critérios definidos em Sharding Collections for Global Writes. Especificamente, o MongoDB pode rotear um documento cujo location campo não esteja em conformidade com a norma ISO-3166-1 alpha 2 ou ISO-3166-2 a qualquer shard no cluster.

O roteamento de query location 31661 2 "US""DE""IN" 31662 "US-DC""DE-BE""IN-DL"do MongoDB depende se a operação de leitura inclui a chave de shard completa e se o valor corresponde a um ISO- - alfa suportado código de país ( , , ) ou um ISO- - compatível código de subdivisão ( , , ).

  • Para queries que incluem a chave de shard completa e cujo valor location atende aos requisitos de Gravações Globais, o MongoDB direciona a operação de leitura para a zona que mapeia para o valor location ou valores especificados na query.

  • Para operações de leitura que não incluam o location valor ou se o location valor não corresponder a um ISO-3166-1 alfa compatível 2 código do país ou ISO-3166-2 código de subdivisão, o MongoDB deve transmitir a operação de leitura para todas as zonas do cluster.

  • Para zonas de gravações globais que têm nós Read-only em regiões geograficamente distantes, os clientes nessas regiões podem consultar o nó Read-only local dessa zona especificando a chave de shard completa como parte da query e emitindo a operação de leitura com uma preferência de leitura de nearest.

Importante

As leituras secundárias podem retornar dados obsoletos, dependendo do nível de atraso de replicação entre o nó secundário e o primário.

Para saber mais, consulte Preferência de leitura do MongoDB e Roteamento de query do MongoDB.

Os clusters de Gravações Globais oferecem suporte às mesmas estratégias de fragmentação Ranged e Hashed que um cluster fragmentado Atlas padrão. Para coleções fragmentadas cujas chaves de shard e esquema de documento não oferecem suporte a gravações globais, o MongoDB distribui os dados fragmentados uniformemente pelos shards disponíveis no cluster em relação à chave de shard escolhida. Considere o uso de um cluster fragmentado separado para dados que não podem aproveitar as gravações globais.

Você não pode modificar uma coleção para oferecer suporte ao Global Writes após a fragmentação. Recomendamos que você escolha uma chave de fragmento que lhe permita usar as gravações globais para uma coleção no futuro.

Dica

Veja também:

Para saber mais sobre os requisitos de compartilhamento de Escrituras Globais, consulte Compartilhamento de Coleções de Escritórios Globais.

Os clusters globais oferecem o mesmo suporte para coleções não fragmentadas que um cluster fragmentado padrão do Atlas. Para cada banco de dados no cluster, o MongoDB armazena suas coleções não compartilhadas em um shard primário. Use sh.status() de mongosh para determinar o shard primário do banco de dados.

← Gerenciar clusters globais