Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

Fragmentar uma collection global

Importante

The feature described on this page is not currently supported on Atlas Infinite clusters during public preview. For the features supported in public preview, see Public Preview Availability.

Importante

Recurso indisponível nos clusters Flex

Os clusters Flex não aceitam esse recurso no momento. Para saber mais, consulte Limitações do Atlas Flex.

Observação

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

  • Quando as gravações globais estão habilitadas, os clusters globais não oferecem suporte a nós de pesquisa dedicados.

  • Você pode usar a IU do Atlas para fragmentar uma coleção global somente para clusters globais com fragmentação gerenciada pelo Atlas habilitada.

  • This document assumes prior knowledge of sharding semantics. Review the Sharding documentation before continuing with this tutorial.

In sharded clusters, you can create zones of sharded data based on the shard key. Your zones can segment data based on geographic area. To learn more about sharding based on geographic area, see Segmenting Data by Location.

The Atlas UI supports sharding Global Write collections for only global clusters that use Atlas-Managed Sharding. To shard non-Global-Write collections or Global Write collections that use Self-Managed Sharding, you must use mongosh or application code. To learn more, see Deploy a Sharded Cluster.

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:

Em clusters do Atlas Core, você pode configurar o Online Arquivo para mover dados acessados com pouca frequência do seu cluster do Atlas para uma instância do banco de dados federado somente leitura gerenciada pelo MongoDB, em vez de fazer sharding da sua coleção ou atualizar sua camada do cluster. Em cluster Atlas Infinite, o arquivo online não é compatível na visualização pública. Para saber mais sobre o Online arquivo, consulte Gerenciar arquivos online no Atlas.

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

You can update a document's shard key value unless the shard key field is the immutable _id field. To learn more, see Change a Document's Shard Key Value.

No MongoDB anterior a 6.0, não é possível atualizar o valor de um campo de chave de fragmento em um documento existente, em uma coleção habilitada para gravações globais.

Importante

Valores-chave de shards e clusters globais

Em todas as versões do MongoDB, não é possível fazer o reshard de 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
  1. Se ainda não tiver sido exibido, selecione a organização que contém seu projeto no menu Organizations na barra de navegação.

  2. Se ainda não estiver exibido, selecione seu projeto no menu Projects na barra de navegação.

  3. Na barra lateral, clique em Data Explorer sob o título Database.

    The Data Explorer displays.

IMPORTANTE: você também pode clicar no nome de um cluster para abrir a barra Cluster lateral e clicar Data Explorer em sob o Shortcuts título.

2
3
4
5

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

Default

Atlas uses the document that specifies the field or fields as the shard key.

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.

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.

If you select the Pre-split data for even distribution option, you can also specify the minimum number of chunks to create initially when sharding an empty collection with a hashed shard key. Initial chunk distribution allows Atlas to setup zoned sharding quickly. The number of chunks the Atlas creates depends on the number of zones that you define. By default, Atlas creates one chunk per location code and distributes chunks evenly across all shards.

To learn more about these options, see Global Cluster Sharding Reference.

6

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

The following sections describe sharding behavior and how to enable sharding for Manage Global Clusters.

For global clusters with Atlas-Managed Sharding enabled, unsharded collections must meet the following compatibility requirements prior to sharding to use Global Writes when sharded:

  • Cada documento na coleção deve incluir um campo location.

  • The value of the location field must be either an ISO-3166-1 alpha 2 country code ("US", "DE", "IN") or a supported ISO-3166-2 subdivision code ("US-DC", "DE-BE", "IN-DL"). Documents that don't match this criteria can't be routed to any shard in the cluster. To view the complete list of currently supported country or subdivision codes, see https://cloud.mongodb.com/static/atlas/country_iso_codes.txt.

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. As seguintes limitações do Atlas Global Cluster se aplicam:

  • 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 7.0

Sim, adicione campos a uma chave usando apenas a interface do usuário do Atlas.

Sim

MongoDB 8.0

Sim, adicione campos a uma chave usando apenas a interface do usuário do Atlas.

Sim

In all MongoDB versions, you can't reshard a collection on a Global Cluster.

A IU do Atlas suporta a criação de coleções fragmentadas com validações específicas para Escrituras Globais. Para saber mais, consulte Shard a Global Collection for Global Writes na UI do Atlas.

You can also use mongosh to execute the sh.shardCollection(). After sharding the collection, you must use the Atlas UI to enable Global Writes for that collection.

WARNING: If you shard a collection that already has a MongoDB Search index, you might experience a brief period of incomplete search results while the index is building on a shard. Also, if you add a shard for an already sharded collection that contains a MongoDB Search index, your search queries against that collection might return incomplete results until the initial sync process completes on the added shards. To learn more, see initial sync process.

To learn more about sharding collections via the Atlas UI, see Shard a Global Collection for Global Writes in the Atlas UI.

Shard keys use hashed sharding and pre-split data for even distribution.

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 shard de índice com hash selecionando Use hashed index as the shard key na interface do usuário do Atlas.

  • Set isCustomShardKeyHashed through the 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:

  • Select Pre-split data for even distribution in the Atlas UI.

  • Set presplitHashedZone using the API.

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

You can also specify the minimum number of chunks to create initially when sharding an empty collection with a hashed shard key using the Atlas UI or by setting the numInitialChunks parameter through the 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 aprender sobre o erro e o namespace onde ocorreu o erro. Uma janela modal aparece 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.
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 campo location não esteja em conformidade com a norma ISO-3166-1 alpha 2 ou ISO-3166-2 para qualquer shard no cluster.

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

  • 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 incluem o valor location ou caso o valor location não corresponda a um código de país suportado pela norma ISO-3166-1 alpha 2 ou não corresponda a um código de subdivisão previsto na norma ISO-3166-2, o MongoDB deve transmitir a operação de leitura para todas as zonas do cluster.

  • For Global Writes zones that have Read-only nodes in geographically distant regions, clients in those regions can query the local Read-only node for that zone by specifying the full shard key as part of the query and issuing the read operation with a Read Preference of 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.

To learn more, see MongoDB Read Preference and MongoDB Query Routing.

Global Writes clusters support the same Ranged and Hashed sharding strategies as a standard Atlas sharded cluster. For sharded collections whose shard keys and document schema don't support Global Writes, MongoDB distributes the sharded data evenly across the available shards in the cluster with respect to the chosen shard key. Consider using a separate sharded cluster for data that can't take advantage of Global Writes.

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

To learn more about Global Writes sharding requirements, see Sharding Collections for Global Writes.

Global Clusters provide the same support for unsharded collections as a standard Atlas sharded cluster. For each database in the cluster, MongoDB stores its unsharded collections on a primary shard. Use sh.status() from mongosh to determine the primary shard for the database.