Modos de fuente de cambios en Azure Cosmos DB
SE APLICA A: NoSQL
Azure Cosmos DB ofrece dos modos de fuente de cambios. Cada modo ofrece la misma funcionalidad básica. Entre las diferencias, se incluyen las operaciones que se capturan en la fuente, los metadatos disponibles para cada cambio y el período de retención de los cambios. Puede consumir la fuente de cambios en diferentes modos entre varias aplicaciones para el mismo contenedor de Azure Cosmos DB para ajustarse a los requisitos de cada carga de trabajo. Cada aplicación de fuente de cambios individual solo se puede configurar para leer la fuente de cambios en un modo. El consumo de la fuente de cambios en un modo no le impide consumir la fuente de cambios en otro modo en otra aplicación.
Nota:
¿Tiene algún comentario sobre los modos de fuente de cambios? Queremos conocerlos. No dude en compartir sus comentarios directamente con el equipo de ingeniería de Azure Cosmos DB: cosmoschangefeed@microsoft.com.
Modo de fuente de cambios Última versión
El modo Última versión es un registro persistente de cambios realizados en los elementos de las creaciones y actualizaciones. Usted obtiene la última versión de cada elemento del contenedor. Por ejemplo, si se crea un elemento y, a continuación, se actualiza antes de que usted pueda leer la fuente de cambios, solo aparecerá la versión actualizada en la fuente de cambios. Las eliminaciones no se registran como cambios y, cuando se elimine un elemento, ya no estará disponible en la fuente. El modo de fuente de cambios Última versión está habilitado de forma predeterminada y es compatible con todas las cuentas de Azure Cosmos DB, excepto la API para Table y la API para PostgreSQL. Este modo era anteriormente la manera predeterminada de usar la fuente de cambios.
Modo de fuente de cambios Todas las versiones y eliminaciones (versión preliminar)
El modo Todas las versiones y eliminaciones (versión preliminar) es un registro persistente de todos los cambios en los elementos de las operaciones de creación, actualización y eliminación. Usted obtiene un registro de cada cambio en los elementos en el orden en que se produjeron, incluidos los cambios intermedios en un elemento entre las lecturas de la fuente de cambios. Por ejemplo, si se crea un elemento y, a continuación, se actualiza antes de que usted pueda leer la fuente de cambios, aparecerán en esta las versiones del elemento tanto de las creaciones como de las actualizaciones. Para leer desde la fuente de cambios en el modo Todas las versiones y eliminaciones, debe tener configuradas copias de seguridad continuas en la cuenta de Azure Cosmos DB. Al activar las copias de seguridad continuas, se crea la fuente de cambios de todas las versiones y eliminaciones. Solo podrá leer los cambios que se produjeron durante el periodo de copia de seguridad continua cuando use este modo de fuente de cambios. Este modo es compatible solamente con cuentas Azure Cosmos DB for NoSQL. Obtenga más información sobre cómo suscribirse a la versión preliminar.
Casos de uso de la fuente de cambios
El modo Última versión proporciona una forma sencilla de procesar los cambios en los elementos de un contenedor, tanto en tiempo real como del historial, con la capacidad de volver a los primeros cambios de este.
Escenarios adecuados para este modo:
Migraciones desde un contenedor completo a una ubicación secundaria.
Capacidad de volver a procesar los primeros cambios del contenedor.
Procesamiento en tiempo real de cambios en los elementos de un contenedor resultantes de las operaciones de creación y actualización.
Cargas de trabajo que no necesitan capturar eliminaciones o cambios intermedios entre lecturas.
Características de cada modo
Además de las características comunes en todos los modos de fuente de cambios, cada modo de fuente de cambios tiene las siguientes características:
La fuente de cambios incluye operaciones de inserción y actualización que son realizadas en los elementos del contenedor.
Este modo de fuente de cambios no registra eliminaciones. Puede capturar eliminaciones estableciendo un marcador de «eliminación temporal» en los elementos en lugar de eliminarlos directamente. Por ejemplo, puede agregar un atributo en el elemento denominado
deleted
con el valortrue
y, después, establecer un tiempo de vida (TTL) en el elemento. La fuente de cambios lo captura como una actualización y el elemento se elimina automáticamente cuando expira el TTL. También puede establecer un período finito de expiración para los elementos usando la funcionalidad de TTL. Con esta solución, tiene que procesar los cambios dentro de un intervalo de tiempo más corto que el período de expiración de TTL.Solo el cambio más reciente en un elemento específico se incluye en la fuente de cambios. Puede que los cambios intermedios no estén disponibles.
Cuando se elimina un elemento, ya no está disponible en la fuente de cambios.
Los cambios pueden sincronizarse desde cualquier momento determinado y no existe un periodo de retención de datos fijo en el que los cambios estén disponibles.
No se puede filtrar la fuente de cambios para un tipo de operación específico. Una posible alternativa consiste en agregar un "marcador temporal" en el elemento para las actualizaciones y filtrar los elementos basándose en el marcador al procesar elementos en la fuente de cambios.
El punto de partida para leer la fuente de cambios puede ser desde el comienzo del contenedor, desde un momento concreto, desde "ahora" o desde un punto de control específico. La precisión de la hora de inicio es de aproximadamente cinco segundos.
Trabajar con la fuente de cambios
Cada modo es compatible con diferentes métodos para leer la fuente de cambios en cada idioma.
Formas de usar cambios de la fuente de cambios en el modo Última versión:
Método para leer la fuente de cambios | .NET | Java | Python | Node.js |
---|---|---|---|---|
Modelo de extracción de fuente de cambios | Sí | Sí | Sí | Sí |
Procesador de fuente de cambios | Sí | Sí | No | No |
Desencadenador de Azure Functions | Sí | Sí | Sí | Sí |
Analizar el objeto de respuesta
En el modo Última versión el objeto de respuesta predeterminado es una matriz de elementos que han cambiado. Cada elemento contiene los metadatos estándar de cualquier elemento de Azure Cosmos DB, incluyendo _etag
y _ts
, con la adición de una nueva propiedad: _lsn
.
El formato _etag
es interno y no se debe depender de él, ya que puede cambiar en cualquier momento. _ts
es una marca de tiempo de modificación o creación. Puede usar _ts
para la comparación cronológica. _lsn
es un identificador de lote que se añade solamente en la fuente de cambios que representa el identificador de la transacción. Muchos elementos pueden tener el mismo _lsn
.
ETag
en FeedResponse
es diferente del _etag
que se ve en el elemento. _etag
es un identificador interno y se utiliza en el control de simultaneidad. La propiedad _etag
representa la versión del elemento, mientras que la propiedad ETag
se utiliza para secuenciar la fuente.
Pasos siguientes
Obtenga más información sobre la fuente de cambios en los artículos siguientes:
- Introducción a la fuente de cambios
- Patrones de diseño de fuente de cambios
- Options to read change feed (Opciones para leer la fuente de cambios)