Durante la última década hemos visto el nacimiento de un nuevo tipo de bases de datos, conocidas bajo la denominación 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í.
¿Que es NoSQL?
NoSQL o «No solamente SQL» (Not Only SQL) es un término acuñado por Carlo Strozzi en 1998 y nuevamente retomado por Eric Evans en 2009.
El término NoSQL no es una base de datos y tampoco un tipo de base de datos, sino una definición que engloba un conjunto de tipos de bases de datos que difiere con las bases de datos convencionales.
- Es un conjunto de bases de datos que se diferencian en gran parte de las bases de datos convencionales, en características tanto de uso como de implementaciòn.
Tipos de bases de datos NoSQL.
Dada la diversidad de tecnologías NoSQL, habitualmente se clasifican en cuatro grupos, por su forma de modelar los datos:
- 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. Se suelen usar generalmnte como cachés de cualquier conjunto de información que se pueda recuperar por una clave. Algunos ejemplos son Redis, Riak o Aerospike.
- 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. Dentro de este grupo tenemos tecnologías como: MongoDB, CouchDB o CouchBase entre otras.
- Orientadas a Grafos: El modelo de datos se centra en entidades y las relaciones entre éstas. 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.
- Orientadas a Columnas: Este tipo de bases de datos son similares a una tabla en las bases de datos relacionales. Son ideales para realizar consultas y agregaciones sobre grandes cantidades de datos. En este grupo encontramos ejemplos como Cassandra o HBase.
Un tipo de base de datos no sirve de nada sino tiene un sistema que lo gestione, a menos que desees crear un SGBD.
En NoSQL hay una basta gama de SGBD, y la mayoría están bajo licencia de código libre.
Lista de SGBD NoSQL
- Bases de datos documental
◦ MongoDB ▪ Lanzamiento: 2008 ▪ Licencia: GNU AGPL v3.0
◦ CouchDB ▪ Lanzamiento: 2005 ▪ Licencia: Apache License 2.0
◦ Raven DB ▪ Lanzamiento: 2010 ▪ Licencia: GNU AGPL v3.0
- Bases de datos clave/valor
◦ Apache Cassandra ▪ Lanzamiento: 2008 ▪ Licencia: Apache License 2.0
◦ Riak ▪ Lanzamiento: 2009 ▪ Licencia: Apache License 2.0
◦ Redis ▪ Lanzamiento: 2009 ▪ Licencia: BSD
- Bases de datos en grafos
◦ Neo4j ▪ Lanzamiento: 2009 ▪ Licencia: GNU AGPL v3.0
◦ Dex ▪ Lanzamiento: 2008 ▪ Licencia: Comercial
◦ Sones GraphDB ▪ Lanzamiento: 2012 ▪ Licencia: GNU AGPL v3.0 y comercial
¿Por qué usar NoSQL?
En esta época donde se generan cantidades enormes de datos menos estructurados, las bases de datos relacionales empiezan a mostrar deficiencias, en almacenamiento u operaciones.
En la actualidad gestionar una cantidad de datos gigantesca no es tan sencillo si piensas en estructuras.
NoSQL permite escalar horizontalmente de manera sencilla sin tantos problemas de rendimiento. La velocidad de desarrollo y la velocidad de la base de datos son puntos a favor para las bases de datos no relacionales, reduciendo el tiempo de desarrollo evitando complejas sentencias SQL y además aumentando la velocidad de respuestas para los clientes.