¿Qué es NoSQL?
Las bases de datos NoSQL (también conocidas como “no solo SQL“) almacenan datos de manera diferente a las tablas relacionales. Existen distintos tipos de bases de datos NoSQL según su modelo de datos. Los tipos principales son documento, clave-valor, columna ancha y gráfico. Proporcionan esquemas flexibles y se escalan fácilmente con grandes cantidades de big data y cargas de usuario elevadas.
En este artículo, aprenderá qué es una base de datos NoSQL, por qué (¡y cuándo!) debería usar una y cómo comenzar.
Tabla de contenidos
- ¿Qué es una base de datos NoSQL?
- Tipos de bases de datos — NoSQL
- Breve historia de las bases de datos NoSQL
- Características de la base de datos NoSQL
- Ejemplo de base de datos relacional frente a base de datos NoSQL
- Diferencias entre las bases de datos RDBMS y NoSQL
- Casos de uso de NoSQL
- ¿Cuándo se debe emplear NoSQL?
- Conceptos erróneos sobre bases de datos NoSQL
- Tutorial sobre consultas NoSQL
- Resumen
- Preguntas frecuentes
¿Qué es una base de datos NoSQL?
Cuando la gente usa el término “base de datos NoSQL”, generalmente se refieren a cualquier base de datos no relacional. Algunos dicen que el término “NoSQL” significa “no SQL”, mientras que otros dicen que significa “no solo SQL”. De cualquier manera, la mayoría está de acuerdo en que las bases de datos NoSQL almacenan datos de una manera más natural y flexible. NoSQL, a diferencia de SQL, es un enfoque de administración de bases de datos, mientras que SQL es solo un lenguaje de consulta, similar a los lenguajes de consulta de las bases de datos NoSQL.
Tipos de bases de datos — NoSQL
Con el tiempo, surgieron cuatro tipos de bases de datos NoSQL: bases de datos de documentos, bases de datos clave-valor, almacenes de datos de columnas anchas y bases de datos de grafos. Hoy en día, las bases de datos multimodelo también se están volviendo bastante populares.
Bases de datos orientadas a documentos
Una base de datos orientada a documentos almacena datos en documentos similares a objetos JSON (JavaScript Object Notation). Cada documento contiene pares de campos y valores. Por lo general, los valores pueden ser de varios tipos, incluidos elementos como cadenas, números, booleanos, matrices o incluso otros objetos. Una base de datos de documentos ofrece un modelo de datos flexible, muy adecuado para conjuntos de datos semiestructurados y, por lo general, no estructurados. También admiten estructuras anidadas, lo que facilita la representación de relaciones complejas o datos jerárquicos.
Ejemplos de bases de datos de documentos son MongoDB y Couchbase. Un documento típico se verá como el siguiente:
x211{
2"ID": "12345",
3"nombre": "foo bar",
4"correo electrónico": "foo@bar.com",
5"dirección": {
6"street": "123 foo street",
7"city": "some city",
8"state": "some state",
9"zip": "123456"
10},
11"hobbies": ["música", "guitarra", "lectura"]
12}
13'''''
14
15### Bases de datos clave-valor
16
17Un almacén de clave-valor es un tipo más sencillo de base de datos en el que cada elemento contiene claves y valores. Cada clave es única y está asociada a un único valor. Se utilizan para el almacenamiento en caché y la administración de sesiones y proporcionan un alto rendimiento en lecturas y escrituras porque tienden a almacenar cosas en la memoria. Algunos ejemplos son Amazon DynamoDB y Redis. A continuación se ofrece una vista sencilla de los datos almacenados en una base de datos clave-valor:
18
19`````JSON
20Clave: user:12345
21Valor: {"name": "foo bar", "email": "foo@bar.com", "designation": "software developer"}
Almacenes de columnas anchas
Los almacenes de columnas anchas almacenan los datos en tablas, filas y columnas dinámicas. Los datos se almacenan en tablas. Sin embargo, a diferencia de las bases de datos SQL tradicionales, los almacenes de columnas anchas son flexibles, donde las diferentes filas pueden tener diferentes conjuntos de columnas. Estas bases de datos pueden emplear técnicas de compresión de columnas para reducir el espacio de almacenamiento y mejorar el rendimiento. Las filas y columnas anchas permiten una recuperación eficiente de datos dispersos y amplios. Algunos ejemplos de tiendas de columna ancha son Apache Cassandra y HBase. Un ejemplo típico de cómo se almacenan los datos en una columna ancha es el siguiente:
Nombre | ID | Fecha de nacimiento | Ciudad | |
---|---|---|---|---|
Foo bar | 12345 | foo@bar.com | Alguna ciudad | |
Carn Yale | 34521 | bar@foo.com | 12-05-1972 |
Bases de datos de grafos
Una base de datos de grafos almacena datos en forma de nodos y bordes. Los nodos suelen almacenar información sobre personas, lugares y cosas (como sustantivos), mientras que las aristas almacenan información sobre las relaciones entre los nodos. Funcionan bien para datos altamente conectados, donde las relaciones o patrones pueden no ser muy obvios inicialmente. Ejemplos de bases de datos de grafos son Neo4J y Amazon Neptune. MongoDB también proporciona capacidades de recorrido de grafos empleando la etapa $graphLookup del pipeline de agregación. A continuación se muestra un ejemplo de cómo se almacenan los datos: