Documento de Universidad sobre manipulación de datos, operaciones, lenguajes y optimización de consultas. El Pdf, de Informática, explora modelos de datos jerárquico, de red y relacional, además de lenguajes de manipulación y técnicas de optimización de queries.
Ver más9 páginas


Visualiza gratis el PDF completo
Regístrate para acceder al documento completo y transformarlo con la IA.
0. Introducción La manipulación de datos permite realizar operaciones esenciales como recuperar, insertar, modificar y eliminar información en bases de datos. Estas acciones, junto con la optimización de consultas, garantizan un acceso eficiente, incluso en sistemas complejos y de gran volumen.
1. La manipulación de datos La manipulación de datos incluye recuperación, inserción, borrado y modificación de información en las bases de datos, utilizando niveles de abstracción para simplificar el acceso y ocultar la complejidad técnica.
La arquitectura ANSI (1978) define tres niveles:1. Interno: Gestiona el almacenamiento físico y los métodos de acceso. 2. Conceptual: Proporciona una visión lógica de la base de datos, con entidades, relaciones y restricciones. 3. Externo: Presenta vistas adaptadas a usuarios y aplicaciones. Esta organización garantiza flexibilidad y eficiencia al permitir cambios en un nivel sin afectar los demás.
2. Operaciones y lenguajes El lenguaje de manipulación de datos (LMD) permite acceder y gestionar información en bases de datos. Puede ser: 1. Procedimental: Especifica que datos se necesitan y como obtenerlos. 2. No procedimental: Indica qué datos se necesitan, sin detallar el procedimiento, facilitando su uso pero requiriendo optimización para mejorar la eficiencia.
Según su implementación, los LMD pueden ser: · Independientes: Lenguajes autónomos pero limitados en complejidad. · Interfaz para llamadas al sistema: Usan subrutinas en lenguajes tradicionales. · Incrustados: Integrados en lenguajes anfitriones, optimizados por el SGBD.
La independencia de manipulación depende del modelo de datos. Mientras que los modelos jerárquicos requieren conocer rutas de acceso, los relacionales son más flexibles, adaptándose mejor a cambios en el almacenamiento.
2.1. El modelo de datos jerárquico. Operaciones con datos El modelo jerárquico organiza los datos en una estructura de árbol, donde cada nodo representa un registro y las relaciones se establecen como vínculos padre-hijo. Las operaciones de manipulación se realizan a través de lenguajes anfitriones, como DL/I en el sistema IMS. Estas operaciones incluyen recuperación, inserción, modificación y eliminación de registros, utilizando plantillas, punteros de actualidad e indicadores de estado para gestionar el área de trabajo. Este modelo exige un conocimiento explícito de las rutas de acceso, lo que lo hace menos flexible que los modelos relacionales.
2.2. El modelo de datos en red El Data Base Task Group (DBTG), creado por CODASYL en 1965, estableció los estándares del modelo de datos en red, definiendo en 1971 su lenguaje de manipulación y consolidándolo como referencia para bases de datos en red durante los años 70.
2.2.1. Operaciones de datos en DBTG El lenguaje de manipulación del modelo DBTG integra órdenes en lenguajes anfitriones, permitiendo seleccionar, iterar, actualizar registros y gestionar relaciones entre conjuntos. Las principales herramientas para manipular datos incluyen:
Estas operaciones ofrecen flexibilidad y eficiencia en la manipulación de datos en red.
2.2.2. Procesamiento de conjuntos en DBTG El modelo DBTG gestiona registros mediante operaciones estructuradas que incluyen: · Inserción en conjuntos: Tras añadir el registro a la base de datos, los punteros de actualidad se configuran y la orden connect o store lo incluye en el conjunto. · Eliminación: Requiere ajustar los punteros al registro y conjunto antes de ejecutar disconnect. Dependiendo de la lógica, la eliminación varía si es miembro o dueño del conjunto. · Reubicación: Usa la orden reconnect para mover registros entre conjuntos tras localizar al registro y al dueño del conjunto destino. · Ordenación de miembros: Definida por el programador con la orden order, permite estructurar registros dentro de conjuntos. Estas funcionalidades aseguran una manipulación precisa y adaptable en el modelo de datos en red.
2.3. Modelo de datos relacional Los sistemas de bases de datos relacionales emplean lenguajes de consulta que combinan enfoques procedimentales y no procedimentales. Estos lenguajes se fundamentan en el álgebra relacional y el cálculo relacional, equivalentes en potencia pero diferentes en enfoque: · Álgebra relacional: Detalla cómo resolver una consulta. · Cálculo relacional: Describe qué datos se necesitan sin especificar cómo obtenerlos.
2.3.1. Álgebra relacional El álgebra relacional es un lenguaje procedimental que opera sobre relaciones, utilizando operadores para generar nuevas relaciones como resultado. Sus operaciones fundamentales incluyen selección, proyección, unión, diferencia, producto cartesiano y renombramiento. Además, incorpora operaciones derivadas como intersección, reunión natural, división y asignación, que simplifican consultas comunes. Este lenguaje formal permite expresar y optimizar consultas en bases de datos de forma estructurada y eficiente.
2.3.2. Operaciones fundamentales El álgebra relacional es un lenguaje procedimental basado en operaciones que generan y manipulan relaciones. Sus principales operaciones incluyen:
Otras operaciones Además de las fundamentales, se incluyen operaciones derivadas que simplifican consultas habituales: · Intersección: Encuentra tuplas comunes entre dos relaciones. · Reunión natural: Combina relaciones basándose en atributos comunes. · División: Obtiene tuplas relacionadas con todas las de otra relación. · Asignación: Asigna nombres a resultados intermedios para reutilizarlos.
Operaciones extendidas El álgebra relacional se amplía para cubrir necesidades modernas: · Operaciones aritméticas: Realizan cálculos en los atributos. · Operaciones de agregación: Calculan estadísticas como suma, promedio, máximo o mínimo. . Reunión externa: Permite manejar valores nulos, integrando datos de relaciones incluso cuando no tienen correspondencia. Este conjunto de operaciones proporciona un marco robusto y flexible para la manipulación de datos relacionales.
2.3.3. Cálculo relacional El cálculo relacional es un lenguaje no procedimental que describe los datos requeridos sin especificar cómo obtenerlos. Existen dos variantes: · Cálculo relacional de tuplas: o Trabaja con tuplas completas. o Forma general: { t | P(t) }, donde t es una tupla y P(t) define las condiciones (e.g., t E r). o Ejemplo: Recuperar tuplas de la relación cuenta con saldo > 1000. · Cálculo relacional de dominios: o Trabaja con valores individuales de atributos. o Forma general: { {X1, X2, ., Xn> | P(X1, X2, ... , Xn) }, donde P describe las condiciones sobre atributos específicos. o Ejemplo: Recuperar cuentas con un saldo > 1000: { <id, saldo> | cuenta(id, saldo) A saldo > 1000 }. Ambas variantes son equivalentes en potencia, diferenciándose en el nivel de granularidad: el cálculo de tuplas opera sobre registros completos, mientras que el cálculo de dominios lo hace sobre atributos individuales.
2.4. Lenguaje de manipulación de datos modernos y NoSQL El panorama de bases de datos se ha transformado con los sistemas NoSQL, que responden a las demandas de escalabilidad y flexibilidad. Estos sistemas han dado lugar a una variedad de lenguajes de manipulación diseñados para aprovechar las características únicas de cada modelo de datos: . Bases de datos documentales: Lenguajes como el de MongoDB, basado en JSON, permiten manipular datos de manera intuitiva y jerárquica, adaptándose a la naturaleza flexible de los documentos. · Bases de datos columnares: Sistemas como Cassandra utilizan lenguajes como CQL, que combina familiaridad con SQL y conceptos específicos para datos distribuidos y columnar. · Bases de datos de grafos: Lenguajes como Cypher (Neo4j) hacen que trabajar con grafos sea intuitivo, con sintaxis que refleja la representación visual de las relaciones. · Sistemas clave-valor: Lenguajes como el de Redis, aunque simples, permiten operaciones ultrarrápidas y potentes, optimizadas para rendimiento. . GraphQL: Proporciona un enfoque declarativo e independiente del almacenamiento, permitiendo a los desarrolladores especificar exactamente qué datos necesitan. En esta diversidad, los lenguajes modernos comparten características como la capacidad para manejar datos estructurados y no estructurados, la integración con lenguajes de programación modernos, y la adaptación a la distribución y el paralelismo, esenciales en aplicaciones actuales.
3. Optimización de consultas El coste de procesar una consulta depende en gran medida de los accesos a disco, que son mucho más lentos que los accesos a memoria. Por ello, es crucial optimizar las
3.1. Información del catálogo para la estimación del coste
3.2. Medidas del coste de una consulta
3.3. Elección de los planes de evaluación
3.3.1. Optimización basada en el coste
3.3.2. Optimización heurística
3.3.3. Estructura de los optimizadores de consultas
4. Conclusiones.
5. Bibliografía