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

Configurar a sincronização inicial de várias coleções

initialSync permite que um processador de fluxo do Atlas Stream Processing ingira documentos preexistentes em uma coleção do Atlas como se fossem documentos de inserção changeEvent antes de começar a rastrear o fluxo de alterações. Um único estágio $source agora pode executar initialSync em mais de uma coleção ao mesmo tempo.

Esta página compara as características de sincronização de coleção única e de várias coleções, orienta na configuração de uma sincronização de várias coleções e demonstra um pipeline de replicação entre clusters construído sobre ele.

O campo coll do estágio $source aceita um único nome de coleção ou um array de nomes de coleções. Toda coleção que você nomear no array deve pertencer ao banco de dados que você especificar no campo db. Você não pode sincronizar coleções de mais de um banco de dados em um único estágio $source. O valor que você fornece determina o escopo de sincronização:

Escopo
$source Configuração
Comportamento

Coleção única

db: "app", coll: "orders"

O Atlas Stream Processing sincroniza a coleção nomeada.

Explicit list

db: "app", coll: ["a", "b", "c"]

O Atlas Stream Processing sincroniza cada coleção na lista na ordem em que você as lista.

Uma operação initialSync de várias coleções tem as seguintes características:

  • Sincroniza as coleções na ordem da lista. Com coll: ["a", "b", "c"], o Atlas Stream Processing esvazia as partições de a antes das de b, e as de b antes das de c, exceto onde o transbordamento preenche a capacidade ociosa com partições de uma coleção posterior.

  • Retoma sem ressincronizar coleções concluídas. O Atlas Stream Processing acompanha quais coleções foram concluídas, portanto, um processador de fluxo reiniciado ignora as coleções concluídas e retoma qualquer coleção em andamento a partir do seu último documento sincronizado. Ele pode reenviar documentos que já emitiu, portanto, projete seu coletor para lidar com documentos repetidos de forma idempotente.

  • Expõe o progresso de sincronização granular no nível da coleção. stats().stats.operatorStats[0].targetStats reports sync progress and document counts for each target collection. To learn more, see Verify Initial Sync Progress.

A sincronização de várias coleções initialSync difere da sincronização de coleção única de maneiras que afetam como você configura e opera seu processador de fluxo:

  • O paralelismo é global, não por coleção. A configuração initialSync.parallelism limita o número de leituras de partição simultâneas em todo o conjunto de coleções de destino, e não por coleção.

  • O escopo de catchup segue o escopo da fonte. Após a fase de sincronização, o Atlas Stream Processing abre um fluxo de alterações que corresponde ao escopo da fonte: um fluxo de alterações em nível de banco de dados para uma fonte de banco de dados inteiro, um fluxo de alterações em nível de cluster para uma fonte de cluster inteiro ou um fluxo de alterações com filtro para uma lista explícita de coleção. Você não precisa configurar isso separadamente.

  • Uma falha na sincronização da coleção faz com que todo o processador falhe. Assim como na sincronização de coleção única, se o Atlas Stream Processing falhar ao sincronizar qualquer coleção da lista, todo o processador de stream falha.

  • Algumas configurações do lado da origem não são replicadas para o destino. initialSync não replica índices, opções de coleção, como coleções limitadas, coleções de séries temporais, validadores ou agrupamentos padrão, ou definições de visualização. Crie-os no destino antes de iniciar o processador de fluxo. O Atlas Stream Processing também não descobre coleções que você cria depois que o processador de fluxo é iniciado; o conjunto de coleções a ser sincronizado é fixo nesse ponto.

The following procedure uses two collections from the sample_analytics dataset: customers, which holds customer profiles, and accounts, which holds each customer's financial accounts. The procedure configures a stream processor that copies both collections from one Atlas cluster to another, then keeps them current as documents change.

Antes de concluir este procedimento, você deve ter:

Execute os comandos nesta seção em seu cluster. Para se conectar, consulte Conectar-se a um cluster via mongosh.

Conclua as seguintes etapas para preparar as coleções de origem:

1

Este procedimento usa as coleções customers e accounts do conjunto de dados sample_analytics. Para saber como carregar dados de amostra, consulte Importar dados de amostra em sua implantação do Atlas.

2

Habilite pré-imagens e imagens de publicação nas coleções customers e accounts, porque o estágio $source do procedimento define fullDocument: "required". Execute os seguintes comandos no cluster:

db.getSiblingDB("sample_analytics").runCommand({
collMod: "customers",
changeStreamPreAndPostImages: { enabled: true }
})
db.getSiblingDB("sample_analytics").runCommand({
collMod: "accounts",
changeStreamPreAndPostImages: { enabled: true }
})

Para saber mais sobre fullDocument: "required", consulte Fluxo de alterações da coleção do MongoDB.

Select the Atlas UI or mongosh to configure the stream processor.

Depois de iniciar o processador de fluxo, chame sp.<processor-name>.stats() com a opção verbose para visualizar o progresso da sincronização para cada coleção de destino. A entrada do operador de origem em stats.operatorStats relata um array targetStats com um elemento por coleção:

sp.replicate_analytics_sp.stats(
{ options: { verbose: true } }
).stats.operatorStats[0].targetStats

O campo initialSync.status de cada destino alterna entre pending, in_progress e completed enquanto o Atlas Stream Processing sincroniza essa coleção, ou relata failed se a sincronização falhar. estimatedDocs e copiedDocs relatam as contagens estimadas e concluídas de documentos para aquela coleção.

Para visualizar o progresso total em todas as coleções de destino, use o campo initialSync do próprio operador de origem, que soma estimatedDocs e copiedDocs em todas as coleções:

sp.replicate_analytics_sp.stats(
{ options: { verbose: true } }
).stats.operatorStats[0].initialSync

O procedimento anterior replica duas coleções entre clusters do Atlas. O exemplo a seguir aplica o mesmo pipeline a um conjunto diferente de coleções. Apenas os valores db e coll no estágio $source mudam.

Para aprender mais sobre os estágios e conceitos neste guia, consulte os seguintes recursos: