Skip to content

1 Introducción a las bases de datos NoSQL

Introducción

Las bases de datos NoSQL son aquellas que no siguen el modelo clásico del sistema de gestión de bases de datos relacionales. Su principal características es que no usan SQL como lenguaje principal de consultas, y además, en el almacenamiento de los datos no se utilizan estructuras fijas de almacenamiento.

El término NoSQL surge con la llegada de la web 2.0, ya que hasta ese momento solo subían contenidos a la red aquellas empresas que tenían un portal, pero con la llegada de las diferentes RRSS (Facebook, Twitter, Youtube, etc), en las que el usuario podía subir su propio contenido, se produjo así un crecimiento exponencial de los datos.

Soluciones propuestas

Esto provocaba problemas para gestionar y acceder a toda esa información que se encuentra almacenada en bases de datos relacionales. Las empresas propusieron solucionar dichos problemas con el incremento de máquinas, sin embargo, era una solución cara y no terminaba con el problema.

Otra solución propuesta fue la de crear nuevos sistemas gestores de datos pensados para un uso específico, que con el paso del tiempo han dado lugar a soluciones robustas, apareciendo así el movimiento NoSQL.

Así pues, hablar de NoSQL es hablar de estructuras que nos permiten almacenar información en aquellas situaciones en las que las bases de datos relacionales generan ciertos problemas.

SQL vs NoSQL

Las bases de datos relacionales focalizan su interés en la fiabilidad de las transacciones bajo el conocido principio ACID (Atomicity, Consistency, Isolation and Durability, Atomicidad, Consistencia, Aislamiento y Durabilidad en español).

PRINCIPIO ACID - Bases de datos relacionales
Atomicity Asegurar de que la transacción se complete o no, sin quedarse a medias ante fallos.
Consistency Asegurar el estado de validez de los datos en todo momento.
Isolation Asegurar independencia entre transacciones
Durability Asegurar la persistencia de la transacción ante cualquier fallo

Este principio aporta una robustez y colisiona el rendimiento con la operatividad a medida que los volúmenes de datos crecen.

Cuando la magnitud y el dinamismo de los datos cobran importancia, el principio ACID de los modelos relacionales quedan en segundo plano frente al rendimiento, disponibilidad y escalabilidad, las características más propias de las bases de datos NoSQL. Hoy en día, los modernos sistemas de datos en internet se ajustan más al también conocido principio BASE (Basic Availability, Soft State, Eventually consistency, Disponibilidad como prioridad, la consistencia de datos se delega a gestión externa al motor de la base de datos, intentar lograr la convergencia hacia un estado consistente).

PRINCIPIO BASE - Bases de datos NoSQL
Basic Availability Prioridad de la disponibilidad de los datos
Soft state Se prioriza la propagación de datos, delegando el control de inconsistencias a elementos externos
Eventually consistency Se asume que inconsistencias temporales progresen a un estado final estable

Ventajas de los sistemas NoSQL

La gran diferencia de estas bases de datos es cómo almacenan los datos. Por ejemplo, en una base del modelo relacional para almacenar una factura, se utilizarían 4 tablas, cada una con 3 o 4 ajenas, mientras que en NoSQL solo se guarda la factura, por ejemplo, con una clave y el objeto factura.

La forma de almacenamiento de información en este tipo de bases de datos ofrece ciertas ventajas sobre los modelos relacionales:

  • Se ejecutan en máquinas con pocos recursos: estos sistemas no requieren mucha programación, por lo que se pueden instalar en máquinas de un coste más reducido.
  • Escalabilidad horizontal: para mejorar el rendimiento de estos sistemas simplemente se consigue añadiendo más nodos, con la única operación de indicar al sistema cuáles son los nodos que están disponibles.
  • Pueden manejar gran cantidad de datos: esto es debido a que utiliza una estructura distribuida, en muchos casos mediante tablas Hash.
  • No genera cuellos de botella: el principal problema de los sistemas SQL es que necesitan transcribir cada sentencia para poder ser ejecutada, y cada sentencia compleja requiere, además, de un nivel de ejecución aún más complejos, lo que constituye un punto de entrada en común, que ante muchas peticiones puede ralentizar el sistema.

Diferencias con las bases de datos SQL

Las diferencias más importantes entre los sistemas NoSQL y los sistemas SQL son:

  • No utilizan SQL como lenguaje de consultas
  • No utilizan las estructuras filas como tablas para el almacenamiento de los datos. Permiten hacer uso de otros tipos de modelos de almacenamiento de información como sistemas clave-valor, objetos o grafos.
  • No suelen permitir operaciones JOIN. Al disponer un volumen de datos tan extremadamente grande suele resultar deseable evitar los JOIN. Esto se debe a que , cuando la operación no es la búsqueda de una clave, la sobrecarga puede ser costosa. Las soluciones más directas consisten en desnormalizar los datos, o bien, realizar el JOIN mediante software en la capa de aplicación.
  • Arquitectura distribuida. Las bases de datos relacionales suelen estar centralizadas en una única máquina o bien en una estructura máster-esclavo, sin embargo en los casos NoSQL la información puede estar compartida en varias máquinas mediante mecanismos de tablas Hash distribuidas.

Tipos de bases de datos NoSQL

Según el tipo o modelo escogido para almacenar los datos, las bases de datos NoSQL se agrupan en cuatro categorías principales:

  • Clave/Valor. Los datos son almacenados y se localizan e identifican usando una clave única y un valor.
  • Columnas. Parecido al modelo clave/valor, pero la clave se basa en una combinación de columna, fila y marca de tiempo que se utiliza para referenciar conjuntos de columnas. Es una implementación bastante similar al modelo relacional.
  • Documentos. Los datos se almacenan en documentos que encapsulan la información en formato XML, YAML o JSON. Los documentos tienen nombres de campos auto contenidos en el propio documento. La información se indexa utilizando esos nombres de campos. Este tipo de implementación permite, además de realizar búsquedas por clave-valor, realizar consultas más avanzadas sobre el contenido del documento.
  • Grafos. Se sigue un modelo de grafos que se extiende entre múltiples máquinas. En este tipo de bases de datos, la información se representa como nodos de un grafo y sus relaciones con las artistas del mismo, de manera que se puede hacer uso de la teoría de los grafos para recorrerla. Es un modelo apropiado para datos cuyas relaciones se ajustan a este modelo, como, por ejemplo, redes de transporte, mapas, etc.