Ante el abanico de opciones… ¿qué Data Store elegir?

“Polyglot Persistence” es como se denomina en anglosajón a la arquitectura de datos que aglutina diferentes tecnologías de almacenamiento dentro de un mismo ente. Martin Fowler ya habló al respecto hace muchos años, pero aún hoy día algunas empresas descubren sus beneficios en el transcurso de los procesos de transformación digital en los que embarcan.

En arquitecturas Data Centric, donde el dato se sitúa como protagonista, cobran más fuerza aún los argumentos a favor de emplear el mejor almacenamiento de datos posible para cada caso de uso. Pero ante tanta oferta, ¿qué producto elegir?

Hay que tener en cuenta que, de cara a las aplicaciones finales, la tecnología empleada en la capa de persistencia es transparente al desarrollo.

Algunos de los factores que debemos tener en cuenta a la hora de elegir un almacenamiento de datos son:

  • Arquitectura y principios sobre los que se basa. Debemos profundizar en las características del producto y entenderlo bien antes de tomar una decisión.
  • La madurez del producto y los clientes que lo utilizan.
  • Funcionalidad que nos ofrece el producto y cómo encaja con nuestras necesidades.
  • Sencillez escalando y, en general, administrando el servicio.
  • Desarrollo potente pero sencillo que facilite la construcción de software de manera ágil y eficiente.
  • Una documentación completa y visual.
  • Amplia comunidad en la que consultar ejemplos, encontrar talento o ayuda ante problemas puntuales.
  • Ritmo al que publican nuevas versiones y corrigen errores, pero también el tipo de mejoras que han ido incorporando con cada release.

Pero estos no son lo únicos puntos a tener en cuenta antes de elegir una tecnología. En ocasiones, elegir entre cientos de productos es realmente complicado. Por ello, disponer de un listado de casos de uso y qué tecnologías los resuelven puede ser una buena ayuda para encontrar al mejor candidato. A continuación veremos algunos de ellos.

Sistemas de recomendación en tiempo real

Hoy en día es muy frecuente que un servicio ofrezca recomendaciones basadas en la información que maneja. Por ejemplo, productos en una tienda, anuncios en un ad server, conexiones en una red social, gustos musicales…

Una base de datos de grafos que persista de manera eficiente las relaciones entre dichos elementos nos va a permitir hacer recomendaciones en base a ciertos patrones recogiendo información propia y/o de terceros.

Si bien muchos productos ofrecen capacidades de grafos, ninguno lo hace como Neo4j ya que fue concebido desde el principio para tal fin.

Monitorización de precios

La visualización y el análisis de precios requiere consultar gran cantidad de muestras temporales recogidas durante un periodo de tiempo. Esto puede ser útil para, entre otras cosas, predecir el mejor momento para comprar un producto o también para proponer precios recomendados detectando patrones o fluctuaciones.

Ante este escenario, la mejor solución es Riak TS por contar con agregaciones nativas, almacenamiento datos continuos en función del rango temporal al que hacen referencia, utiliza un lenguaje de tipo SQL, se puede configurar un entorno multi-cluster y facilita conectores con Spark para analizar eficientemente la información almacenada.

Detección de fraude

Muchas son las situaciones en las que debemos identificar usos fraudulentos en nuestros servicios, sistemas de valoración, compras online o comentarios, por citar algunos ejemplos.

Una de las técnicas más extendidas para detectar esas situaciones se basa en las referencias cíclicas entre entidades. Una base de datos de grafos es la solución óptima para este escenario.

Neo4j vuelve a ser la primera opción debido, no sólo por lo comentado anteriormente, sino porque en este caso una base de datos ACID ayuda a garantizar la transaccionalidad en operaciones críticas y, por tanto, a contar con una fuente fiable de información para detectar posibles fraudes.

Gestión de inventario

Parece una misión sencilla, pero mantener actualizado el inventario de productos de tu catálogo es una de las prioridades más importantes para evitar malestar entre tus potenciales compradores e incluso pérdidas económicas si no se consigue disponer de un sistema que responda en tiempo real.

Couchbase es un producto principalmente de almacenamiento de documentos robusto, que incorpora una caché que optimiza los tiempos de respuesta y los recursos del sistema empleando lo que llaman Multi-dimensional Scale (MDS), entre otras características interesantes.

Gestión de carros de compra

Los carritos de compra se componen de información sencilla y volátil que debe ser accesible a una velocidad vertiginosa ya que será consultada con frecuencia. Redis es un sistema de caché clave-valor en memoria que nos da la capacidad de crear conjuntos de datos expirables en entornos distribuidos.

Asistente virtual

Muchos son los productos o aplicaciones que desean darle un toque más humano a la sección de preguntas frecuentes o de contacto, en ocasiones, llegando a construir complejos sistemas de reconocimiento de lenguaje natural para dar la respuesta deseada en todo momento.

Elastic es el mejor producto para construir analizadores, stemmers, tokenizadores de manera sencilla y poco intrusiva en nuestro buscador semántico vitaminado. Además, como producto es resiliente, flexible, escalable, tiene una gran documentación y comunidad. En definitiva, han sabido construir no solo una buena herramienta, sino que le han dado empaque con otros muchos puntos que giran a su alrededor.

Catálogo de información

En la actualidad es habitual encontrar catálogos de información con millones de elementos, e información poco homogénea. Por ejemplo, información de usuarios, productos, compras etc.

Un sistema como MongoDB capaz de almacenar documentos en JSON así como validarlos en tiempo de ejecución, gestionar grandes volúmenes de información y ofrecer un rendimiento extraordinario, lo convierten en la mejor opción.

Además de ofrecer potentes frameworks de consulta, capaces de extraer la información desde el punto de vista que se necesite, tenemos la opción de usar conectores con herramientas de Business Intelligence tradicionales gracias a su conector BI.

Almacenamiento móvil

Hoy día, toda aplicación móvil consulta extensivamente información a través de Internet. Esto supone un problema a la hora de gestionar las desconexiones que pueden sufrir los usuarios en el uso de su móvil, ocasionando fallos en la aplicación. Esto obliga a desarrollar componentes que garanticen la resiliencia de nuestra aplicación ante este tipo de circunstancias.

Couchbase Mobile ofrece una alternativa más que solvente, nos permite realizar consultas NoSQL en el propio terminal, con los beneficios que ello conlleva y sincronizarse con el origen de datos de manera transparente para la aplicación. De esta manera no tenemos que preocuparnos por si tenemos conexión a Internet o no, pues Couchbase Mobile nos devolverá siempre el último dato válido disponible.

Conclusiones

He introducido algunas de las tecnologías más potentes y extendidas del mercado, pero no debes pensar que sólo sirven para la situación expuesta. Todos los productos están pensados y optimizados para resolver un conjunto relativamente pequeño de problemas que se pueden aplicar a multitud de casos de uso.

Espero que esta lista te sirvan como referencia la próxima vez que te enfrentes al reto de elegir un Data Store.

Si me permites el consejo, procura ser creativo, innovador y concienzudo y, si es posible, construye una prueba de concepto que valide tu propuesta. Este será el primer paso para salir de la zona de confort y explorar nuevos caminos que sitúen a tu negocio a un nivel superior.

Escribe un comentario