Implementación de SGBD y Estructuras Físicas de Datos
Clasificado en Informática
Escrito el en español con un tamaño de 4,79 KB
Introducción a la Implementación de SGBD
Después de comprender SQL, el modelo E/R y el modelo relacional, es crucial abordar el Modelo físico de datos. Este modelo se encarga de la representación de la información en estructuras de archivos (bytes), donde las relaciones y atributos se traducen a "bytes" en disco.
La implementación de un SGBD implica:
- Implementar las operaciones relacionales (consultas y actualizaciones: inserción, modificación, eliminación) sobre los datos almacenados en disco.
- Aplicar optimizaciones para hacer viables las operaciones de consulta y actualización. Esto incluye el análisis del coste de las operaciones en disco, estrategias de borrado/inserción/compactación e indexación (índices simples, árboles B, hashing).
- Un SGBD debe ser capaz de:
- Almacenar en memoria externa los datos del estado de una BD.
- Definir una organización física de estos datos (en bytes de archivos en disco).
- Ejecutar sentencias SQL: convertirlas a operaciones elementales de acceso y actualización de datos en archivos.
- Optimizar el acceso a datos en disco (indexación).
Estructura Física: Campos y Registros
En el modelo físico, una tupla se traduce en un registro y un atributo en un campo. La delimitación de registros y campos puede ser de longitud fija o longitud variable.
En el caso de longitud variable, se utilizan diferentes métodos:
- Separador
- Indicador de longitud
- Fichero de direcciones
Además, se utilizan cabeceras con "auto-descripción" de estructuras, número de registros, etc. El formato de almacenamiento puede ser texto, binario o comprimido.
Delimitación de Registros y Campos
Longitud Fija
- Acceso a datos más rápido.
- Los registros se direccionan por número de orden (nrr).
Longitud Variable
- Acceso más lento.
- Optimización de espacio en disco.
- Los registros se direccionan por su posición en bytes (offset).
Cabecera
- Sección descriptiva de la estructura física de un archivo: qué campos, cómo se delimitan, etc.
- Permite implementaciones más generales que admitan diferentes formas de organizar físicamente los registros.
¿Longitud Fija o Variable?
La elección entre longitud fija y variable depende de las necesidades específicas:
- Longitud fija: economía de procesamiento (y de esfuerzo de programación). Es una solución cómoda de desarrollar y ejecutar.
- Longitud variable: economía de espacio en disco. El esfuerzo de desarrollo/ejecución puede compensar, por ejemplo, cuando:
- El consumo de disco es un problema.
- La variabilidad de tamaño de registros es muy amplia: campos muy variables y/u opcionales (valores NULL).
- Se juntan registros de diferentes tipos en el mismo archivo.
- Si un campo es realmente grande (documento de texto o multimedia), se suele almacenar en un archivo aparte y se guarda en el registro un descriptor de la dirección donde se almacena el valor del campo.
Escritura/Lectura en Binario vs Texto
Ejemplo para guardar en disco el short n=425:
- BINARIO (fwrite(&n,sizeof(n),1,f)): Pasar el 425 a complemento 2.
- TEXTO (fprintf(f,"%d",n)): Divide el 425 en: 4, 2 y 5. Hace el ASCII de cada número y después el complemento 2 (binario).
Generalmente, el modo texto ocupa más e implica la conversión en RAM de binario a texto (tipo "itoa"). Sin embargo, es legible con un editor de texto. La lectura (como es lógico) debe ser coherente con la escritura: binario ↔ binario, texto ↔ texto (es decir, fwrite ↔ fread, fprintf ↔ fscanf).
Operaciones en Disco
Las operaciones principales en disco son:
- Acceso:
- Acceso a un registro por posición.
- Búsqueda de registros por condiciones (consultas).
- Índices para optimizar las operaciones de acceso.
- Actualización:
- Inserción, modificación, eliminación: típicamente conllevan una consulta.
- Borrado eficiente combinado con inserción.
- Coste de acceso a datos en disco:
- Es un aspecto clave y condiciona todas las técnicas.
- En disco es varios órdenes de magnitud mayor al de acceso en RAM.
- Hace inviables formulaciones sencillas de operaciones comunes.
- Cambia completamente el análisis de complejidad.
- Cambia las estrategias y algoritmos con respecto a las técnicas en RAM.