Estou revisando o material do meu próximo curso de MongoDB, e hoje resolvi escrever um post rápido sobre um recurso lindinho, o Change Stream (CS).
O change streams foi lançado na versão 3.6 do MongoDB e permite acompanhar (ou escutar, ou assinar) as alterações em uma coleção, um banco de dados ou uma instância, em tempo quase quase real.
Não acho que seja um problema, mas é bom lembrar que este recurso só funciona em replica sets (se você não conhece a replicação no MongoDB, veja este post)
Dá para fazer inúmeras coisas com o Change Stream, de logs a consistência de atributos, e o legal é que diversas decisões podem ser tomadas com base no valor de um ou vários atributos.
Como este é um post rápido, o exemplo será também. Mas te convido a criar soluções usando o CS e colocar o código aqui nos comentários deste post.
Em nosso exemplo, simplesmente faremos um print dos dados provenientes da inclusão documentos em uma coleção. Vou criar um script usando Python* (que eu amo) , e comentarei cada passo.
Para download do script pronto, acesse o meu github.
#Para acessar o MongoDB com o Python, precisamos importar o módulo pymongo import pymongo #Importar a classe MongoClient from pymongo import MongoClient #conectar no MongoDB, informando os dados do replicaset client = MongoClient("r1/localhost:30000,localhost:27052,localhost:27053" ) #Criar a variável db, informando qual é o banco de dados db = client.blog #informar a coleção que vamos "monitorar" col = db.post #Criar a variável change_stream, que "escutará" as alterações que estão acontecendo na coleção change_stream = client.watch() #******************************************* #se eu quisesse monitorar as alterações no banco de dados poderia usar: #change_stream = db.watch() #se eu quisesse monitorar as alterações no replicaset: #change_stream = client.watch() #****************************************** #O cs é um objeto do tipo dicionário, que contém informações sobre a atualização que foi feita for cs in change_stream: #Imprimir na tela as alterações realizadas, elas estão documentadas no objeto cs print(cs)
Conclusão…
O MongoDB não é só um repositório de dados, pode ser usado de diversas formas, e possui recursos incríveis como o change stream. Ao elaborar a arquitetura da sua solução, leve emconta os recursos disponíveis, veja as recomendações de uso (e não uso) de cada recurso, verifique os requisitos não funcionais da sua aplicação e teste!!!
Tenho certeza, que assim você criará soluções incríveis!
Referências
Para saber mais sobre o CS, dá uma olhada na documentação oficial.
** Eu poderia ter feito o script com outra linguagem, mas vou palestrar no Python Brasil e no Coda, então estou no espírito Python 🙂