Organización y acceso a los datos (continuación) · Archivo Secuencial Archivo Indexado (clave el...

Post on 07-Mar-2021

24 views 0 download

Transcript of Organización y acceso a los datos (continuación) · Archivo Secuencial Archivo Indexado (clave el...

Organización y acceso a los datos(continuación)

Bases de Datos 2 - Tecnologo de Informatica

BD2 - Programación

Outline

1 RecapitulemosOrganización y Acceso a Datos

2 Estructuras de indexaciónConceptos básicosÍndices ordenadosEstructuras Hash y Árbol B/B+

3 Definición de índice en SQL

BD2 - Programación

Outline

1 RecapitulemosOrganización y Acceso a Datos

2 Estructuras de indexaciónConceptos básicosÍndices ordenadosEstructuras Hash y Árbol B/B+

3 Definición de índice en SQL

BD2 - Programación

Outline

1 RecapitulemosOrganización y Acceso a Datos

2 Estructuras de indexaciónConceptos básicosÍndices ordenadosEstructuras Hash y Árbol B/B+

3 Definición de índice en SQL

BD2 - Programación

¿Que hay a nivel físico?

DiscosConjunto de bloques de tamaño fijo que son direccionablesa través de alguna forma de dirección por algunainstrucción especifica. (Read)

ParticiónSubconjunto contiguo de los bloques de un disco.

BD2 - Programación

¿Que hay a nivel físico?

File Systems (FS)Estructura de datos que facilita el acceso del sistemaoperativo (SO) a los distintos bloques de la partición.Típicamente se construye con comandos como Format,Newfs, mkfs, etc., dependiendo del SO.

ArchivoEstructura lógica que se construye sobre el FS. Es la queusualmente utilizan los programas de aplicación.Típicamente se ven como una secuencia de caracteres ocomo una secuencia de registros delimitados por algúncarácter especial o de tamaño fijo y el acceso essecuencial.

BD2 - Programación

Organización física de datos

BD2 - Programación

¿Cómo utilizan los DBMS esto?

Típicamente toman una partición del disco o un granarchivo y usan dicha área como su “disco”.Re implementan:

Estructuras de datos y sus algoritmos de manipulación.Algoritmos de ordenación.Mecanismos de buffering y paginado.

Cuando se habla de estructuras se debe pensar en comoorganizar los datos para una (o más) tablas

BD2 - Programación

Formas de acceder a los registros

El acceso secuencial a archios es bueno para un DBMS?Consideremos las siguientes tablas y la siguiente consulta:

EMPLEADOS(nombre,edad,salario,Dno)DEPARTAMENTOS(Dno,nombreDpto,piso,gerente)

SELECT e.nombre, d.pisoFROM EMPLEADOS e, DEPARTAMENTOS dWHERE e.Dno = d.Dno AND e.salario > 30000

¿Cómo se ejecutaría esta consulta si sólo contáramos conacceso secuencial a los archivos?

BD2 - Programación

Formas de acceder a los registros

Supongamos que hay un archivo de empleados y otro dedepartamentos:

πnombre,piso ( σsalario>30000 (EMPLEADOS ∗ DEPARTAMENTOS)

Recorrer todo elresultado de la se-lección y devolverciertas posicionesde cada registro.

Recorrer todo elresultado del joiny devolver los re-gistros que cum-plen la condición.

Para cada uno de losregistros de uno de losarchivos buscar en elotro aquellos registrosque tienen igual valor encampos de igual nombrey agregarlos al resulta-do.

BD2 - Programación

Costos de acceso

En el Join, si M es el tamaño de empleados, y N es eltamaño de departamentos⇒ se necesitan M*N

Son muy costosas!!operaciones de acceso a disco.

¿Cómo se puede mejorar?Usando otras estructuras de datos

INDICES

sobre disco quefaciliten el acceso.

BD2 - Programación

Outline

1 RecapitulemosOrganización y Acceso a Datos

2 Estructuras de indexaciónConceptos básicosÍndices ordenadosEstructuras Hash y Árbol B/B+

3 Definición de índice en SQL

BD2 - Programación

Outline

1 RecapitulemosOrganización y Acceso a Datos

2 Estructuras de indexaciónConceptos básicosÍndices ordenadosEstructuras Hash y Árbol B/B+

3 Definición de índice en SQL

BD2 - Programación

Índices

Archivo Secuencial Archivo Indexado (clave el 1er

atributo)

BD2 - Programación

Conceptos básicos

Clave de ordenación (search key), también denominadoclave principal, es un atributo utilizado para buscarregistros en un archivo.Un archivo índice consiste de registros, llamadosentradas de índice (index entries), de la forma

clave de ordenación puntero

Comunmente los archivo índice son mucho mas pequeñosque el archivo original.

BD2 - Programación

Tipos de Índices

Físicos vs. LógicosReferencias a ubicación en disco o referencias a índicesfísicos.Consideraremos sólo los físicos.

Ordenados vs. No ordenadosRequieren o no del ordenamiento de los datos por elatributo a indexar.

Densos o no densos.Hay entradas de índice para todo valor de la clave deordenacón o solo para algunos valores.

Simples vs. Multi-nivel

BD2 - Programación

Outline

1 RecapitulemosOrganización y Acceso a Datos

2 Estructuras de indexaciónConceptos básicosÍndices ordenadosEstructuras Hash y Árbol B/B+

3 Definición de índice en SQL

BD2 - Programación

Índices ordenados

Índice primario (o principal)Sobre clave primaria.Por cada clave: dirección en el disco (bloque obloque+offset).

De agrupamiento (cluster index)Sobre un atributo que no es clave primaria.Por cada valor distinto: dirección en el disco al primerregistro del grupo (bloque o bloque+offset).

BD2 - Programación

Índices con datos ordenadosÍndice primario

BD2 - Programación

Índices con datos ordenadosÍndice cluster (por atributo Edad)

BD2 - Programación

Índices con datos no ordenadosÍndices secundarios

Se crea una estructura auxiliar ordenada por el campo aindexar.Por cada valor: un puntero al bloque donde se encuentrael valor,

Si el valor no se repite: un solo bloque.Sino, una lista. Tengo tantos punteros como bloquescontengan al valor.

BD2 - Programación

Índice secundario denso (con puntero a bloque)

BD2 - Programación

Índice secundario denso usando un nivel deindercción (con puntero a registro)

BD2 - Programación

Outline

1 RecapitulemosOrganización y Acceso a Datos

2 Estructuras de indexaciónConceptos básicosÍndices ordenadosEstructuras Hash y Árbol B/B+

3 Definición de índice en SQL

BD2 - Programación

Índices: otras estructuras utilizadas

HashMuy buen comportamiento en la inserción y en larecuperación por condiciones de igualdad.No funciona bien para condiciones con relaciones deorden.

Árboles B y B+Buen comportamiento en recuperación tanto porcondiciones de igualdad como de orden.Buen comportamiento en la inserción.Ocupa más disco.

BD2 - Programación

Árbol B

Es un árbol de búsqueda que puede estar vacío o aquelcuyos nodos pueden tener varios hijos tal como muestra eldibujo.Se dice que un árbol-B es de orden M (es el máximonumero de hijos que puede tener) si satisface lassiguientes propiedades:

Cada nodo tiene como máximo M hijos.Cada nodo (excepto raíz y hojas) tiene como mínimo M/2hijos.La raíz tiene al menos 2 hijos si no es un nodo hoja.Un nodo no hoja con q hijos, q ≤ M, contiene q-1elementos almacenados (y por tanto q-1 punteros a datos).Los hijos que cuelgan de la raíz (r1, . . . , rm) tienen quecumplir ciertas condiciones:

El primero tiene valor menor que r1.El segundo tiene valor mayor que r1 y menor que r2, y asísucesivamente hasta el último hijo que tiene valor mayorque rm.

BD2 - Programación

Árbol BEN ed7 fig 17.10

BD2 - Programación

Árbol B+

La diferencia del Árbol B+ con respecto al árbol B es queno hay datos (puntero a) en los nodos internos. Los datossólo están en las hojas.En cada nodo interno, el puntero de la izquierda de laclave apunta ahora a los menores o iguales, y el de laderecha a los mayores que la clave.Por otro lado, como los datos están en las hojas, entoncesse puede organizar otra estructura sobre ellos que facilitala recorrida ordenada.

BD2 - Programación

Árbol B+EN ed7 fig 17.11

BD2 - Programación

Resumen sobre Organización y Acceso a los Datos

Los DMBSs implementan diferentes estrategias paraorganizar los registros de una tabla:

Registros desordenados con acceso secuencial.Registros ordenados con acceso secuencial.Registros indexados por la clave primaria con hash.Registros indexados por la clave primaria con árbol B+.Registros indexados por otro atributo con un índice clúster.

BD2 - Programación

Outline

1 RecapitulemosOrganización y Acceso a Datos

2 Estructuras de indexaciónConceptos básicosÍndices ordenadosEstructuras Hash y Árbol B/B+

3 Definición de índice en SQL

BD2 - Programación

Definición de índice en SQL

Crear un índice,

CREATE INDEX nombre_indice ON nombre_relacion(lista_atributos)

Utilizar create unique index para especificar e imponerindirectamente la condición de que la clave de búsquedaes una clave candidata.

No se necesita si el DBMS soporta la restricción deintegridad SQL unique.

Eliminar un índice,

DROP INDEX nombre_indice

La mayoría de los sistemas de BD permiten especificar eltipo de índice.

BD2 - Programación