Las bases de datos NoSQL son bases de datos (BBDD) no relacionales, pensadas para aplicaciones que necesitan baja latencia y modelos flexibles para gestionar grandes volúmenes de datos. Incluyen una amplia variedad de tecnologías de BBDD diseñadas para cumplir con los requisitos de desarrollo de las aplicaciones modernas —que generan constantemente enormes cantidades de datos nuevos—.
La migración de bases de datos relacionales a no relacionales está muy motivada por el crecimiento constante del número de usuarios de Internet y el crecimiento exponencial del número de dispositivos interconectados, entre otras tendencias.
Bases de datos NoSQL
Aunque estas bases de datos existen desde los años 60, el término «NoSQL» se acuñó a principios del siglo XXI con el crecimiento exponencial de los datos a raíz de la Web 2.0. Ya que el aumento de la cantidad de datos generados por los usuarios en todo el mundo requería nuevas formas de gestionar los datos en las BBDD.
NoSQL es la abreviatura de «Not only SQL». Es decir, la mayoría de las bases de datos NoSQL no usan el lenguaje SQL para consultas, o lo usan como un lenguaje secundario.
Las bases de datos no relacionales ofrecen una arquitectura distribuida que permite almacenar información en casos en los que las bases de datos relacionales no son capaces de ofrecer el rendimiento y la escalabilidad necesarios. Al contrario que las BBDD relacionales, no usan estructuras fijas. En su lugar, usan diversas estructuras de datos flexibles, como los pares de clave-valor o los grafos, para el almacenamiento y la recuperación de datos.
Características y ventajas principales
Mientras que las bases de datos relacionales están optimizadas para almacenar datos, reduciendo la redundancia, las BBDD NoSQL están optimizadas para ofrecer escalabilidad horizontal y desarrollo ágil. Estas son algunas de las principales características y ventajas (comparado con las BBDD relacionales) de las bases de datos NoSQL:
- Estructuras de datos flexibles, en lugar de las relaciones tabulares estándar.
- Baja latencia.
- Escalabilidad horizontal.
- Gran número de usuarios simultáneos.
- Optimizado para grandes volúmenes de datos —ya sean estructurados, semiestructurados o sin estructurar.
- Arquitectura distribuida que permite gestionar grandes cantidades de datos.
- Adaptadas a sprints de desarrollo ágil.
- Mayor rendimiento, velocidad y escalabilidad.
Tipos de bases de datos NoSQL
Estos son los principales tipos de BBDD NoSQL.
Bases de datos de clave-valor
Las BBDD de clave-valor destacan por ser muy eficientes tanto para lectura como para escritura. Cada elemento está identificado por una clave única que permite recuperar datos rápidamente. Los datos suelen estar almacenados como objetos binarios
Ejemplos de bases de datos de clave-valor: Redis, CouchDB y BigTable.
Bases de datos documentales
Las BBDD documentales o bases de datos orientadas a documentos son las bases de datos NoSQL más versátiles y se pueden usar en una amplia gama de proyectos. Permiten realizar consultas más avanzadas sobre el contenido de un documento, además de consultas de clave-valor. Se apoyan en estructuras simples como JSON o XML.
Ejemplos de bases de datos documentales: Elastichsearch y MongoDB.
Bases de datos orientadas a grafos
Las BBDD orientadas a grafos o bases de datos en grafo ofrecen una experiencia de búsqueda más eficiente entre relaciones, respecto a las bases de datos relacionales. Este modelo usa estructuras de grafos para consultas semánticas y representa los datos como nodos, bordes y propiedades.
Ejemplos de bases de datos orientadas a grafos: FlockDB, InfiniteGraph y OpenLink Virtuoso.
Bases de datos tabulares
Las BBDD tabulares ofrecen una solución híbrida entre los sistemas de bases de datos (DBMS) tabulares y los de clave-valor. Usa un formato tabular que permite variar cómo se nombran y formatean los datos en cada fila dentro de la misma tabla. Este tipo de BBDD NoSQL acelera las consultas al almacenar los datos en columnas.
Ejemplos de bases de datos tabulares: HBase, BigTable y Cassandra.
Bases de datos orientadas a objetos
Las BBDD orientadas a objetos combinan las capacidades de las bases de datos con las de los lenguajes de programación orientados a objetos. Los datos se representan en forma de objetos.
Ejemplos de bases de datos orientadas a objetos: Db40, GemStone/S y Realm.
Bases de datos NoSQL o no relacionales
MongoDB
MongoDB es un DBMS de código abierto, NoSQL y orientado a documentos. MongoDB Inc. ofrece una suite integrada de servicios cloud de bases de datos, así como soporte comercial. Se suele usar para almacenar grandes volúmenes de datos.
Desarrollador: MongoDB Inc.
Última actualización de MongoDB: MongoDB 6.0.1.
Licencia de MongoDB: Licencia pública del lado del servidor (SSPL).
Redis
Redis, abreviatura de «Remote Dictionary Server», es un sistema de gestión de bases de datos de código abierto, NoSQL de clave-valor.
Desarrollador: Redis.
Autor original: Salvatore Sanfilippo.
Última actualización de Redis: Redis 7.0.7.
Licencia de Redis: BSD de 3 cláusulas.
ObjectDB
ObjectDB es un DBMS orientado a objetos, multiplataforma. Requiere usar una de las APIS estándar de Java: JPA (Jakarta Persistence) o JDO (Java Data Objects). Está pensado para proporcionar un mejor rendimiento y aplicaciones más rápidas. Además, se presenta como la opción más productiva para desarrollar aplicaciones de BBDD Java usando la API Java Persistence.
Desarrollador: ObjectDB Software.
Última actualización de ObjectDB: ObjectDB 2.8.8.
Licencia de ObjectDB: propietaria.
BigTable
BigTable es un sistema de gestión de bases de datos completamente gestionado, de clave-valor y tabular. Está diseñado para grandes cargas de trabajo analíticas y operativas. Forma parte del portfolio de Google Cloud y, como tal, se utiliza en muchas de las aplicaciones de Google como Google Analytics, Google Maps o Gmail.
Desarrollador: Google.
Lanzamiento inicial de BigTable: 2005.
Licencia de BigTable: propietaria.
DynamoDB
DynamoDB o Amazon DynamoDB es un DBMS de clave-valor y documental, multiplataforma. Forma parte del portfolio de Amazon Web Services.
Desarrollador: Amazon.
Lanzamiento inicial de DynamoDB: 2012.
Licencia de DynamoDB: propietaria.
Cassandra
Cassandra o Apache Cassandra es un DBMS gratuito, de código abierto y tabular —modelado a partir de BigTable—. Está diseñado para soportar grandes volúmenes de datos y garantizar alta disponibilidad sin puntos únicos de fallo. Inicialmente se desarrolló para impulsar la búsqueda en la bandeja de entrada de Facebook.
Desarrollador: Apache Software Foundation.
Autores originales: Avinash Lakshman y Prashant Malik mientras trabajaban en Facebook.
Última actualización de Cassandra: Cassandra 4.1.0.
Licencia de Cassandra: Licencia Apache 2.0.
HBase
HBase o Apache HBase es un sistema de gestión de bases de datos tabular, de código abierto. Al igual que Cassandra, está modelado a partir de BigTable. Está pensado para proporcionar una forma tolerante a fallos de almacenar grandes cantidades de datos dispersos. HBase forma parte del proyecto Hadoop de Apache.
Desarrollador: Apache Software Foundation.
Autor original: Powerset.
Última actualización de HBase: HBase 2.4.14.
Licencia de HBase: Licencia Apache 2.0.
Elasticsearch
Elasticsearch es un motor de analíticas y búsqueda RESTful, basado en la librería Lucene. Elasticsearch es el sucesor de un motor de búsqueda anterior llamado Compass, también diseñado por Shay Banon.
Desarrollador: Elastic NV.
Autor original: Shay Banon.
Última actualización de Elasticsearch: Elasticsearch 8.5.0.
Licencia de Elasticsearch: Licencia dual bajo la licencia Elastic y Licencia pública del lado del servidor.
CouchDB
CouchDB o Apache CouchDB es un DBMS de clave-valor, de código abierto. Está optimizado para usarlo en dispositivos móviles gracias a sus capacidades de sincronización y replicación. Permite trabajar offline mientras la conexión de red no está disponible.
Desarrollador: Apache Software Foundation.
Autores originales: Damien Katz, Jan Lehnardt, Naomi Slater, Christopher Lenz, J. Chris Anderson, Paul Davis, Adam Kocoloski, Jason Davies, Benoît Chesneau, Filipe Manana y Robert Newson.
Última actualización de CouchDB: CouchDB 3.2.2.
Licencia de CouchDB: Licencia Apache 2.0.
InfiniteGraph
InfiniteGraph es un DBMS orientado a grafos, multiplataforma, escalable y habilitado para la nube. Está pensado para soportar un rendimiento alto y optimizado para grandes conjuntos de datos, altamente conectados y complejos.
Desarrollador: Objectivity, Inc.
Licencia de InfiniteGraph: propietaria.
Zope Object Database
Zope Object Database (ZODB) es un sistema de gestión de BBDD orientado a objetos. Está diseñado para almacenar objetos Python de modo transparente y persistente. Aunque está incluido en el servidor de aplicación web de Zope, también se puede usar de forma independiente.
Desarrollador: Zope Foundation.
Última actualización de Zope Object Database: ZODB 5.6.0.
Licencia de Zope Object Database: Licencia Pública Zope.
Comparación rápida de bases de datos NoSQL
BBDD NoSQL | Tipo | Licencia | Escrito en |
MongoDB | Base de datos documental | Licencia pública del lado del servidor | C++, JavaScript y Python |
Redis | Base de datos de clave-valor | BSD de 3 cláusulas | C |
ObjectDB | Base de datos orientada a objetos | Propietaria | Java |
BigTable | Base de datos tabular y de clave-valor | Propietaria | C++, Go, Java, Python y Ruby |
DynamoDB | Base de datos de clave-valor y documental | Propietaria | Java |
Cassandra | Base de datos tabular | Licencia Apache 2.0 | Java |
HBase | Base de datos tabular | Licencia Apache 2.0 | Java |
Elasticsearch | Base de datos documental | Licencia dual bajo la licencia Elastic y Licencia pública del lado del servidor | Java |
CouchDB | Base de datos de clave-valor | Licencia Apache 2.0 | C, C++, Erlang y JavaScript |
InfiniteGraph | Base de datos en grafo | Propietaria | C++ y Java |
Zope Object Database | Base de datos orientada a objetos | Licencia Pública Zope | Python |