MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Qual é a diferença entre um cursor changeStream e tailable no MongoDB


Alterar fluxos (disponível no MongoDB v3.6+) é um recurso que permite acessar alterações de dados em tempo real sem a complexidade e o risco de seguir o oplog . Principais benefícios dos fluxos de mudança sobre seguindo o oplog são:

  1. Utilize o Controle de acesso baseado em função do MongoDB integrado . Os aplicativos só podem abrir fluxos de mudança em coleções que leram acesso a. Autorização refinada e específica.

  2. Forneça uma API bem definida que seja confiável. Os eventos de mudança saídas que são retornadas por fluxos de mudança são bem documentadas. Além disso, todos os drivers oficiais do MongoDB siga as mesmas especificações ao implementar a interface de fluxos de mudança.

  3. Os eventos de mudança que são retornados como parte dos fluxos de mudança são pelo menos confirmados para a maioria do conjunto de réplicas. Isso significa que os eventos de alteração enviados ao cliente são duráveis. Os aplicativos não precisam lidar com a reversão de dados em caso de failover.

  4. Forneça uma ordenação total de alterações nos estilhaços usando um relógio lógico global. O MongoDB garante que a ordem das alterações seja preservada e os eventos de alteração possam ser interpretados com segurança na ordem recebida. Por exemplo, um cursor de fluxo de mudança aberto em um cluster fragmentado de 3 fragmentos retorna eventos de alteração respeitando a ordem total dessas alterações em todos os três fragmentos.

  5. Devido à característica de ordenação, os fluxos de mudança também são inerentemente recuperáveis. O _id de alterar saída do evento é um token de currículo. Os drivers oficiais do MongoDB armazenam automaticamente em cache esse token de retomada e, no caso de erro transitório de rede, o driver tentará novamente uma vez. Além disso, os aplicativos também podem ser retomados manualmente utilizando o parâmetro resume_after . Consulte também Retomar um fluxo de mudança .

  6. Utilize o pipeline de agregação do MongoDB . Os aplicativos podem modificar a saída dos eventos de alteração. Atualmente, existem cinco estágios de pipeline disponíveis para modificar a saída do evento. Por exemplo, as saídas de eventos de alteração podem ser filtradas (lado do servidor) antes de serem enviadas usando Estágio $match . Consulte Modificar saída do fluxo de mudanças Para maiores informações.

Se sua implantação do MongoDB for a versão 3.6+, eu recomendaria utilizar o MongoDB Change Streams sobre o oplog.

Você também pode encontrar Recomendações de produção de streams de mudança um recurso útil.