Saltar a contenido

Bases de Datos NoSQL: Flexibilidad y Escalabilidad

En el desarrollo moderno, muchas veces necesitamos guardar datos que no encajan bien en una tabla fija. Aquí es donde entran las Bases de Datos NoSQL (Not Only SQL). En lugar de tablas y filas, suelen utilizar estructuras similares a los diccionarios de Python (JSON).


1. El concepto de Documento

La base de datos NoSQL más popular es MongoDB. En ella, la información se organiza en: * Colecciones: Equivalentes a las "Tablas", pero más flexibles. * Documentos: Equivalentes a los "Registros". Se guardan en formato BSON (un JSON binario).

¿Por qué usar NoSQL?

  1. Esquema Flexible: Un documento puede tener 3 campos y el siguiente puede tener 10 sin romper la base de datos.
  2. Escalabilidad: Están diseñadas para crecer fácilmente a través de muchos servidores.
  3. Velocidad: Ideales para lectura y escritura masiva de datos no estructurados.

2. Conectando Python con NoSQL (PyMongo)

Para interactuar con MongoDB desde Python, utilizamos la librería PyMongo. El flujo es muy similar al que vimos en SQL, pero más directo:

  1. Cliente: Conectar al servidor (ej. MongoDB Atlas).
  2. Base de Datos: Seleccionar la base de datos.
  3. Colección: Seleccionar la colección (ej. "usuarios").
  4. Operación: Insertar o buscar diccionarios directamente.

Operaciones CRUD en NoSQL

  • insert_one({ ... }): Guarda un nuevo diccionario.
  • find({ "campo": "valor" }): Busca documentos que coincidan.
  • update_one(): Modifica un registro existente.
  • delete_one(): Elimina un documento.

Reto: Simulador de Catálogo NoSQL

Vamos a simular la inserción de un producto en una colección. Imagina que estamos usando una librería que emula MongoDB.

Instrucciones:

  1. Crea un diccionario llamado producto con: "nombre": "Teclado", "precio": 50 y "stock": 10.
  2. Imagina que tienes un objeto coleccion. Usa el método coleccion.insert_one(producto).
  3. Para verificar, busca el producto usando coleccion.find_one({"nombre": "Teclado"}) y guarda el resultado en una variable llamada resultado.

# Manejo de datos JSON-like: