Los modelos avanzados surgen para cubrir necesidades específicas que el modelo relacional tradicional no puede resolver eficientemente:
// Ejemplo de regla deductiva
ancestro(X,Y) :- padre(X,Y).
ancestro(X,Y) :- padre(X,Z), ancestro(Z,Y).
CREATE TABLE empleados (
id INT,
nombre VARCHAR(100),
salario DECIMAL(10,2),
fecha_inicio DATE,
fecha_fin DATE
);
-- Consulta PostGIS (PostgreSQL)
SELECT nombre
FROM ciudades
WHERE ST_Distance(
ubicacion,
ST_MakePoint(-3.703790, 40.416775)
) < 100000;
Tipo | Característica | Ejemplo |
---|---|---|
Fragmentación | Tablas divididas en nodos | Clientes por región |
Replicación | Datos duplicados en nodos | Catálogo de productos |
┌───────────────┐
│ VENTAS │
├───────────────┤
│ Medidas: │
│ - cantidad │
│ - importe │
│ │
│ Dimensiones: │
│ - tiempo │
│ - producto │
│ - región │
└───────────────┘
<producto id="123">
<nombre>Smartphone X</nombre>
<especificaciones>
<pantalla>6.5"</pantalla>
</especificaciones>
</producto>
Ejercicio: Para cada caso, identificar el modelo más adecuado:
1. Base de datos de grafos (para modelar relaciones complejas)
2. Base de datos de series temporales (como InfluxDB)
3. Data Warehouse columnar (como Snowflake o Redshift)
Identificar, formular y aplicar técnicas de recuperación de información adecuadas según el modelo de datos y tipo de gestor implementado en un sistema de información.
Tipo de Gestor | Técnicas Principales | Ejemplo de Consulta | Ventajas |
---|---|---|---|
Relacional (SQL) | Joins, subconsultas, vistas, procedimientos almacenados |
SELECT c.nombre, COUNT(p.id) FROM clientes c JOIN pedidos p ON c.id = p.cliente_id WHERE p.fecha > '2023-01-01' GROUP BY c.nombre HAVING COUNT(p.id) > 5; |
Precisión, consistencia, estandarización |
Documental (NoSQL) | Consultas embebidas, operadores de array, índices multikey |
db.productos.find({ precio: {$lt: 100}, categorias: "electrónica", stock: {$gt: 0} }).sort({valoracion: -1}); |
Flexibilidad, rendimiento con datos anidados |
Grafos | Traversals, pattern matching, algoritmos de grafos |
MATCH (u:Usuario)-[:COMPRÓ]->(p:Producto) WHERE p.categoría = "libros" RETURN u.nombre, COUNT(p) AS total ORDER BY total DESC LIMIT 10; |
Eficiencia en relaciones complejas |
Búsqueda (Search) | Full-text, faceting, highlighting, fuzzy search |
GET /productos/_search { "query": { "multi_match": { "query": "smartphone 5g", "fields": ["nombre^3", "descripcion"] } } } |
Relevancia, escalabilidad, análisis de texto |
Proponer técnicas para:
Diseñar estrategias para:
Diseñar un sistema de recuperación para:
Entregables:
Las bases de datos distribuidas permiten gestionar datos que están repartidos en distintos nodos de red, ofreciendo ventajas como redundancia, escalabilidad y disponibilidad. En esta unidad se revisan sus formas, arquitectura, mecanismos de distribución y gestión de transacciones distribuidas.
Los datos pueden distribuirse de diferentes formas: replicación, fragmentación o una combinación.
Define tres niveles: interno (físico), conceptual (lógico), externo (vistas de usuario).
Involucran múltiples nodos. Se requiere control de concurrencia y recuperación.
Incluyen técnicas como el middleware de replicación, control de ubicación y catálogo distribuido.
📌 En los sistemas modernos, las bases de datos ya no se almacenan únicamente en un servidor central. Para mejorar el rendimiento, la disponibilidad y la escalabilidad, se emplea la distribución de bases de datos, una estrategia que permite repartir los datos entre múltiples ubicaciones físicas.
💡 En este documento exploraremos los conceptos clave relacionados con esta distribución:
✅ Cada sección incluye un Ejemplo On-Off paso a paso para facilitar la comprensión.
Existen distintas formas de distribuir una base de datos según cómo se dividen o replican los datos en distintas ubicaciones.
Modelo de referencia que separa la base de datos en tres niveles para facilitar su diseño y seguridad.
Interno:
cómo se almacenan físicamente los datos.Conceptual:
estructura lógica de la base de datos.Externo:
vistas específicas para usuarios.Transacciones que involucran operaciones en múltiples bases de datos ubicadas en diferentes nodos.
2PC (Two Phase Commit)
para asegurar integridad.Técnicas usadas para fragmentar, replicar y mantener sincronizados los datos en diferentes nodos.