Jueves, 23 enero 2020

Bases de Datos NoSQL: qué son y cuáles son sus ventajas

Una Base de Datos (BBDD) en un conjunto almacenado de información para ser procesada. Los Sistemas Gestores de Bases de Datos son las aplicaciones de software que permiten almacenar y acceder a la información.

Los principales tipos de BBDD son:

–Relacionales: la información que almacena la BBDD está relacionada entre sí. Los datos relacionados (registros o filas) son almacenados en tablas que constan de varios campos (columnas).

–No relacionales: los datos no tienen porqué estar relacionados entre sí y por lo tanto no tienen que almacenarse en estructuras fijas como las tablas del modelo de base de datos relacional.

Características y ventajas de NoSQL

Las Bases de Datos NoSQL (“Not Only SQL”) pertenecen al modelo no relacional. Las principales características y ventajas de este tipo son:

–SQL no es el lenguaje de consulta/modificación de datos principal, aunque sí lo soportan, de ahí el nombre No Sólo SQL.

–Los datos no tienen que almacenarse en tablas.

–Generalmente, su arquitectura es distribuida almacenándose la información en más de una máquina del sistema. Por lo tanto, los sistemas que las soportan tienen una mayor escalabilidad horizontal (a mayor número de nodos mayor rendimiento) y también mayor tolerancia ante fallos en los distintos nodos.

Son más eficientes en el procesamiento de los datos que las BBDD relacionales

–Son más eficientes en el procesamiento de los datos que las BBDD relacionales, por eso son la elección para aplicaciones que hacen un uso intensivo de estos (“streaming”, etc.).

–Utilizan lo que se conoce como consistencia eventual que consiste en que los cambios realizados en los datos serán replicados a todos los nodos del sistema, lo cual aumenta el rendimiento de estos sistemas en contraposición a las propiedades ACID de las BBDD relacionales (“Atomicity, Consistency, Isolation and Durability” – Atomicidad, Consistencia/Integridad, Aislamiento y Durabilidad).

 Puntos positivos y negativos de NoSQL

–Los Sistemas de Gestión de Bases de Datos NoSQL no contemplan por definición la atomicidad de las instrucciones, es decir, cuando una operación sobre los datos consta de varios pasos, no se tienen que ejecutar todos, cosa que sí sucede en los modelos relacionales (transacciones completas). Hay algunas BBDD NoSQL que contemplan la atomicidad.

–Los gestores NoSQL no contemplan obligatoriamente la consistencia o integridad de la BBDD, esto quiere decir que no se comprueba que la operación a ejecutar sobre los datos se pueda completar desde un estado de la Base de Datos válido a otro válido (por ejemplo no violación de ninguna restricción de tipos de datos o reglas).

Al utilizar el mecanismo de consistencia eventual se puede dar el caso de que la misma consulta a diferentes máquinas del sistema produzca resultados diferentes porque las modificaciones de la BBDD aún no han sido replicadas a todos los nodos. Algunas BBDD de este tipo contemplan la propiedad de consistencia.

–Estas BBDD utilizan sus propios lenguajes de consulta de datos y APIs, por lo que no tienen una gran interoperabilidad (por ejemplo dificultad de migraciones de una BBDD a otra, integración con aplicaciones, consultas heredadas en SQL, etc.).

–No hay estandarización para este tipo de BBDD, algo que sí es un punto fuerte de las relacionales.

–Las Bases de Datos NoSQL funcionan ampliamente en máquinas Linux, pero no existe en general soporte a otros Sistemas Operativos.

–Las interfaces de gestión de estas BBDD no son intuitivas ni sencillas y en algunos casos carecen de ellas gestionándose directamente desde consola de comandos.

¿Cuándo es recomendable utilizar una BBDD NoSQL?

1-Cuando se necesita una BBDD para una aplicación que hace una consulta/lectura intensiva de grandes cantidades de datos.

2-Cuando no hay la necesidad de que los datos sean consistentes.

3-Si los datos a almacenar no tienen una estructura fija.

Una misma aplicación puede usar una BBDD relacional y una BBDD NoSQUL y guardar cosas diferentes en cada una de ellas. 

Algunos ejemplos de uso de este tipo de BBDD:

–Amazon.

–Facebook.

–Google.

Gestores de BBDD NoSQL:

-Cassandra: http://cassandra.apache.org/

-Redis: https://redis.io/

-MongoDB: https://www.mongodb.com/es

-CouchDB: https://couchdb.apache.org/