Introducción a las Bases de Datos NoSQL: Tipos, Ventajas y Desventajas

Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 7,02 KB

Introducción a las Bases de Datos NoSQL

Contexto Actual

Las aplicaciones web actuales generan cantidades masivas de información, con millones de usuarios accediendo simultáneamente y realizando consultas a las bases de datos. En este contexto, las bases de datos relacionales tradicionales presentan problemas de escalabilidad y rendimiento. Además, la estructura tradicional de entidad-relación no siempre se ajusta a la estructura de la información generada en la web, que puede incluir objetos, XML, grafos y otros formatos.

Para dar solución a estos desafíos, han surgido nuevos sistemas de almacenamiento de información, conocidos como NoSQL (Not Only SQL), que se adaptan mejor a las necesidades del Big Data.

Diferencias con las Bases de Datos Relacionales

  • Lenguaje de Consultas: NoSQL no utiliza SQL como lenguaje principal de consultas. En su lugar, cada base de datos NoSQL suele tener su propio lenguaje, como CQL en Cassandra, JSON en MongoDB o GQL en BigTable.
  • Estructura de Almacenamiento: No se utiliza la estructura de tablas tradicional. Las bases de datos NoSQL se basan en otros modelos, como objetos, grafos o pares clave-valor.
  • Operaciones JOIN: No se permiten las operaciones JOIN, para evitar la sobrecarga en la web.
  • Arquitectura Distribuida: La información se distribuye entre varias máquinas para mejorar el rendimiento y la escalabilidad.

Ventajas de NoSQL

  • Eficiencia en Recursos: Requieren menos computación y recursos de hardware.
  • Escalabilidad Horizontal: El rendimiento se puede mejorar fácilmente añadiendo más nodos al sistema.
  • Manejo de Grandes Volúmenes de Datos: Son capaces de manejar grandes volúmenes de datos de forma eficiente.
  • Prevención de Cuellos de Botella: Su arquitectura distribuida ayuda a evitar la ralentización del sistema cuando hay muchas peticiones.

Inconvenientes de NoSQL

  • No siempre son la mejor opción: Para muchos sitios web, un sistema de gestión de bases de datos relacional (SGBD) sigue siendo la opción óptima.
  • Utilización Específica: Se deben utilizar cuando sus ventajas, como el alto rendimiento y la escalabilidad, son realmente necesarias.
  • Limitaciones en la Estructura: Si la estructura de los datos no suele cambiar y el crecimiento es moderado, SQL puede ser una mejor opción.

Tipos de Bases de Datos NoSQL

  • Clave-Valor (ej. Riak, Cassandra, Apache HBase)
  • Columnas
  • Documentales (ej. MongoDB, CouchDB)
  • Grafo (ej. Neo4j, HyperGraphDB)
  • Orientadas a Objetos

Bases de Datos Clave-Valor

  • DynamoDB: Opción de almacenamiento de Amazon Web Services.
  • Redis: Desarrollada en C y de código abierto.
  • MongoDB: Una de las bases de datos NoSQL más famosas.
  • CouchDB: Base de datos orientada a documentos de Apache.

Características Generales de las Bases de Datos NoSQL

  • No usan SQL como lenguaje principal de consultas.
  • Los datos almacenados no requieren estructuras fijas.
  • No soportan operaciones JOIN.
  • No garantizan ACID (Atomicidad, Consistencia, Aislamiento, Durabilidad).
  • Se clasifican según su forma de almacenar los datos.
  • Categorías principales: clave-valor, implementaciones de BigTable, bases de datos documentales y bases de datos orientadas a grafos.

Origen y Evolución

Las bases de datos NoSQL surgieron con la necesidad de empresas como Google, Amazon, Twitter y Facebook de procesar grandes volúmenes de datos con estructuras horizontales. Están altamente optimizadas para operaciones de recuperación y agregación, y ofrecen una funcionalidad de almacenamiento de registros similar al modelo clave-valor.

Ventajas Adicionales

  • Responden a las necesidades de escalabilidad horizontal.
  • Manejan enormes cantidades de datos sin generar cuellos de botella.
  • Escalamiento sencillo.
  • Existen diferentes bases de datos NoSQL para diferentes proyectos.
  • Se pueden ejecutar en clústeres de máquinas de bajo coste.

Tipos Adicionales

  • Bases de datos orientadas a objetos (ej. DB4O, NeoDatis ODB)
  • Bases de datos documentales (ej. MongoDB, Couchbase)
  • Bases de datos clave/valor (ej. Redis)
  • Bases de datos en grafo
  • Bases de datos multivalor
  • Bases de datos tabulares

Ejercicios de Copia de Seguridad (MySQL)

Estos ejemplos muestran cómo realizar copias de seguridad y restaurar datos en MySQL. Adaptar las rutas y nombres de bases de datos según sea necesario.

Copia de Seguridad de Todas las Bases de Datos

En la shell de MySQL:

mysqldump -u root -p --all-databases > "C:\copias\copias.sql";

Copia de la Tabla "alumnos"

En la shell de MySQL:

mysqldump -u root -p prueba alumnos > "C:\copias\alumno.sql";

Recuperar Datos de la Tabla "alumnos"

En la shell de MySQL:

mysql -u root -p prueba < "C:\copias\alumno.sql";

Copia de Seguridad con SELECT INTO OUTFILE

En MySQL:

SELECT * FROM alumnos INTO OUTFILE 'C:/copias/alumno1.sql';

Recuperar Datos con LOAD DATA INFILE

En MySQL:

LOAD DATA INFILE 'C:/copia/alumno1.sql' INTO TABLE alumnos;

Copia de Seguridad con INSERT INTO OUTFILE

En MySQL:

SELECT * FROM alumnos INTO OUTFILE 'C:/copias/alumno2.sql';

Recuperar Datos con mysqlimport

En la shell de MySQL:

mysqlimport prueba C:\xampp\mysql\data\alumnos.sql -u root

Copia de Seguridad de Alumnos Mayores de Edad

En MySQL:

SELECT nombre, apellidos WHERE edad >= 18 INTO OUTFILE 'C:/copias/alumnosmayores.dat';

Copia de Seguridad de Alumnos Menores de Edad con mysqldump

En la shell de MySQL:

mysqldump -u root -p --where='edad<18' prueba alumnos > "C:\copias\menores.sql";

Recuperar Datos de Alumnos Mayores de Edad con mysqlimport

En la shell de MySQL:

mysqlimport prueba C:\xampp\mysql\data\alumnosmayores.dat -u root -p;

Recuperar Datos de Alumnos Menores de Edad con mysqlimport

En la shell de MySQL:

mysqlimport prueba 'c:/copias/menores.sql' -u root -p prueba.sql;

Ejemplo de Creación de Tabla

En MySQL:

CREATE TABLE empresa (  id_empresa INT(10) NOT NULL,  nombre VARCHAR(100) NOT NULL,  descripcion BLOB,  fecha_alta DATE NOT NULL,  socio BIT NOT NULL,  PRIMARY KEY (id_empresa));

Entradas relacionadas: