Las bases de datos llevan muchos años ligadas a las aplicaciones informáticas. Sobre todo las bases de datos relacionales. Pero, desde hace poco años, se oye hablar mucho de las bases de datos NoSQL. ¿En qué consisten este nuevo paradigma para guardar la información?
Lo primero sería ver qué significa NoSQL. Viene de Not Only SQL -no solo SQL en inglés. O lo que es lo mismo: Not Only Structured Query Language. Fue nombrado así por Carlo Strozzi en 1998 y retomado por Eric Evans en 2009.
Como su propio nombre indica, no suelen utilizar el lenguaje SQL para manejar o consultar los datos que contienen. Tampoco siguen un esquema cerrado, por lo que son más flexibles. Están pensadas para ser más ágiles, así que son buenas con cantidades elevadas de datos o de operaciones.
Tabla de Contenidos
Ventajas de NoSQL
Si se han puesto de moda es, entre otras cosas, por las ventajas que aportan. También ha ayudado a darse a conocer, el que sean el compañero ideal de otras tecnologías en auge, como puede ser el Big Data.
Escalabilidad
Las bases de datos NoSQL, suelen estar diseñadas para ser escalables horizontalmente. Es decir, añadiendo más servidores al clúster. En cambio, las bases de datos SQL suelen escalar bien verticalmente: incrementando el espacio de almacenamiento o la capacidad de procesamiento de los servidores ya existentes.
Esto hace que sean más escalables, al poder aumentar indefinidamente el número de servidores del clúster. Mientras que si se aumentan las capacidades de los servidores ya existentes, estos tienen un límite de memoria, discos, etc.
Mejor manejo de los datos no estructurados
Las bases de datos NoSQL no requieren la existencia de una esquema o modelo predefinido, ya que no tienen por qué tener estructuras uniformes o homogéneas.
Por lo tanto, es el desarrollador o el diseñador de la base de datos el encargado de imponer las estructuras que necesite.
Bueno para Big Data
La mayoría de bases de datos relaciones se basan en las mismas características, hay poca variedad de estructuras. En cambio, en las bases de datos NoSQL, existen cuatro tipos pincipalmente: clave-valor, columnar, documental y triple stores (sujeto-predicado-objeto). Entre estos tipos puedes elegir la que más se ajuste a tus necesidades.
Costes eficientes en escalabilidad y mantenimiento
En cuanto a costes se refiere, la escalabilidad horizontal es más eficiente que la vertical en general. Se puede añadir nuevos servidores de bajo coste, en vez de actualizar servidores de alta calidad y capacidad de procesamiento.
Flexibilidad del modelo de datos
Los RDBMS -relational database management system- son muy engorrosos cuando hay que cambiar algo de su configuración. El mínimo cambio debería ser cuidadosamente monitorizado y conlleva un tiempo de parada o ralentización del servicio. Mientras que las bases de datos NoSQL permite una relativa flexibilidad en los cambios.
Lenguaje NoSQL
Las bases de datos NoSQL soportan sus propios lenguajes para interpretar los datos que contienen. No es necesario ser un maestro de SQL para llevar a cabo consultas complejas.
Open source
Muchas de estas bases de datos suelen ser gratuitas y se puede encontrar mucha documentación y aportaciones de la comunidad.
Tipos de bases de datos NoSQL
Bases de datos orientadas a documentos
El elemento básico de estas bases de datos, es lo que se llama documento. En otros sistemas, podría equivaler de alguna manera a objeto, registro o tupla.
Se suelen basar en JSON o BSON, pudiendo variar la estructura de los documentos que contenga. En otras palabras, cada documento contendrá un conjunto de pares de clave y valor. Pero no todos los documentos tendrán las mismas claves ni los mismos tipos (cadena, entero decimal, etc.) de valor para una misma clave.
Cuando se habla de este tipo, se suelen destacar las siguientes bases de datos clave-valor.
- MongoDB
- CouchDB
- RavenDB
Bases de datos orientadas a clave / valor
Este tipo de base de datos es bastante similar a la anterior. Los datos también se almacenan en formato JSON normalmente. Este JSON actúa de valor, por lo que cada clave tendrá asociado un JSON con los datos. Esta clave se podría entender con el id o clave primaria del registro.
Las más conocidas son las siguientes.
- Apache Cassandra
- Riak
- Redis
Bases de datos orientadas a grafos
Este tipo de base de datos NoSQL ya es un poco distinto. Se basa en la teoría de grafos. Cada nodo del grafo sólo puede contener una columna, así que los datos deben estar totalmente normalizados.
Las relaciones entro los nodos sólo pueden ser binarias, así que cada nodo sólo puede tener una única relación con otro nodo. Por estas características, estas bases de datos suelen estar enfocadas a la integridad de los datos.
Algunas de las más populares son estas.
- Neo4j
- Dex
- Sones GraphDB