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

32
Organización y acceso a los datos (continuación) Bases de Datos 2 - Tecnologo de Informatica BD2 - Programación

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

Page 1: Organización y acceso a los datos (continuación) · Archivo Secuencial Archivo Indexado (clave el 1er atributo) BD2 - Programación. ... Organizacion y acceso a los datos (Indices)

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

Bases de Datos 2 - Tecnologo de Informatica

BD2 - Programación

Page 2: Organización y acceso a los datos (continuación) · Archivo Secuencial Archivo Indexado (clave el 1er atributo) BD2 - Programación. ... Organizacion y acceso a los datos (Indices)

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

Page 3: Organización y acceso a los datos (continuación) · Archivo Secuencial Archivo Indexado (clave el 1er atributo) BD2 - Programación. ... Organizacion y acceso a los datos (Indices)

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

Page 4: Organización y acceso a los datos (continuación) · Archivo Secuencial Archivo Indexado (clave el 1er atributo) BD2 - Programación. ... Organizacion y acceso a los datos (Indices)

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

Page 5: Organización y acceso a los datos (continuación) · Archivo Secuencial Archivo Indexado (clave el 1er atributo) BD2 - Programación. ... Organizacion y acceso a los datos (Indices)

¿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

Page 6: Organización y acceso a los datos (continuación) · Archivo Secuencial Archivo Indexado (clave el 1er atributo) BD2 - Programación. ... Organizacion y acceso a los datos (Indices)

¿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

Page 7: Organización y acceso a los datos (continuación) · Archivo Secuencial Archivo Indexado (clave el 1er atributo) BD2 - Programación. ... Organizacion y acceso a los datos (Indices)

Organización física de datos

BD2 - Programación

Page 8: Organización y acceso a los datos (continuación) · Archivo Secuencial Archivo Indexado (clave el 1er atributo) BD2 - Programación. ... Organizacion y acceso a los datos (Indices)

¿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

Page 9: Organización y acceso a los datos (continuación) · Archivo Secuencial Archivo Indexado (clave el 1er atributo) BD2 - Programación. ... Organizacion y acceso a los datos (Indices)

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

Page 10: Organización y acceso a los datos (continuación) · Archivo Secuencial Archivo Indexado (clave el 1er atributo) BD2 - Programación. ... Organizacion y acceso a los datos (Indices)

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

Page 11: Organización y acceso a los datos (continuación) · Archivo Secuencial Archivo Indexado (clave el 1er atributo) BD2 - Programación. ... Organizacion y acceso a los datos (Indices)

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

Page 12: Organización y acceso a los datos (continuación) · Archivo Secuencial Archivo Indexado (clave el 1er atributo) BD2 - Programación. ... Organizacion y acceso a los datos (Indices)

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

Page 13: Organización y acceso a los datos (continuación) · Archivo Secuencial Archivo Indexado (clave el 1er atributo) BD2 - Programación. ... Organizacion y acceso a los datos (Indices)

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

Page 14: Organización y acceso a los datos (continuación) · Archivo Secuencial Archivo Indexado (clave el 1er atributo) BD2 - Programación. ... Organizacion y acceso a los datos (Indices)

Índices

Archivo Secuencial Archivo Indexado (clave el 1er

atributo)

BD2 - Programación

Page 15: Organización y acceso a los datos (continuación) · Archivo Secuencial Archivo Indexado (clave el 1er atributo) BD2 - Programación. ... Organizacion y acceso a los datos (Indices)

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

Page 16: Organización y acceso a los datos (continuación) · Archivo Secuencial Archivo Indexado (clave el 1er atributo) BD2 - Programación. ... Organizacion y acceso a los datos (Indices)

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

Page 17: Organización y acceso a los datos (continuación) · Archivo Secuencial Archivo Indexado (clave el 1er atributo) BD2 - Programación. ... Organizacion y acceso a los datos (Indices)

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

Page 18: Organización y acceso a los datos (continuación) · Archivo Secuencial Archivo Indexado (clave el 1er atributo) BD2 - Programación. ... Organizacion y acceso a los datos (Indices)

Í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

Page 19: Organización y acceso a los datos (continuación) · Archivo Secuencial Archivo Indexado (clave el 1er atributo) BD2 - Programación. ... Organizacion y acceso a los datos (Indices)

Índices con datos ordenadosÍndice primario

BD2 - Programación

Page 20: Organización y acceso a los datos (continuación) · Archivo Secuencial Archivo Indexado (clave el 1er atributo) BD2 - Programación. ... Organizacion y acceso a los datos (Indices)

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

BD2 - Programación

Page 21: Organización y acceso a los datos (continuación) · Archivo Secuencial Archivo Indexado (clave el 1er atributo) BD2 - Programación. ... Organizacion y acceso a los datos (Indices)

Í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

Page 22: Organización y acceso a los datos (continuación) · Archivo Secuencial Archivo Indexado (clave el 1er atributo) BD2 - Programación. ... Organizacion y acceso a los datos (Indices)

Índice secundario denso (con puntero a bloque)

BD2 - Programación

Page 23: Organización y acceso a los datos (continuación) · Archivo Secuencial Archivo Indexado (clave el 1er atributo) BD2 - Programación. ... Organizacion y acceso a los datos (Indices)

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

BD2 - Programación

Page 24: Organización y acceso a los datos (continuación) · Archivo Secuencial Archivo Indexado (clave el 1er atributo) BD2 - Programación. ... Organizacion y acceso a los datos (Indices)

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

Page 25: Organización y acceso a los datos (continuación) · Archivo Secuencial Archivo Indexado (clave el 1er atributo) BD2 - Programación. ... Organizacion y acceso a los datos (Indices)

Í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

Page 26: Organización y acceso a los datos (continuación) · Archivo Secuencial Archivo Indexado (clave el 1er atributo) BD2 - Programación. ... Organizacion y acceso a los datos (Indices)

Á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

Page 27: Organización y acceso a los datos (continuación) · Archivo Secuencial Archivo Indexado (clave el 1er atributo) BD2 - Programación. ... Organizacion y acceso a los datos (Indices)

Árbol BEN ed7 fig 17.10

BD2 - Programación

Page 28: Organización y acceso a los datos (continuación) · Archivo Secuencial Archivo Indexado (clave el 1er atributo) BD2 - Programación. ... Organizacion y acceso a los datos (Indices)

Á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

Page 29: Organización y acceso a los datos (continuación) · Archivo Secuencial Archivo Indexado (clave el 1er atributo) BD2 - Programación. ... Organizacion y acceso a los datos (Indices)

Árbol B+EN ed7 fig 17.11

BD2 - Programación

Page 30: Organización y acceso a los datos (continuación) · Archivo Secuencial Archivo Indexado (clave el 1er atributo) BD2 - Programación. ... Organizacion y acceso a los datos (Indices)

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

Page 31: Organización y acceso a los datos (continuación) · Archivo Secuencial Archivo Indexado (clave el 1er atributo) BD2 - Programación. ... Organizacion y acceso a los datos (Indices)

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

Page 32: Organización y acceso a los datos (continuación) · Archivo Secuencial Archivo Indexado (clave el 1er atributo) BD2 - Programación. ... Organizacion y acceso a los datos (Indices)

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