¿Qué es una Base de Datos no relacional? (Definición, Usos) 📚

¿Qué es una Base de Datos no relacional?

Las bases de datos no relacionales (bases de datos NoSQL) son almacenes de datos que no tienen esquemas o tienen esquemas relajados que permiten cambios en la estructura de datos.

En una base de datos no relacional, un fragmento de datos almacenado puede tener campos o atributos diferentes del fragmento de datos que se encuentra junto a él en la misma base de datos. Si imagina una hoja de cálculo de sabores de helado, sabrá que cada fila tendrá aproximadamente el mismo aspecto. Habrá una columna para el nombre del sabor del helado, una columna para la marca, una columna para los ingredientes, etc. Cada fila de la hoja de cálculo tendrá algún valor para cada una de estas columnas.

Una base de datos no relacional no tiene por qué adoptar esta forma en absoluto. Una entrada de sabor de helado puede tener información sobre la receta ganadora, otra puede tener una lista de celebridades que han incluido ese sabor como su favorito y una tercera puede tener notas de cata. En resumen, hay mucha más flexibilidad al almacenar datos en una base de datos no relacional.

¿Por qué utilizar una base de datos no relacional? 

Las bases de datos no relacionales son realmente útiles cuando hay muchas incógnitas sobre exactamente qué datos necesita almacenar, o cuando hay un gran volumen de datos que pueden contener diferentes atributos pero que aún necesita comparar uno al lado del otro.

¿Qué base de datos no relacional debo utilizar?

Al igual que cualquier otra herramienta que seleccione para una aplicación, es importante elegir la base de datos adecuada para reducir la latencia, la complejidad, la estabilidad y el precio. También es algo a considerar preparar la aplicación para el futuro, ya que las bases de datos escalan de manera diferente. Por ejemplo, las bases de datos no relacionales son conocidas por escalar bien horizontalmente y adaptarse mejor a sistemas distribuidos que las bases de datos relacionales. Escalar horizontalmente significa agregar más máquinas, mientras que escalar verticalmente significa agregar más potencia de procesamiento a la máquina existente. Con la llegada de la infraestructura en la nube, que brinda la capacidad de poner en marcha servidores adicionales de forma relativamente económica y sencilla, las bases de datos no relacionales tienen una clara ventaja.

¿Cuál es la diferencia entre una base de datos relacional y no relacional?

Para comprender mejor qué es una base de datos no relacional, resulta útil aclarar qué es una base de datos relacional. Las bases de datos relacionales son una forma de almacenar datos que dependen de que cada parte de esos datos esté estructurada de una manera específica (generalmente usando tablas como nuestra hoja de cálculo hipotética de helado anterior). Cada dato es como una fila en una hoja de cálculo en la que definimos los tipos de columnas de antemano y normalizamos los datos, lo que significa que cada fila tiene una entrada o un valor nulo para cada columna. 

En una base de datos relacional, cada tipo de datos por separado necesita su propia tabla. Por ejemplo, un hotel tendría una mesa para huéspedes y otra mesa para reservas. Cada entrada en la tabla de invitados tendría los mismos atributos guest_ID, digamos name y address. Mientras tanto, cada entrada en la tabla de reservas tendría los atributos IDstay_date y guest_id

Tenga en cuenta que el último atributo de la tabla de reservas (guest_id) es en realidad una referencia a una fila de la tabla de invitados. Este tipo de relación entre datos en diferentes tablas es la forma en que podemos relacionar tipos de datos dispares entre sí. Este tipo de relaciones, así como las estructuras rígidas de las tablas, son las que permiten que SQL (Lenguaje de Consulta Estructurado) funcione en bases de datos relacionales.

Si el hotel quisiera información sobre todas las reservas que tenía un huésped en particular, la búsqueda requeriría acceder a ambas tablas. Por el contrario, una base de datos no relacional podría almacenar todos los datos relacionados con un huésped (incluidas las reservas) en una sola entrada, lo que puede agilizar las búsquedas en muchos casos.

¿Cómo funcionan las bases de datos no relacionales?

Como veremos a continuación, el término base de datos no relacional en realidad abarca cuatro tipos principales de bases de datos, cada una de las cuales funciona de manera diferente. Los cuatro tipos son:

1. Base de datos de gráficos

Cada dato se almacena como un nodo y las relaciones entre nodos, llamadas aristas, se almacenan con igual importancia. Las bases de datos de gráficos son muy adecuadas para analizar un gran volumen de puntos de datos que pueden parecer no relacionados y encontrar relaciones entre esos puntos. Algunas aplicaciones incluyen instituciones financieras que necesitan detectar fraudes, proveedores de atención médica que necesitan comprender mejor la trayectoria de la enfermedad y, por supuesto, redes sociales para gestionar las relaciones entre los usuarios. Neo4j es una base de datos de gráficos popular.

¿Qué es una Base de Datos no relacional? (Definición, Usos)

En el ejemplo anterior, tenemos algunos sabores, ingredientes y marcas de helado asignados a nuestro gráfico. Las relaciones formadas en el gráfico ( CONTAINS, SELLS) son la forma en que podemos recorrer el gráfico, hacer conexiones y consultar nuestros datos. Dependiendo de la herramienta que utilice, el lenguaje de consulta se verá un poco diferente, pero puede ver cómo se vería una consulta de muestra y qué datos podría devolver. 

2. Tienda de valores clave

Cada dato tiene una clave única que apunta a algún valor. La estructura de esta base de datos es muy similar en concepto a un objeto Javascript o un diccionario Python. Las bases de datos de valores clave suelen ser muy rápidas; los usamos para almacenar datos que probablemente serán bastante dispares y no tendrán ningún esquema. Dado que la latencia es tan baja en las bases de datos clave-valor, se utilizan mejor para el almacenamiento en caché, colas de mensajes o gestión de perfiles de usuario, por nombrar algunos. Redis y Amazon DynamoDB son ejemplos populares de bases de datos de valores clave.

Base de datos no relacional

Si tuviéramos que consultar nuestra base de datos de ejemplo anterior con una clave de honey_lavender, recuperaríamos todo el objeto JSON que es su valor. La consulta de chocolate_gooey_brownie devolverá la cadena de descripción completa. 

3. Tienda orientada a documentos

Las bases de datos de documentos son posiblemente las bases de datos más polivalentes de estas cuatro. Cada dato se almacena como un documento, comúnmente en JSON, donde las claves se exponen para realizar consultas. La forma de cada documento podría ser diferente. Cada documento puede tener una estructura diferente, pero también existe la opción de crear agrupaciones de documentos llamadas colecciones. Estas colecciones se pueden organizar jerárquicamente, lo que crea formas de consultar los datos relacionalmente sin perder flexibilidad. 

Las bases de datos de documentos se utilizan en muchos entornos diferentes, como carritos de compras en línea, juegos y gestión de contenidos. MongoDB y Amazon DynamoDB son ejemplos populares de bases de datos orientadas a documentos. Amazon DynamoDB es un híbrido, por lo que se considera una base de datos orientada a documentos y valores-clave.

base de datos no relacional

Como puede ver en este ejemplo, los dos documentos tienen estructuras diferentes y pueden contener información diferente. Puede agregar o eliminar campos de cualquiera de los documentos según sea necesario.

4. Base de datos de columnas anchas

Cada dato se almacena en una estructura similar a una tabla. Las bases de datos de columnas anchas son más similares a las bases de datos relacionales. Sin embargo, los datos pueden no estar estructurados y no es necesario que tengan un esquema rígido. Las bases de datos de columnas anchas son casi como un híbrido de una base de datos de valores clave y una base de datos relacional. Cada dato se almacena con una clave única que apunta a una serie de tipos de columnas que pueden variar de una fila a otra. 

Este tipo de base de datos se usa comúnmente cuando hay una gran cantidad de puntos de datos con diferentes tipos de columnas. Por ejemplo, los registros de un dispositivo IoT tendrán entradas frecuentes pero tipos de datos potencialmente diferentes. Cassandra y HBase son opciones populares para bases de datos de columnas anchas.

Aunque las filas de este ejemplo tengan valores diferentes, aún pueden estar en la misma base de datos.