Introduction to CQRS (segregando la tipología de uso y del dato)

Introduction to CQRS (segregando la tipología de uso y del dato)

En anteriores post hemos hablado sobre Data streaming como también de escalar bases de datos. Pero hoy vengo a darte una introducción, clara y concisa, sobre CQRS y su aplicación; utilizando un tanto los posts mencionados anteriormente.

CQRS es un método para optimizar escrituras en bases de datos (write) y leerlas (read). Hoy en día, algunas más que otras, las empresas están ya acostumbradas a trabajar con grandes volúmenes de datos y, por lo tanto, con grandes bases de datos. Pero estas bases de datos no han sido construídas originalmente para escalar, si es que se ha separado su tipo de uso (write/read). Muchos de los productos, aplicaciones, etc… que utilizamos continúan teniendo un modelo muy noventero (monolítico).

Ya inmersos en la era del Big Data, muchas bases de datos no pueden manejar el creciente número de lecturas y escrituras complejas, lo que genera errores, cuellos de botella y un servicio al cliente lento. Tradicionalmente (antes de CQRS), las aplicaciones utilizaban la base de datos mediante controladores, éstos podían enviar comandos a la base de datos para actualizar datos o, símplemente, para leer. Lo máximo que se hacía era poner una caché, porqué aquellas query contra la base de datos más utilizadas, en un tiempo “t’” definido con anterioridad, se pudieran guardar y así mejorar su performance y evitar una posible tensión en la base de datos.

Bien, CQRS en lugar de que todas las consultas vayan a la base de datos, a la misma, utilizando consultas y rutinas de manipulación de datos se simplifique agregando un proceso intermedio para el procesamiento de datos. Esto reduce el estrés en la base de datos al permitir leer y escribir más fácilmente los datos de la base de datos. Un ejemplo sería:

  • Implantar una sistema de colas escalable como Apache Kafka y a la vez, almacenar las distintas peticiones sin procesar en un base de datos más sofisticada como AWS Redshift.
  • Introducir un procesamiento en tiempo real con herramientas como Apache Flink o Apache Spark.
  • Agregar una caché desde donde se consulten los datos y se muestran a los usuarios. Podríamos hablitar índices de datos mediante Elasticsearch.

CQRS Model

La parte más importante en éste nuevo esquema serán los cálculos basados en la tecnología MapReduce que van a permitir la distribución de los mismos en una mayor parte de la nuestra infraestructura, teniendo como resultado, grandes cantidades de datos que se procesan más rápidamente, y los datos correctos llegan a los usuarios correctos, de manera rápida y puntual.

O’Reilly Media siempre dispone de buenos libros que nos ayudan en nuestro día a día, hoy recomendamos: MapReduce Design Patterns: Building Effective Algorithms and Analytics for Hadoop and Other Systems.

NOTA: Recuerda que si pulsas en el enlace del libro, me gano una pequeña comisión sin que a ti te cueste nada extra y me estarás ayudando con los costes de mantenimiento del Blog.

Comentarios, opiniones y valoración: Si en el 98 ya estabas construyendo ésta tipología de sistemas de información, me gustaría saber qué tienes que decir a través de las redes sociales.

Autor: Joakim Vivas

comments powered by Disqus