Última actualización: 21/05/2023
En esta entrada explicaremos las características de las bases de datos NoSQL y sus diferencias con las bases de datos relacionales. Además, veremos sus ventajas y algunas recomendaciones para determinar cuándo y cómo elegir la mejor base de datos NoSQL.
Contenidos
NoSQL vs Relacional (SQL)
Muchos se preguntan las diferencias que existen entre bases de datos SQL, también llamadas relacionales y bases de datos NoSQL.
Las bases de datos relacionales o RDBMS se usan generalmente para almacenar datos estructurados, en los que su formato, esquema, tipos y relaciones son fijas y sufren pocos cambios. Cada columna, define un aspecto del registro.
Estas bases de datos son muy útiles para implementar operaciones transaccionales y garantizar las propiedades ACID. Por ejemplo, son muy usadas en el sector financiero para almacenar registros de transacciones con seguridad y consistencia.
Algunos ejemplos de bases de datos relacionales o SQL son SQL Server, MySQL, PostgreSQL, DB2 y Oracle.
Las bases de datos NoSQL han venido para quedarse. Simplemente son capaces de aportar unas características de escalabilidad y flexibilidad que las bases de datos tradicionales no han podido satisfacer de forma sencilla. NoSQL significa no solo SQL (not only SQL).
Tipos de bases de datos NoSQL
Las bases de datos NoSQL se suelen clasificar en función de las estructuras de datos que usan en su capa de almacenamiento. A continuación voy a describir los 4 tipos más comunes:


Documental
Estas bases de datos almacenan datos autocontenidos llamados documentos. Cada documento puede definir su propio esquema. Estos documentos generalmente tienen formato JSON. Asignan a cada documento un identificador único y no es necesario definir relaciones entre ellos.
Algunos ejemplos de Base de datos NoSQL de tipo documental son MongoDB, CouchDB y DynamoDB.
Clave-valor


Estas bases de datos tampoco tienen un esquema de datos predefinido. Se asimilan al concepto de array o map persistente y a las bases de datos con dos columnas, la primera es la clave y la segunda el valor del registro. Los valores pueden tomar el tipo de dato que sea necesario, incluso JSON.
La ventaja de estas bases de datos es su gran velocidad de lectura y de escritura debido a su estructura. La desventaja es su poca capacidad para filtrar la información en las consultas.
Algunos ejemplos de Base de datos NoSQL de tipo clave-valor son DynamoDB, Redis.
Tabular


Estas bases de datos orientadas a columnas organizan los datos de esta forma en vez de en filas y almacenan cada columna de forma separada. De esta forma, es muy sencillo y eficiente añadir nuevas columnas y realizar operaciones de búsqueda sobre ellas. Estas bases de datos usan el concepto de espacio de claves que contiene todas las familias de columnas. Dentro de una familia de columnas, el número de columnas de cada fila puede variar
Son muy populares en sistemas de analítica ya que funcionan de forma similar a lo que lo harían las tablas en bases de datos relacionales. Además, aportan una excelente escalabilidad y una compresión eficiente de los datos. Por otro lado, estas bases de datos son poco eficientes al consultar filas individuales y registros repartidos en varias columnas.
Algunos ejemplos de Base de datos NoSQL de tipo tabular son Cassandra, HBase, Druid o BigTable.
Grafo


En estas bases de datos, los registros son almacenados con una estructura en forma de grafo. Las relaciones interconectan los datos entre sí y los distribuyen.
Su estructura consiste en dos componentes principales. Los nodos son los datos en sí mismos y los enlaces o aristas explican las relaciones entre dos nodos. Estos enlaces también pueden contener información como la naturaleza de la relación o incluso dirección para describir el flujo.
Algunos ejemplos de Base de datos NoSQL de tipo grafo son Neo4J, DEX, InfiniteGraph.
Cuándo elegir una base de datos NoSQL
Debemos recordar que las bases de datos NoSQL no dejan de lado el lenguaje SQL, sino que es posible que lo sacrifiquen en su totalidad o parcialmente para conseguir estas ventajas tan interesantes.
Por lo general, las bases de datos NoSQL escalan horizontalmente de forma barata y muy sencilla, simplemente añadiendo mas nodos de almacenamiento al sistema. También, tienen un esquema dinámico, frente al esquema fijo característico de las bases de datos relacionales.
Por otro lado, satisfacer las propiedades ACID en las bases de datos SQL es más sencillo que en las bases de datos NoSQL. Estas por lo general ofrecerán consistencia eventual.
Deberás considerar una solución NoSQL en el caso de que tengas que satisfacer consultas sencillas y bien conocidas, con patrones de acceso constantes y en aplicaciones de tipo OLTP. En el caso de necesitar consultas complejas con multitud de joins puedes considerar soluciones SQL.
Recomendaciones para seleccionar una base de datos NoSQL
Ten en cuenta las siguientes recomendaciones para seleccionar una base de datos NoSQL para tu proyecto y saca todo el partido de su escalabilidad y disponibilidad en el ámbito del Big Data.


Puedes usar la infografía que te dejo a continuación como resumen de los pasos para seleccionar correctamente tu base de datos NoSQL.
1. Requisitos de rendimiento y latencia
Los tiempos de respuesta de las bases de datos que son mayores a 100 milisegundos se suelen percibir como lentos por el usuario.
Por lo tanto, es necesario considerar y comprender las demandas que se impondrán sobre la base de datos en cuanto a latencias y volumen.
2. Define los objetivos
Es importante concretar la función específica de la base de datos dentro de tu proyecto, así como la naturaleza de los datos y la manera en la que se insertarán y consultarán.
3. Evalúa el teorema CAP
El teorema CAP permite distinguir el comportamiento de una base de datos o un sistema distribuido ante una partición, por ejemplo una falta de conectividad entre sus componentes. Ante esta situación, la base de datos puede optar por la consistencia o la disponibilidad, pero no ambas simultáneamente.
4. Considera un servicio gestionado
Algunos proveedores en la nube como pueden ser Microsoft Azure o AWS (Amazon) pueden facilitar las bases de datos como servicio gestionado, permitiendo reducir el tiempo empleado en su mantenimiento por un coste adicional.
5. Decide el modo de implementación
Considera los siguientes factores para tomar una decisión en el modo de implementación de la base de datos:
- Disponibilidad de la imagen Docker
- Escalabilidad en PaaS (Platform as a Service)
- La compatibilidad que tiene con los proveedores cloud como Azure o AWS
Conclusión Bases de Datos NoSQL
Los arquitectos de datos deben evaluar con detenimiento qué solución de base de datos es adecuada para cada caso de uso. Las opciones NoSQL cada vez están más presentes en sistemas modernos, por sus capacidades de escalabilidad y la flexibilidad que proporcionan.
Siguientes Pasos y Cursos NoSQL
También, te recomiendo realizar alguno de estos cursos para conocer más acerca de las bases de datos NoSQL y profundizar en alguna de las tecnologías más utilizadas, como MongoDB o DynamoDB. Estoy seguro de que te resultarán muy útiles en tu carrera profesional.
Este curso de Coursera está impartido por IBM. Explica los conceptos técnicos de bases de datos NoSQL desde cero. También aprenderás sobre las 4 categorías de bases de datos SQL y sus características y ejemplos. Por último, te explicará nociones de herramientas de administración para realizar consultas, replicación, índices, particionado y permisos.
Amazon DynamoDB: Creando aplicaciones NoSQL
Curso ofrecido por AWS en Coursera con más de 10 horas de contenido sobre DynamoDB. Aprende los conceptos teóricos y prácticos más importantes que necesitarás para implementar soluciones NoSQL en AWS. Incluye conceptos de recuperación, SDKs, claves de partición, seguridad y cifrado, tablas globales, aplicaciones stateless, streams y mejores prácticas.
Curso de MongoDB – Aprende bases de datos NoSQL
Curso de MongoDB completo en Español disponible en Udemy. Domina esta tecnología NoSQL desde cero y su integración con NodeJS, Express.js y Mongoose.
Preguntas Frecuentes NoSQL – FAQ
¿Qué es NoSQL?
NoSQL (Not Only SQL) es la denominación que se le da al grupo de bases de datos que manejan datos no estructurados o semiestructurados, al contrario que las bases de datos relacionales o SQL, que trabajan con datos estructurados y requieren un esquema. Además, pueden no usar SQL como lenguaje de consulta.
¿Cuándo debería usar bases de datos NoSQL?
Debes evaluar las soluciones de bases de datos NoSQL frente a las bases de datos relacionales cuando tus datos sean no estructurados o semiestructurados. También, cuando necesites escalabilidad horizontal en tu sistema y una gran capacidad de crecimiento.
He creado un nuevo vídeo-resumen con las claves para seleccionar tu base de datos NoSQL.