Ahora bien, esto no es el fin. Ni siquiera es el principio del fin. Pero es, quizás, el final del principio. - Winston Churchill

La actualización de datos no suele ser el final, sino el progreso de un flujo de trabajo. El envío sigue al pedido; la actualización del inventario sigue al envío; el ajuste del crédito sigue a la devolución; es necesario actuar en el siguiente paso del proceso para que el flujo de trabajo siga avanzando. Los flujos de trabajo pueden ser sencillos, con pocos pasos, o complejos, con cientos de pasos.  Gestión de procesos empresariales (BPM) es una industria en sí misma.

Presentación de Couchbase 5.5 Servicio nocturno. Los desarrolladores pueden escribir una función Javascript que se ejecute cuando se produzca un cambio en los datos. Nos referimos a las inserciones, actualizaciones, fusiones y eliminaciones como mutaciones. Múltiples casos de uso específicos se han documentado para desarrollar estos concurso funciones.

JSON modelo de datos de Couchbase procede de JavaScript.  N1QL es SQL para JSON. Las funciones eventing están escritas en Javascript y tiene integrado N1QL. El uso de las funciones Eventing, escribir lógica de negocio de procedimiento con acceso instantáneo a los datos fácil.

Este es el ciclo de vida de las funciones desde la perspectiva del desarrollador. Para cada mutación, se puede definir cualquier número de estas funciones a ejecutar. Es responsabilidad del desarrollador dimensionar los tiempos de ejecución de las funciones, en función del número de mutaciones.

Este es el ciclo de vida de las funciones de Eventing:

 

Para cada inserción, actualización o supresión (directa o por expiración), puede ejecutar una o varias funciones javascript. Estas funciones pueden leer los nuevos datos y el tipo de acción y luego ejecutar la acción subsiguiente. Esta funcionalidad está bien descrita en los blogs y artículos de Couchbase.

Tipo de declaración Función de eventos invocada
SELECCIONE Ninguno
INSERTAR OnUpdate(). La función se invoca una vez por documento insertado. La inserción simple inserta un único documento. Las inserciones pueden tener varios documentos utilizando varios documentos en la cláusula VALUES o pueden insertar varios documentos mediante la sentencia INSERT INTO...SELECT.
ACTUALIZACIÓN Se invoca OnUpdate() una vez por documento actualizado, excepto cuando varias actualizaciones de un mismo documento se deduzcan en una sola actualización. La sentencia Update puede actualizar varios documentos.
UPSERT OnUpdate(). El comportamiento es similar a INSERT.
BORRAR OnDelete(). Se invoca una vez por cada documento eliminado.
FUSIONAR OnUpdate() y/o OnDelete() en función de las acciones de inserción, actualización y eliminación.
CREAR ÍNDICE, ELIMINAR ÍNDICE, EXPLICAR, PREPARAR, CONCEDER, REVOCAR No se invoca ninguna función de eventos.
EJECUTAR Depende del tipo de sentencia ejecutada.

Estas funciones también pueden ejecutar sentencias N1QL. Resto del artículo se ve en todos los aspectos de N1QL ejecutado en Funciones Eventing.

Declaraciones N1QL en funciones Eventing.

Declaración Casos de uso de las sentencias N1QL en las funciones de eventos
CREAR ÍNDICE Dado que el esquema es flexible, podría inspeccionar los datos a menudo/periódicamente para detectar nuevos campos y luego crear índices sobre ellos.
BORRAR Borrado en cascada.
DROP INDEX Corolario del caso de uso CREAR ÍNDICE.
INFER Introspección periódica del cubo para la estructura. A continuación, tomar medidas (validar, crear índice, actualizar el modelo de datos) si es necesario.
INSERTAR Mantener datos referenciales (eventualmente).

Actualizar otros documentos con referencias a estos datos. Por ejemplo, datos de un nuevo código postal, estado, etc.

Copia de datos (total o parcialmente) en documentos secundarios/terciarios. Similar a la acción posterior a la activación.

FUSIONAR Mantén sincronizados los datos secundarios.
SELECCIONE Obtener datos, ejecutar informes periódicamente, etc.

Compruebe diversos aspectos, como la calidad y la validez de los datos,

Si conoce la clave del documento de destino, utilice las referencias directas incorporadas. Vea ejemplos en: https://docs.couchbase.com/server/5.5/eventing/eventing-examples.html

UPSERT Mantener sincronizados los datos secundarios y terciarios.

Similar a la acción posterior al disparo.

ACTUALIZACIÓN Mantener sincronizados los datos secundarios y terciarios.

Similar a la acción posterior al disparo.

Ejemplos: Probemos algunas funciones eventing con N1QL.

  1. N1QL simple en Funciones para registro y borrado en cascada.

Guarda cada documento eliminado en un cubo aparte.

  1. OnUpdate() para mantener la información agregada lista periódicamente.

Referencias:

  1. Documentación de Couchbase: https://docs.couchbase.com/server/5.5/eventing/eventing-overview.html
  2. Blogs de Couchbase sobre eventing: https://www.couchbase.com/blog/tag/eventing/

Autor

Publicado por Keshav Murthy

Keshav Murthy es Vicepresidente de Couchbase R&D. Anteriormente, estuvo en MapR, IBM, Informix, Sybase, con más de 20 años de experiencia en diseño y desarrollo de bases de datos. Dirigió el equipo de I+D de SQL y NoSQL en IBM Informix. Ha recibido dos premios President's Club en Couchbase y dos premios Outstanding Technical Achievement en IBM. Keshav es licenciado en Informática e Ingeniería por la Universidad de Mysore (India), es titular de diez patentes estadounidenses y tiene tres pendientes.

Dejar una respuesta