Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Os fluxos de alterações são um fluxo em tempo real de alterações na base de dados que flui da sua base de dados para a sua aplicação. Esta funcionalidade permite-lhe construir aplicações reativas subscrevendo alterações na base de dados, eliminando a necessidade de sondagens contínuas para detetar alterações.
Observação
O Azure DocumentDB suporta atualmente o Change Stream em clusters single-shard. Estamos a trabalhar ativamente para fornecer suporte para Change Stream em clusters de múltiplos fragmentos num futuro próximo.
O Azure DocumentDB impõe um limite de registo gerido pelo sistema de 400 MB para Fluxos de Alteração. Os clientes devem processar continuamente os Fluxos de Mudança para evitar perder eventos históricos de alteração. Os Fluxos de Alteração utilizam registos geridos pelo sistema com um limite de tamanho de 400 MB. Se um token de retomar se referir a um evento de alteração que saiu do registo, o Fluxo de Alterações não pode ser retomado a partir desse ponto e deve ser reiniciado. Planeamos uma antevisão para suporte alargado num futuro próximo.
Ativar fluxos de alteração
Pode ativar ou desativar esta funcionalidade usando o Azure CLI ou um template ARM. O suporte ao portal será adicionado em breve.
Passos para ativar fluxos de alteração no cluster via CLI
- Iniciar sessão na CLI do Azure
az login
- Recupera as definições atuais dos sinalizadores de funcionalidades no teu cluster. Isto garante que mantém quaisquer flags existentes ao adicionar a nova funcionalidade.
az resource show --ids "/subscriptions/<sub id>/resourceGroups/<resource group name>/providers/Microsoft.DocumentDB/mongoClusters/<resource name of your Azure DocumentDB cluster>" --api-version 2024-10-01-preview
- Envie um pedido PATCH para ativar a funcionalidade.
az resource patch --ids "/subscriptions/<subscription_id>/resourceGroups/<resource_group_name>/providers/Microsoft.DocumentDB/mongoClusters/<cluster-name>" --api-version 2024-10-01-preview --properties "{\"previewFeatures\": [ \"ChangeStreams\"]}"
- Verificar resultado:
- Certifique-se de que a carga útil de resposta inclui
"previewFeatures": ["ChangeStreams"]. - Se encontrar o erro "alterar fluxos não é suportado neste cluster", por favor crie um pedido de suporte.
- Certifique-se de que a carga útil de resposta inclui
Configuração dos fluxos de alteração
Este código de exemplo inicia um fluxo de alterações na exampleCollection coleção, monitorizando continuamente quaisquer alterações. Quando é detetada uma alteração, recupera o evento de alteração e imprime-o em formato JSON.
// Open a change stream
const changeStream = db.exampleCollection.watch();
// Listen for changes
while (changeStream.hasNext())
{
const change = changeStream.next();
printjson(change);
}
Importante
Os fluxos de alteração são retomáveis ao especificar um token de retomada ao abrir o cursor com resumeAfter. No entanto, espera-se que haja histórico suficiente para localizar a operação associada ao token. O documento observado no fluxo de alterações no _id campo representa o token retomável.
cursor = db.exampleCollection.watch(resume_after=resume_token)
Monitorizar alterações na base de dados com o Change Stream
Vamos compreender a saída do fluxo de alterações através do exemplo.
Neste evento de fluxo de mudança, vemos que um novo registo foi inserido inserted na coleção exampleCollection dentro de cs base de dados, e os detalhes do evento incluem o conteúdo completo do documento recém-adicionado.
{
"_id": { "_data": "AeARBpQ/AAAA" }, // "resume_token"
"operationType": "insert",
"fullDocument": {
"_id": { "$oid": "66e6f63e6f49ecaabf794958" },
"employee_id": "17986",
"name": "John",
"position": "Software Engineer",
"department": "IT",
"rating": 4
},
"ns": { "db": "cs", "coll": "exampleCollection" },
"documentKey": { "_id": { "$oid": "66e6f63e6f49ecaabf794958" } }
}
Personalizar dados no Change Stream
Personalize a saída do seu fluxo de alterações especificando um array de uma ou mais etapas do pipeline durante a configuração. Os operadores suportados incluem os seguintes.
$addFields$match$project$set$unset
Limitações
- Os eventos de fluxo de mudança em clusters multi-shard ainda não são suportados.
- Os cursores de fluxo de mudança precisam ser reinicializados após um evento de comutação por falha no estado atual.
-
Updateainda não suporta a descrição da atualização. -
pre-imageé uma opção não suportada. -
$changestreamcomo um pipeline aninhado dentro de outro estágio ainda não é suportado.