Detección de caducidades antes de que se produzcan con Couchbase Server y N1QL

Hay muchos casos de uso en los que la caducidad automática de documentos funciona perfectamente. Mantener el estado de la sesión, carritos de la compra, cotizaciones de precios para viajes y mucho más. En todos estos casos, las aplicaciones que utilizan Couchbase Server, establecen el tiempo de caducidad en segundos, minutos u horas para gestionar el comportamiento del usuario.

Para los elementos con caducidad en la base de datos, Couchbase Server ha incorporado inteligencia para hacer que los datos desaparezcan a la hora de caducidad dada. Puedes encontrar todo sobre TTL y expiración aquí en la documentación de Couchbase Server.

La mayoría de estos sistemas con caducidad también presentan casos de uso en los que se desea renovar los datos que caducan o notificar a un sistema posterior que un conjunto de documentos está a punto de caducar. La renovación o las notificaciones de datos que caducan suelen implicar un proceso que busca los próximos vencimientos de los documentos. La consulta de esta información es ahora mucho más rápida gracias a los índices globales y a N1QL.

En el pasado, se podía indexar esta información en vistas map/reduce. Aunque las vistas map/reduce pueden proporcionar una indexación potente, debido a la dispersión de las colecciones, los índices globales tienen ventaja.

He aquí por qué: Los índices globales se particionan independientemente de los datos. Por ejemplo, aunque tengas tus datos repartidos en 20 nodos, los índices globales pueden residir en un único nodo si el índice cabe en ese único nodo. Tampoco tienes que elegir el mismo HW para los nodos de índice vs datos en Couchbase Server. Eso significa que puedes conseguir un nodo de índice que sea lo suficientemente "alto" para que quepa el índice. Puedes leer más sobre las diferencias entre vistas map/reduce e índices secundarios globales aquí.

A continuación se explica cómo indexar y consultar la información de caducidad para detectar los datos que caducan: Usaré .Net en los ejemplos.

Paso 1 Incluir la expiración en el cuerpo del documento: no necesitarás hacer esto en el futuro pero hoy, META() no expone la expiración todavía. En el código de abajo añade un atributo exp_datetime al JSON que calcula la hora aproximada en la que expirará el documento. (Recuerde que este es un sistema distribuido y no hay hora central. Los relojes estarán ligeramente desfasados entre los nodos cliente y servidor por lo que la hora exacta de expiración es difícil de detectar)

Paso 2 - Crear un índice sobre la hora de expiración.

Paso 3 - Consultar datos que expiran en los próximos 30 segundos. La siguiente consulta devolverá los ID de los documentos y los valores completos de los documentos.

La salida contendrá todos los documentos que caduquen en los próximos 30 segundos.

Feliz pirateo

Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

Autor

Publicado por Cihan Biyikoglu, Director de Gestión de Productos, Couchbase

Cihan Biyikoglu es director de gestión de productos en Couchbase, responsable del producto Couchbase Server. Cihan es un entusiasta de los grandes datos que aporta más de veinte años de experiencia al equipo de productos de Redis Labs. Cihan comenzó su carrera como desarrollador de C/C++.

Deja un comentario

¿Listo para empezar con Couchbase Capella?

Empezar a construir

Consulte nuestro portal para desarrolladores para explorar NoSQL, buscar recursos y empezar con tutoriales.

Utilizar Capella gratis

Ponte manos a la obra con Couchbase en unos pocos clics. Capella DBaaS es la forma más fácil y rápida de empezar.

Póngase en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítanos ayudarle.