Almacenamientos NoSQL para Gestores de Contenidos

Hoy en día casi todas las empresas utilizan algún tipo de CMS, o gestor de contenido, para desarrollar su actividad en Internet. La información que estos sistemas almacenan y manejan, se ha venido gestionando con sistemas de almacenamiento relacionales al estilo de Oracle Database, MySQL, SQL Server, DB2, etc… Tendemos a encontrar relaciones entre conjuntos de información y resulta más natural estructurar la información. No sólo eso, además eran las tecnologías predominantes en el boom de Internet cuando comenzaron a aflorar numerosos CMS.

Desde hace unos años, se han comenzado a desarrollar, potenciar y promover otros sistemas de almacenamiento que están permitiendo afrontar estos apasionantes retos: mejorar el rendimiento, facilitar la escalabilidad, flexibilizar el desarrollo y manipular y analizar información en tiempo real. Los motores de bases de datos relacionales han demostrado ser insuficientes para todas estas necesidades, pese a esto, no es el fin de los CMS. Como solución a estas cuestiones podemos hacer uso de bases de datos NoSQL y de eso mismo vamos a hablar en este post.

Rendimiento elevado

El rendimiento es uno de los factores más relevantes a la hora de construir un CMS. Tiene impacto en la experiencia de uso de nuestros usuarios, hasta los buscadores tienen en cuenta el tiempo de carga de una página para mostrar los resultados de búsqueda. Ambos motivos son extremadamente críticos como para no tenerlos en cuenta ya que aumentar una posición en los resultados de búsqueda en Google o Bing puede suponer un incremento de millones de visitas.

Ante esta circunstancia, las bases de datos NoSQL parten con ventaja. Ofrecen unos tiempos de respuesta extraordinarios en todo tipo de operaciones, pero se centran en optimizar las lecturas ya que es el tipo de operación que más se suele realizar. Este rendimiento es igualmente impresionante conforme crece el volumen de datos que almacenamos en el sistema. Esto se consigue con una arquitectura en la que los datos se distribuyen en diferentes servidores haciendo más fácil y rápido el acceso a los mismos.

Escalabilidad horizontal

Cuando el conjunto de datos crece, se necesita mayor capacidad de procesamiento y no se puede degradar el rendimiento. Es necesario dimensionar la infraestructura para adaptarse correctamente a esas situaciones. Los modelos de arquitectura distribuida propuestos por las bases de datos No-SQL promueven el crecimiento horizontal de nuestra infraestructura.

Modelo de datos flexible

Unos zapatos, una camiseta o libros son todos ellos un producto y como tal deberían ser tratados como el mismo tipo de contenido, pero con información diferente. Las bases de datos basadas en documentos nos dan esa flexibilidad por defecto sin tener que diseñar “creativas alternativas” para conseguir nuestro objetivo. Esto hace que nuestro modelo de datos sea más sencillo y se reduzca el número de conjuntos de datos a mantener.

No tener un esquema de datos fijo facilita la evolución y adaptación de la información que almacenamos conforme el producto requiera, evitando costosas operaciones de migración o rellenado de información, que no harían sino demorar los tiempos de lanzamiento de nuestro producto.

Integración con sistemas de análisis de datos

Dada la gran capacidad para realizar operaciones de lectura y el momento de auge que viven estas tecnologías, desde el principio se han enfocado a las necesidades actuales del mercado. Por eso, ofrecen muchas facilidades para integrarse con sistemas de análisis y procesamiento de datos que nos permiten conocer y aprender de nuestros usuarios para ofrecerles el mejor servicio posible. Algunas de las integraciones más comunes son con Spark, Kafka, Kibana… y todo lo que ello conlleva, por ejemplo, hacer uso de librerías de Machine Learning.

Tecnologías para catapultar nuestro CMS

Couchbase Server

 

De un tiempo a esta parte Couchbase ha estado experimentando una gran acogida en el mercado posicionándose como un producto de referencia para diferentes casos de uso, en concreto el que comentamos en esta ocasión. Claves en este éxito son:

  • Modelo de datos versátil. Se puede utilizar como clave-valor, binarios u orientada a documentos JSON.
  • Incluye por defecto una caché tipo memcached, nos evita tener que incluir esa capa en la arquitectura nosotros mismos.
  • Operaciones Map-Reduce ejecutadas en el propio servidor.
  • Gran rendimiento en escrituras masivas de datos.
  • Escalado horizontal con “un sólo clic”.
  • N1QL, un lenguaje de consultas casi idéntico a SQL.

 

Elastic

Elastic surgió con la creación de Elastic Search y la evolución de todo un ecosistema de aplicaciones destinado a convertirse en uno de los principales stacks tecnológicos para el almacenamiento y explotación de datos en tiempo real. Lo han conseguido gracias a diversos motivos, pero cabe destacar su simplicidad, transparencia y flexibilidad. Bajo este ecosistema podríamos:

  • Consultar datos estructurados, sin estructurar o realizar búsquedas geoespaciales.
  • Escalar horizontalmente de manera sencilla y cómoda conforme crezca la demanda.
  • Realizar búsquedas semánticas como parte integrada del producto.
  • Gracias a X-Pack, beneficiarnos del componente Graph para exprimir las relaciones entre los documentos almacenados. De esta manera podríamos ofrecer contenido recomendados por otros usuarios, o contenidos relacionados.
  • Extender su funcionalidad, si fuera necesario, gracias al sistema de plugins que ofrece.

 

MongoDB

MongoDB es uno de los principales productos del mercado, de extensa popularidad y empleado por miles de empresas en todo el mundo. Entre sus principales ventajas destacan:

  • Consistencia fuerte de datos, nos permite tener la última versión del dato.
  • Escalabilidad y rendimiento mediante ReplicaSet o con Sharding.
  • Framework de agregación para realizar operaciones complejas sobre datos.
  • Business Intelligence Connector. El conector se encarga de traducir consultas SQL y devolver los resultados a la plataforma de BI elegida (QlikQ, Tableau, MicroStrategy…).
  • MongoDB Atlas: Es una base de datos MongoDB as a Service. Nos ofrece las principales bondades de MongoDB pero eliminando de la ecuación los trabajos de infraestructura.

 

Estas son algunas de las opciones más conocidas, pero no son las únicas (Neo4J, ArangoDB, Postgres NoSQL…), conviene estudiar en cada caso cuál se adapta mejor a nuestras necesidades concretas.

Si estás buscando una solución flexible, que permita que tu negocio crezca y evolucione rápidamente, que tenga gran rendimiento y que agilice los tiempos de desarrollo, debes explorar alguna de las opciones mencionadas.

Estas son algunas de las opciones más conocidas, pero no son las únicas (Neo4J, ArangoDB, Postgres NoSQL, OrientDB…), conviene estudiar en cada caso cuál se adapta mejor a nuestras necesidades concretas.

Si nos encontramos en una situación donde la importancia radica en el acceso al dato y la forma de acceder al mismo es conocida, nuestra solución debe ser MongoDB o Couchbase. Si queremos hacer análisis de datos en tiempo real, necesitamos ciertas funcionalidades de grafos o búsquedas MongoDB nos va a aportar cuanto necesitamos.

Por contra, si el equipo de desarrollo tiene experiencia con SQL, se realizan inserciones masivas o se va a requerir una infraestructura muy ambiciosa nos deberíamos decantar por Couchbase. Por poner otro ejemplo, en el contexto de una tienda online con un gran catálogo y unos requerimientos de búsqueda exigentes para facilitar el descubrimiento de productos por parte de los clientes, la mejor solución sería utilizar las herramientas que pone a nuestra disposición Elastic.

Si estás buscando una solución flexible, que permita que tu negocio crezca y evolucione rápidamente, que tenga gran rendimiento y que agilice los tiempos de desarrollo, debes explorar alguna de las opciones mencionadas.

Escribe un comentario