Bases de datos noSQL

Relacional vs. No relacional

Las bases relacionales SQL tienen columnas comunes que te permiten relacionar tablas. Esto implica que hay que hacer un trabajo previo de definición de datos.

En noSQL es un modelo dinámico, cambiante, que no está definido formalmente. No hay que insertar las tablas directamente, sino que pueden formarse en la marcha. Hay que pensar el formato y estructura, pero no es necesario hacerlo formalmente. Esta es la principal diferencia con SQL.

noSQL significa not only sql. Nos olvidamos de las tablas relacionales, sino que se exploran otras ideas para explorar los datos.

Si no hay un modelo previo, si no hay que gastar tiempo en meter formalmente unas tablas o bases de datos, ¿por qué hay que gastar tiempo en el diseño del modelo? Porque hay que tener construido un esqueleto base.

NoSQL tiene una buena escalabilidad muy buena y permite distribuir datos en diferentes máquinas. Además, el rendimiento de las consultas es mejor y la estructura de los datos es más flexible.

Entre las desventajes de noSQL está que la integridad de los dtaos es responsabilidad del programador, existe falta de estandarización y presenta un bajo catálogo de herramientas en multiplataforma.

Teorema del CAP y noSQL

El teorema indica que en un sistema de bases de datos distribuido no se puede garantizar simultáneamente:

  • Consistencia
  • Disponibilidad
  • Tolerancia al particionado.

En los sistemas distribuidos hay que seleccionar el tipo de estrategia a seguir. Es una cuestión de cómo se administra una base de datos. Las noSQL suelen almacenarse por el tipo de datos que almacena. Las de clave-valor es similar a una tabla HASH y a cada clave se le asocia un valor. Una de las clásicas es REDIS.

Otro tipo de base de datos noSQL son las basadas en documentos, del estilo una fila en un registro en CSV o un objeto en JSON. Cada entrada, fila, registro, objeto es un documento, y estos documentos son indepentientes entre sí, y tienen complejidad arbitraria. En este caso está monDB, amazon DynamoDB o couchDB.

También están las base de datos basadas en grafos, que presentan nodos y aristas. No se pone el énfases en el documento, nodo, sino en las aristas, en las relaciones. Es una base de datos más relacional que las propias relacionales. En este caso, el ejemplo Neo4j o Titan.

Existen otros tipos, por pares clave valor, familias, tuplas, XML, objetos.

En esta web está un listado de las bases de datos más empleadas hoy en día: https://db-engines.com/en/ranking

Cada base de datos se ha decidido poner en un punto del teorema del CAP. Aunque cada base de datos puede ser configurable y ampliar su rango.

MongoDB

Es la base de datos noSQL más empleada a día de hoy.

Fue creado en 2007 por 10gen (ahora MongoDB Inc). Es open-source y se descarga desde GitHub. Está basado en documento JSON con interfaz basada en JavaScript.

Es un esquema basado en cliente-servidor. Los datos se slmacenan en el servidor Mongo y el cliente con mongo puede consultar esa base de datos.

Una comparación rápida entre conceptos entre mongoDB y relacionales SQL:

También existen operaciones similares:

Las operaciones tienen sintaxis diferentes aunque similares. En mongoDB sería db.users.operacion().

Arquitectura mongoDB

MongoDB se lleva bien con cantidades ingentes de datos, pero no cuando son pocos y muy estructurados. Y viceversa con SQL. Pueden operar las dos simultáneamente, SQL para gestión y mongoDB para análisis. MongoDB no sustituye a SQL, sino que lo complementa.

Idea general del mundo noSQL y mongoDB. Se parece mucho al concepto tradicional de bases de datos, pero presenta internamente otra estructura, menos relacional, menos énfasis en las restricciones, y esto permite una distribución de los datos mayor. Como es mayor distribuida hay que saber dónde situarse en el teorema del CAP.

NoSQL no es sustituto de SQL, sino un complemento que sirve para cosas diferentes.

Deja un comentario