La llegada de los sistemas de almacenamiento en caché distribuido ha solucionado el problema de las bases de datos sobrecargadas y lentas. Hoy en día, estos cachés distribuidos pueden manejar la carga de millones de transacciones de datos que se realizan por segundo, pero hay un problema.
La mayoría de las aplicaciones de nivel empresarial se basan en cambios que tienen lugar en algunas partes específicas de estos datos. Estas aplicaciones tienen que tomar decisiones comerciales críticas en función de estos cambios y dado que el tamaño de estos datos es de miles de Gigabytes, monitorear cambios específicos se convierte en una tarea enorme.
Para atender este problema NCache, un caché distribuido en memoria trae consigo una característica conocida como Consulta continua. Este blog explicará cómo funciona la consulta continua, cómo puede configurarla en NCache, y qué beneficios obtendrá al hacerlo.
NCache Detalles NCache Docs Descargar NCache
Consulta continua para monitorear cambios en NCache
La función Consulta continua de NCache le permite realizar un seguimiento de los cambios que tienen lugar en un conjunto de datos selectivo dentro del clúster de caché distribuida. Este conjunto de datos selectivo dentro del caché se define a través de SQL-like OQL (lenguaje de consulta de objetos) consultas Los cambios que tienen lugar dentro de este conjunto de datos se propagan a las aplicaciones (que tienen devoluciones de llamadas registradas para eventos) en forma de Eventos de nivel de caché.
Independientemente del tamaño de su clúster de caché, solo se le notificarán los cambios que se produzcan en el conjunto de datos que definió y luego registró en el caché. Así es también como Continuous Query logra el desacoplamiento de la aplicación a medida que los datos se filtran a través de consultas OQL. Este desacoplamiento garantiza que las aplicaciones no se superpongan entre sí.
También debe tenerse en cuenta que la consulta continua en sí misma no cambia los datos de su aplicación. En cambio, Continuous Query proporciona un mecanismo para monitorear y compartir datos entre aplicaciones en tiempo de ejecución a través de eventos. Luego, el desarrollador se asegura de qué hacen las aplicaciones con estos datos al registrar devoluciones de llamadas para eventos de consulta continua y definir su lógica comercial.
Consulta continua SQL en NCache Notificaciones de eventos de caché
Configuración de consulta continua en NCache
Es fácil configurar Consulta continua en NCache. Solo tienes que seguir un proceso de dos pasos. Una vez que siga estos pasos, su aplicación podrá recibir notificaciones contra el conjunto de datos definido por usted y actuar en consecuencia.
Estos dos pasos son los siguientes:
Paso 1: Registre la devolución de llamada para eventos
Debe registrar una devolución de llamada para eventos de nivel de caché: Artículo añadido, Artículo actualizado, or Elemento eliminado. A través de estos eventos, definirá su lógica comercial que dictará lo que debe hacer su aplicación si se activa uno de estos eventos.
En el siguiente ejemplo de código, se registra una devolución de llamada para el evento ItemAdded.
1 2 3 4 5 6 7 8 9 |
static void QueryItemCallBack(string key, CQEventArg arg) { switch (arg.EventType) { case EventType.ItemAdded: Console.WriteLine(“Item has been added”); break; } } |
Paso 2: Registro de consultas y notificaciones
Una vez que haya registrado las devoluciones de llamada para los eventos, debe crear una consulta continua que especificará los criterios para el conjunto de datos resultante. Los eventos se activarán en función de esta consulta continua. Después de esto, las devoluciones de llamada se registran con la consulta. Una vez hecho esto, la consulta se registra contra el servidor de caché utilizando el RegistrarseCQ método.
El siguiente ejemplo de código muestra cómo sucede todo esto.
1 2 3 4 5 6 7 8 9 10 11 12 |
string query = "SELECT $VALUE$ FROM FQN.Product WHERE Category = ?"; var queryCommand = new QueryCommand(query); queryCommand.Parameters.Add("Category", "Beverages"); // Create Continuous Query var cQuery = new ContinuousQuery(queryCommand); // Item add notification cQuery.RegisterNotification(new QueryDataNotificationCallback(QueryItemCallBack), EventType.ItemAdded, EventDataFilter.None); cache.MessagingService.RegisterCQ(cQuery); |
Anular el registro de consulta continua
NCache te da la opción de dar de baja las notificaciones de la Consulta Continua cuando ya no las necesites. Esto se hace usando el Notificación de cancelación del registro método.
En el siguiente ejemplo de código, se anula el registro de una notificación de evento de una consulta continua.
1 |
cQuery.UnRegisterNotification(new QueryDataNotificationCallback(QueryItemCallBack), EventType.ItemAdded); |
NCache también le da la opción de anular el registro de la consulta continua del clúster de caché. No es necesario mantenerlo ejecutándose dentro del caché cuando ya no lo necesita, ya que consume recursos. Para cancelar el registro de una consulta continua de la memoria caché, NCache le da la Cancelar registroCQ método.
En el siguiente ejemplo de código, se anula el registro de una consulta continua del servidor de caché.
1 |
cache.MessagingService.UnRegisterCQ(cQuery); |
NCache: La mejor solución que existe
Cuando se trata de aplicaciones comerciales grandes y complejas, la refinación de datos es un gran desafío. Procesamiento de flujo in NCache responde a este desafío al convertir datos grandes y complejos en flujos de datos para un fácil procesamiento.
Una aplicación popular de Stream Processing es la Suscriptor del editor modelo de NCache. Sin embargo, esto viene con las siguientes limitaciones:
- Las aplicaciones no conservan los mensajes una vez que se entregan a los suscriptores.
- La filtración de datos tiene lugar en el extremo del cliente, lo que hace que la arquitectura de la aplicación sea más compleja.
La consulta continua soluciona ambos problemas de las siguientes maneras:
- Al conservar los datos dentro de la memoria caché incluso después del procesamiento.
- Al filtrar datos a través de declaraciones OQL bastante simples en el extremo del servidor en lugar del extremo del cliente. Esto asegura una arquitectura de aplicación simple.
Consulta continua Procesamiento de flujo Mensajería de publicación/suscripción
Conclusión
NCache es un caché distribuido extremadamente rápido y fácil de escalar que se ocupa de los cuellos de botella de la base de datos de manera eficiente y efectiva. Al igual que la consulta continua, el procesamiento de transmisión y la mensajería Pub/Sub, NCache tiene muchas otras características ricas y poderosas que deberías probar. Estas características le brindan resultados tanto cuantitativos como cualitativos. Tratar NCache ¡ahora!