sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Cuál es la diferencia entre un changeStream y un cursor rastreable en MongoDB?

Cambiar secuencias (disponible en MongoDB v3.6+) es una característica que le permite acceder a cambios de datos en tiempo real sin la complejidad y el riesgo de seguir el oplog . Beneficios clave de los flujos de cambios over siguiendo el oplog son:

  1. Utilice el Control de acceso basado en funciones de MongoDB . Las aplicaciones solo pueden abrir flujos de cambios en colecciones que hayan leído el acceso a los. Autorización perfeccionada y específica.

  2. Proporcione una API bien definida que sea confiable. Los eventos de cambio Los resultados que devuelven los flujos de cambios están bien documentados. Además, todos los controladores oficiales de MongoDB sigue las mismas especificaciones al implementar la interfaz de flujos de cambios.

  3. Los eventos de cambio que se devuelven como parte de los flujos de cambios se confirman al menos en la mayoría del conjunto de réplicas. Esto significa que los eventos de cambio que se envían al cliente son duraderos. Las aplicaciones no necesitan gestionar la reversión de datos en caso de conmutación por error.

  4. Proporcione una ordenación total de los cambios en los fragmentos utilizando un reloj lógico global. MongoDB garantiza que se conserva el orden de los cambios y que los eventos de cambio se pueden interpretar de forma segura en el orden recibido. Por ejemplo, un cursor de flujo de cambios abierto en un clúster fragmentado de 3 fragmentos devuelve eventos de cambio respetando el orden total de esos cambios en los tres fragmentos.

  5. Debido a la característica de pedido, los flujos de cambios también son intrínsecamente reanudables. El _id de salida de evento de cambio es un token de currículum. Los controladores oficiales de MongoDB almacenan automáticamente en caché este token de reanudación y, en el caso de un error transitorio de red, el controlador volverá a intentarlo una vez. Además, las aplicaciones también pueden reanudarse manualmente utilizando el parámetro resume_after . Consulte también Reanudar un flujo de cambios .

  6. Utilice tubería de agregación de MongoDB . Las aplicaciones pueden modificar la salida de eventos de cambio. Actualmente hay cinco etapas de canalización disponibles para modificar la salida del evento. Por ejemplo, las salidas de eventos de cambio se pueden filtrar (lado del servidor) antes de enviarse usando $etapa de coincidencia . Consulte Modificar salida de flujo de cambios para más información.

Si su implementación de MongoDB es la versión 3.6+, recomendaría utilizar MongoDB Change Streams en lugar de seguir el registro de operaciones.

También puede encontrar Recomendaciones de producción de Change Streams un recurso útil.