estructuras de indices

Embed Size (px)

DESCRIPTION

indices

Citation preview

  • Estructuras de ndices

    Traduccin: Dra. Maria del Pilar Angeles

  • IntroduccinLos registros se organizan en bloques dealmacenamiento secundario.

    Los registros tienen una direccin ya sea lgica o fsica.

    Sin embargo, las consultas SQL queries referencian avalores de atributos, no direcciones de registro.

    SELECT * FROM R WHERE a=10;

    Cmo encontrar los registros que tienen cirtos valoresen sus atributos?

  • Introduccin

    recordID1

    recordID2. . .

    valor

    valor

    valorRegistros

    que corresponden

    Al indice

    indice

    bloques

    conteniendo

    registros

    valor

  • Estructuras de indices

    Conceptos BsicosLas estructuras de almacenamiento consisten dediferentes tipos de archivos:

    Archivos de datos p.e., los registros de una tabla.

    Llave de bsqueda: Uno o mas atributos para los cualesnosotros queremos realizar bsquedas eficientes.

    Archivos de indices para la busqueda de una llave en unarchivo de datos, los valores de la llave de busqueda seasocian con apuntadores a un identificador de algunregistro (recordID = rid) que tiene esta valor.

    Archivo secuencial: Archivos que son accesados demanera secuencial. En la mayoria de los casos, losregistros estan ordenados de acuerdo con su llaveprimaria a dichos archivos se les llama ordenados.

  • Archivo secuencial

    2010

    4030

    6050

    8070

    10090

    Estructuras de indices Conceptos Bsicos

  • Existen tres alternativas para entradas de datos k*:

    a) Que corresponda al registro con valor de llave k

    b) Entrada de forma

    c) Entrada de forma

    La opcin depende de la tcnica utilizada para el

    indexado para localizar las entradas k*

    Existen dos tcnicas muy utilizadas para el indexado:

    - estructuras de rbol

    - tablas hash.

    Estructuras de indices Conceptos Bsicos

  • Indice denso: Una entrada en indice por cada registro delarchivo de datos.

    Indice disperso (Sparse index): Existen entradas de indicessolamente para algunos registros en el archivo de datos.Tipicamente, una enrada por bloque del archivo de datos.

    Indice primario Determina la ubicacion de los registros enel archivo de datos, p.e. el orden de las entradas de indicees la misma que la de los registros de datos. clusteredindex en Sybase

    Indice secundario Este indice no determina la ubicacinfisica de los datos. non clustered index en Sybase

    Puede tener un indice primario, pero multiples indicessecundarios

    Estructuras de indices Conceptos Bsicos

  • Archivo Secuencial

    2010

    4030

    6050

    8070

    10090

    Indice denso

    10203040

    50607080

    90100110120

    Estructuras de indices Conceptos Bsicos

  • Archivo secuencial

    2010

    4030

    6050

    8070

    10090

    Indice disperso

    10305070

    90110130150

    170190210230

    Estructuras de indices Conceptos Bsicos

  • 1010

    2010

    3020

    3030

    4540

    10203040

    Valores de llave duplicados ndice disperso entrada de datos para la primer llave del bloque

    Estructuras de indices Conceptos Bsicos

  • Indice disperso:

    - Requiere menos espacio para indice por registro

    - Puede mantener mas de un indice en memoria.

    - Necesario para indices secundarios.

    Indice denso:

    - Puede determinar si existe algun registro sin

    necesidad de accesar a los datos

    - Es mejor para las inserciones.

    Estructuras de ndices Conceptos Bsicos

  • El archivo de indices puede hacerse muy grande p.e. al

    menos una dcima del tamao del archivo de datos

    para archivos con 10 atributos de longitud igual.

    Para acelerar el acceso por indices, agregar un indice de

    segundo nivel al inicio del indice de primer nivel,. . .

    El primer nivel puede ser denso, los dems niveles

    sern dispersos.

    Estructuras de ndices Conceptos Bsicos

  • Archivo secuencial

    2010

    4030

    6050

    8070

    10090

    Disperso 2do nivel

    10305070

    90110130150

    170190210230

    1090170250

    330410490570

    Estructuras de ndices Conceptos Bsicos

  • La estructura del indice necesita soportar consultas por igualdad y

    consultas por rango.

    Consultas por igualdad: se especifica un valor de atributo

    p.e. docID = 100, o edad = 18.

    Consulta por rango: se especifica un rango de valores de un atributo,

    p.e. 30

  • ISAM

    ISAM = Index Sequential Access Method

    Metodo de acceso secuencial por indice

    Jerarquia de archivos de indices (estructura de rbol)

    No-hoja

    bloques

    bloques

    Bloque

    overflowBloques primarios

    hoja

  • ISAM

    Los bloques hoja contienen entradas de datos.

    Los bloques medios (no hoja) contienen pares de tipo

    (ki,pi), donde ki es un valor de llave de bsqueda y pi un

    apuntador al (primero de los) registros con ese valor de

    llave.

    P0

    K1 P 1

    K 2 P 2K

    mP m

  • ISAM

    Creacin de Archivo

    Los bloques hoja (de datos) alojados secuencialmente,

    clasificados segun la llave de bsqueda.

    Despues se alojan los bloques medios, despus se

    alojan bloques de desborde (overflow).

    Las entradas de los indices son de la forma: ; estas direccionan la

    busqueda de entradas de datos, los cuales estan en los

    bloques hoja.

  • ISAM

    10* 15* 20* 27* 33* 37* 40* 46* 51* 55* 63* 97*

    20 33 51 63

    40

    Raiz

    Ejemplo

  • ISAM

    Operaciones con indices

    BsquedaEmpieza en la raiz; realiza comparacionescon la llave para llegar a la hoja.

    InsercinEncuentra la entrada que apunta a la hoja de datos a la que pertenece y la pone ah.

    BorradoEncuentra y remueve la hoja, si esto deja un bloque de desborde (overflow) lo desaloja.

    Traduccin: Dra. Maria del Pilar Angeles

  • ISAMEjemplo

    Despus de insertar 23*, 48*, 41*, 42*

    10* 15* 20* 27* 33* 37* 40* 46* 51* 55* 63* 97*

    20 33 51 63

    40

    Raiz

    23* 48* 41*

    42*

    Bloques de

    desborde

    primarios

    bloques

    De ndice

    De datos

    Bloques

  • ISAM

    Ejemplo

    Despus de borrar 42*, 51*, 97*.

    51* aparece a nivel de indice pero no a nivel hoja.

    10* 15* 20* 27* 33* 37* 40* 46* 55* 63*

    20 33 51 63

    40

    Raiz

    23* 48* 41*

    Traduccin: Dra. Maria del Pilar Angeles

  • ISAM

    Discusin

    Inserciones / borrados afectan solamente pginas hoja. rbol de estructura esttica

    Un rbol se puede degenerar a una lista lineal de bloques dedesborde.

    En ste caso, ISAM pierde todas las ventajas comparado conun simple archivo de indices no jerrquico.

    Podemos mantener una estructura de arbol balanceadodinmicamente bajo inserciones y borrados?

    Traduccin: Dra. Maria del Pilar Angeles

  • rboles B -- B-Trees

    Introduccin

    El nodo de un arbol corresponde a un bloque.

    Los rboles B sin balanceados, es decir, todas las hojas seencuentran al mismo nivel.

    Los rboles V garantizan una utilizacin de espacio mnima.

    n (orden): Nmero mximo de llaves por nodo,el mnimo nmero de llaves es n/2.

    Excepcin: la raz puede tener una sola llave.

    Tiene m + 1 apuntadores en cada nodo y m nmero de llaves.

    Traduccin: Dra. Maria del Pilar Angeles

  • rboles BIntroduccin

    Entradas de ndices

    (nodos medios)

    Entradas de datos

    (nodos hoja)

    Nodos hoja estn ligados en orden secuencial

    Esta variante del arbol B es normalmente referido como rbol b +

  • rbol BIntroduccin

    Formato del nodo: (p,k1, . . ., pn,kn,pn+1)pi: apuntador, ki: llave de bsqueda

    Nodo with m apuntadores tiene m hijos y correspondientessubrboles.

    La entrada n+1del rbol tiene solamente apuntados. A nivel hoja, esteapuntador referencia al siguiente nodo hoja.

    Propiedad de llave de bsqueda: El i-simo subrbol contiene entradasde datos con llave k < ki, el i+1subrbol contiene entradas de datoscon llave k >= ki.

    Traduccin: Dra. Maria del Pilar Angeles

  • rbol BEjemplo

    Raiz n = 3

    100

    120

    150

    180

    30

    3 5 11

    30

    35

    100

    101

    110

    120

    130

    150

    156

    179

    180

    200

  • Ejemplo

    llaves llaves llaves llaves

    < 57 57 k

  • Ejemplo

    del nodo no hoja

    a la siguiente

    hoja en secuencia

    57

    81

    95

    Haci

    a e

    l re

    gis

    tro

    con lla

    ve 5

    7

    Haci

    a e

    l re

    gis

    tro

    con lla

    ve 8

    1

    Haci

    a e

    l re

    gis

    tro

    con lla

    ve 8

    5

    Nodo hoja

    rbol B

  • Utilizacin de espacio

    nodo lleno min. nodo

    No hoja

    Hoja 120

    150

    180

    30

    3 5 11

    30

    35

    Cuenta

    aunque e

    ste n

    ulo

    n = 3

    rbol B

  • Consultas por igualdad

    Para buscar por una llave k, empieza desde la raiz.

    En un nodo dado, enconrtar la llave mas cercana ki y seguir hacia el apuntador izquierdo (pi) o derecho (pi+1) dependiendo de la comparacion de k y ki.

    Continuar, hasta que se alcance el nodo hoja.

    Explora una ruta de la raiz al nodo hoja

    La altura del Arbol B es O(log n/2 N) donde N es el numero de registros indexados

    Complejidad de tiempo de ejecucin O(log N)

    rbol B

    Traduccin: Dra. Maria del Pilar Angeles

  • Inserciones

    Siempre insertar en la hoja correspondientes.

    El rbol crece de abajo hacia arriba.

    Existen cuatro posibles casos:

    1.- Existe espacio disponible en la hoja,

    2.- Existe desborde en la hoja,

    3.- Existe desborde en nodo no-hoja,

    4.- Se requiere una nueva raiz.

    rbol B

  • Inserciones

    Caso 1: Existe espacio disponible en la hoja

    3 5 11

    30

    31

    30

    100

    32

    Inserta llave 32

    n = 3

    rbol B

  • Inserciones

    Caso 2: Existe desborde en la hoja

    El nodo desbordado se Divide en dos de tamaoCasi igual y se copia la mitad (separando) la llave en un nodo padre

    3 5 11

    30

    31

    30

    100

    3 5

    7

    7

    n = 3

    Inserta llave7

    rbol B

  • Inserciones

    Caso 3: Desborde de nodo no hoja

    El nodo desbordado se

    divides y ubica la siguientemitad arriba hacia el nodo padre

    100

    120

    150

    180

    150

    156

    179

    180

    200

    160

    180

    160

    179

    Inserta llave160

    rbol B

  • Inserciones

    Caso 4: Nueva raiz

    El corte se puede propagar hasta la raiz resultando en un

    nueva raiz10

    20

    30

    1 2 3 10

    12

    20

    25

    30

    32

    40

    40

    45

    40

    30nueva raiz

    Insertar llave 45

    rbol B

  • Borrados

    Localizar el nodo hoja correspondiente.

    Borrar la entrada especifcada.

    Existen cuatro posibles casos:

    1. El nodo hoja aun tiene entradas suficientes no hay problema

    2. Unirse con un vecino (hermano),

    3. Re-distribuir llaves,

    4. Unirse o re-distribuirse en un nodo no hoja.

    rbol B

  • Borrado

    Caso 1: Unirse con un vecino (hermano)

    Si el nodo queda casi vacio y

    el nodo hermano aun tiene espacio,

    unir los dos nodos

    10

    40

    100

    10

    20

    30

    40

    50

    40

    Borrar llave 50

    n=4

    rbol B

  • Borrado

    Caso 3: Re-distribuir llaves,

    Si el nodo queda casi vacioy el hermano tiene entradas extra,re-distribuir las entradasde los dos nodos

    Borrar llave 50

    n=4

    10

    40

    100

    10

    20

    30

    35

    40

    50

    35

    35

    rbol B

  • Borrados

    Caso 4: Unirse o distribuirse en un nodo no-hojaBorrar llave37

    n=4

    40

    45

    30

    37

    25

    26

    20

    22

    10

    141 3

    10

    20

    30

    4040

    30

    25

    25

    Nueva raiz

    rbol B

  • rboles B en prctica

    El concepto de Orden (n) fue reemplazado por el criterio prctico de un espacio ficiso (cuando menos medio lleno).

    Los nodos medios tipicamente pueden contener muchas mas entradas que los nodos hojas.

    Los registros de longitud variable y las llaves de bsqueda significan que diferentes nodos contendran diferente cantidad de entradas.

    Aun con campos de longitud fijas, muchos registros con el mismo valor de llave (llaves duplicadas) pueden conducir a entradas de datos de

    tamao variable.

    rbol B