En esta sección, compararemos MongoDB, una base de datos NoSQL, con las bases de datos SQL tradicionales. Entender las diferencias y similitudes entre estos dos tipos de bases de datos es crucial para elegir la tecnología adecuada para tus proyectos.

  1. Estructura de Datos

MongoDB

  • Modelo de Datos: Documentos en formato BSON (Binary JSON).
  • Flexibilidad: No requiere un esquema fijo. Los documentos en una colección pueden tener diferentes campos.
  • Anidamiento: Soporta documentos anidados y arrays.

Bases de Datos SQL

  • Modelo de Datos: Tablas con filas y columnas.
  • Esquema Fijo: Requiere un esquema definido. Todas las filas en una tabla deben seguir la misma estructura.
  • Relaciones: Utiliza claves foráneas para establecer relaciones entre tablas.
Característica MongoDB Bases de Datos SQL
Modelo de Datos Documentos (BSON) Tablas (Filas y Columnas)
Esquema Flexible Fijo
Anidamiento Soporta documentos anidados No soporta directamente
Relaciones Embebidas o referencias Claves foráneas

  1. Consultas y Lenguaje

MongoDB

  • Lenguaje de Consulta: Utiliza métodos de consulta específicos de MongoDB.
  • Consultas: Soporta consultas ad-hoc, agregaciones y búsquedas de texto.
  • Flexibilidad: Permite consultas complejas y dinámicas sin necesidad de modificar el esquema.

Bases de Datos SQL

  • Lenguaje de Consulta: SQL (Structured Query Language).
  • Consultas: Soporta operaciones CRUD (Create, Read, Update, Delete) y consultas complejas con JOINs.
  • Estructura: Las consultas están basadas en un esquema fijo y relaciones predefinidas.
Característica MongoDB Bases de Datos SQL
Lenguaje de Consulta Métodos de consulta de MongoDB SQL
Consultas Ad-hoc, agregaciones, búsquedas CRUD, JOINs, subconsultas
Flexibilidad Alta Moderada

  1. Escalabilidad

MongoDB

  • Escalabilidad Horizontal: Diseñado para escalar horizontalmente mediante fragmentación (sharding).
  • Replicación: Soporta replicación para alta disponibilidad y recuperación ante desastres.

Bases de Datos SQL

  • Escalabilidad Vertical: Tradicionalmente escala verticalmente (mejorando el hardware del servidor).
  • Replicación: Soporta replicación, pero la escalabilidad horizontal puede ser más compleja de implementar.
Característica MongoDB Bases de Datos SQL
Escalabilidad Horizontal (Sharding) Vertical
Replicación Soportada Soportada

  1. Casos de Uso

MongoDB

  • Aplicaciones: Ideal para aplicaciones con datos no estructurados o semi-estructurados, como redes sociales, IoT, y análisis de datos.
  • Flexibilidad: Adecuado para proyectos donde el esquema puede cambiar frecuentemente.

Bases de Datos SQL

  • Aplicaciones: Ideal para aplicaciones con datos estructurados y relaciones complejas, como sistemas financieros, ERP, y CRM.
  • Consistencia: Adecuado para aplicaciones que requieren transacciones ACID (Atomicidad, Consistencia, Aislamiento, Durabilidad).
Característica MongoDB Bases de Datos SQL
Aplicaciones Datos no estructurados, IoT Datos estructurados, sistemas financieros
Flexibilidad Alta Baja
Consistencia Eventual ACID

Ejemplo Práctico

MongoDB

// Insertar un documento en MongoDB
db.usuarios.insertOne({
    nombre: "Juan",
    edad: 30,
    direccion: {
        calle: "Calle Falsa 123",
        ciudad: "Ciudad Ficticia"
    },
    intereses: ["fútbol", "programación"]
});

Explicación: Este ejemplo muestra cómo insertar un documento en una colección de MongoDB. El documento incluye un campo anidado (direccion) y un array (intereses).

SQL

-- Crear una tabla en SQL
CREATE TABLE usuarios (
    id INT PRIMARY KEY AUTO_INCREMENT,
    nombre VARCHAR(50),
    edad INT,
    calle VARCHAR(100),
    ciudad VARCHAR(50)
);

-- Insertar una fila en la tabla
INSERT INTO usuarios (nombre, edad, calle, ciudad) VALUES ('Juan', 30, 'Calle Falsa 123', 'Ciudad Ficticia');

Explicación: Este ejemplo muestra cómo crear una tabla y luego insertar una fila en una base de datos SQL. La estructura es fija y no permite anidamiento o arrays directamente.

Ejercicio Práctico

Ejercicio

  1. MongoDB: Inserta un documento en una colección llamada productos con los siguientes campos: nombre, precio, categorias (array), y detalles (documento anidado con fabricante y garantia).
  2. SQL: Crea una tabla llamada productos con los campos id, nombre, precio, fabricante, y garantia. Inserta una fila con los valores correspondientes.

Solución

MongoDB

db.productos.insertOne({
    nombre: "Laptop",
    precio: 1200,
    categorias: ["Electrónica", "Computadoras"],
    detalles: {
        fabricante: "TechCorp",
        garantia: "2 años"
    }
});

SQL

CREATE TABLE productos (
    id INT PRIMARY KEY AUTO_INCREMENT,
    nombre VARCHAR(50),
    precio DECIMAL(10, 2),
    fabricante VARCHAR(50),
    garantia VARCHAR(20)
);

INSERT INTO productos (nombre, precio, fabricante, garantia) VALUES ('Laptop', 1200, 'TechCorp', '2 años');

Conclusión

En esta sección, hemos comparado MongoDB con las bases de datos SQL tradicionales en términos de estructura de datos, consultas, escalabilidad y casos de uso. MongoDB ofrece flexibilidad y escalabilidad horizontal, lo que lo hace ideal para aplicaciones con datos no estructurados y en constante cambio. Por otro lado, las bases de datos SQL son adecuadas para aplicaciones con datos estructurados y relaciones complejas, proporcionando consistencia y transacciones ACID.

Con esta comprensión, estarás mejor preparado para elegir la base de datos adecuada para tus proyectos y necesidades específicas. En el próximo módulo, profundizaremos en las operaciones CRUD en MongoDB, comenzando con la creación de documentos.

© Copyright 2024. Todos los derechos reservados