Durante la última década hemos visto el nacimiento de un nuevo tipo de bases de datos, conocidas bajo la denominación NoSQL. Las bases de datos relacionales han dominado el mundo de la gestión de datos desde la década de los 70, pero el nacimiento de Internet y su auge como plataforma de aplicaciones ha puesto a prueba el dominio de las soluciones relacionales.

El volumen de datos al que debe hacer frente una aplicación web ha crecido exponencialmente durante los últimos años, así como el número de usuarios que utiliza las aplicaciones y servicios disponibles en Internet, y en consecuencia el volumen de transacciones y la demanda a la que se ven sometidas, ya que los usuarios esperan un tiempo de respuesta inmediato en sus interacciones online con el website.

Tipos de bases de datos NoSQL

Las tecnologías NoSQL han evolucionado para dar respuesta a distintos problemas, y aunque tienen muchos aspectos en común, también son muy diferentes entre sí. Dada la diversidad de tecnologías NoSQL, habitualmente se clasifican en cuatro grupos, por su forma de modelar los datos:

  1. Bases de datos Clave-Valor: Tienen el modelo de datos más sencillo de todos, una clave indexada asociada a un valor, que desde el punto de vista de la base de datos es información opaca que simplemente almacena y recupera asociada a la clave. El consumidor de esta información es responsable de conocer la estructura de la información almacenada.
  2. Están diseñadas para escalar masivamente manteniendo un tiempo de respuesta muy rápido y disponibilidad total. Se suelen usar para almacenar información de sesión, preferencias o perfiles de usuario, carritos de la compra y en general como cachés de cualquier conjunto de información que se pueda recuperar por una clave. Algunos ejemplos son Redis, Riak o Aerospike.
  3. Orientadas a Documento: Utilizan el modelo de documento, mayoritariamente en formato JSON, para almacenar y consultar información. Permiten gestionar información con complejas estructuras jerárquicas, y ofrecen índices secundarios y completos lenguajes de consulta y agregación de datos. Esto unido a la flexibilidad del esquema de datos las convierten en las más versátiles y de propósito general. Dentro de este grupo tenemos tecnologías como MongoDB, CouchDB o CouchBase entre otras.
  4. Orientadas a Grafos: El modelo de datos se centra en entidades y las relaciones entre éstas. Tanto las entidades (nodos del grado) como las relaciones (aristas) pueden además tener atributos. Una entidad puede tener numerosas relaciones con cualquier otra entidad. Recorrer las uniones entre entidades a través de estas relaciones es el fuerte de las bases de datos orientadas a grafos, y permiten hacerlo con gran velocidad, independientemente del volumen de datos, lo que posibilita explorar conexiones entre entidades que de otra forma sería muy difícil con las bases de datos relacionales. El caso de uso más conocido de este tipo de bases de datos son las redes sociales. Ejemplos de esta tecnología son Neo4j, OrientDB o Titan.
  5. Orientadas a Columnas: Este tipo de bases de datos son similares a una tabla en las bases de datos relacionales, de hecho derivan en su mayoría del modelo BigTable publicado por Google, pero un registro puede contener cualquier número de columnas (o familias de columnas). Son ideales para realizar consultas y agregaciones sobre grandes cantidades de datos cuando éstas se pueden determinar previamente y no cambian con frecuencia. En este grupo encontramos ejemplos como Cassandra o HBase.

Conclusión

La selección de la tecnología de almacenamiento adecuada involucra la consideración de numerosos aspectos. Aunque el rendimiento suele ser el factor más importante, es necesario considerar aspectos como la funcionalidad, la facilidad de operación, sencillez de uso, disponibilidad de profesionales con conocimiento, seguridad, y otros factores como la existencia de herramientas y una comunidad que respalde el producto.

Cada vez con más frecuencia estamos viendo cómo las tecnologías NoSQL forman parte de la solución en proyectos empresariales, gracias a beneficios como la mejora en la productividad de los equipos de desarrollo, y la posibilidad de llegar antes al mercado y con una considerable reducción del TCO.

Es importante resaltar que tal y como dice la denominación "NoSQL", Not Only SQL ("no sólo SQL"), las tecnologías NoSQL no tienen porqué ser la única pieza en el almacenamiento de datos de una solución, sino que frecuentemente estarán acompañadas de bases de datos SQL, que todavía tienen un futuro asegurado, e incluso en combinación con otras bases de datos NoSQL, situación que se ha bautizado como “Polyglot Persistence”.

Con la reciente explosión de arquitecturas basadas en microservicios, cada vez más veremos cómo cada servicio encapsula su propia solución de gestión de datos, haciendo uso en la mayoría de las ocasiones de alguna de las tecnologías NoSQL disponibles.

Cuéntanos qué te parece.

Los comentarios serán moderados. Serán visibles si aportan un argumento constructivo. Si no estás de acuerdo con algún punto, por favor, muestra tus opiniones de manera educada.

Suscríbete

Estamos comprometidos.

Tecnología, personas e impacto positivo.