• Save
External Storage Fundamentals (Spanish)
Upcoming SlideShare
Loading in...5
×
 

External Storage Fundamentals (Spanish)

on

  • 323 views

Presentation about algorithms, data-structures and techniques for External Storage

Presentation about algorithms, data-structures and techniques for External Storage

Statistics

Views

Total Views
323
Views on SlideShare
323
Embed Views
0

Actions

Likes
0
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

External Storage Fundamentals (Spanish) External Storage Fundamentals (Spanish) Presentation Transcript

  • Instituto Tecnológico de Costa RicaDepartamento de Ingeniería en Computación Almacenamiento Externo Prof. Aníbal Gómez-Estrada Algoritmos y Estructuras de Datos 2 - II Semestre 2010
  • Motivación •  Algoritmos pueden ejecutar sobre gran volumen de datos: •  Memoria principal es limitada L •  Datos pueden requerir almacenamiento externo •  Sistema Operativo gestiona memoria secundaria. Peero... •  Impone limitaciones en el acceso de archivos •  Acceso a dispositivos de almacenamiento es caro L •  No todos los datos pueden residir en memoria principal: •  Programas deben usar recursos eficientemente •  Existen técnicas para estructurar colecciones de datos y proveer eficiencia en el acceso a los dispositivos J •  ¿Para divertirnos? JMotivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Introducción•  Desde un programa de alto nivel, un archivo es: •  Una colección de bytes en un dispositivo de almacenamiento externo (disco, cinta, etc) •  La principal abstracción disponible para almacenamiento externo (al menos, la de más bajo nivel)•  En bajo nivel, el Sistema Operativo administra la memoria física de (y abstrae la comunicación con) el dispositivo•  En dispositivos de almacenamiento externo (como discos): •  Sector de una Pista: Unidad mínima de transferencia entre el dispositivo y S.O •  Tiempo de encontrar un sector y leerlo a memoria principal ES GRANDE (comparado con el tiempo usual para procesar sus datos). Veamos lo que sucede…Motivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Introducción (2) •  Tiempo de búsqueda: colocar la cabeza sobre la pista que contiene al sector •  Tiempo de latencia: esperar que la cabeza quede sobre el sector •  Algoritmos que emplean almacenamiento externo deben procurar minimizar la cantidad de accesos a sectores!•  El Sistema Operativo: •  Divide memoria secundaria en clusters de igual tamaño (múltiplo del tamaño del sector) •  Organización/tamaño de clusters varía entre distintos sistemas •  Considera un archivo como una “lista enlazada” de clusters•  Un buffer es un área reservada de memoria principal: •  Operación básica copia un sólo cluster desde/hacia un bufferMotivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Introducción (3)•  Un cursor siempre apunta a un registro del buffer: •  En lectura, cuando el cursor deba moverse a un registro fuera del buffer, es momento de leer el siguiente cluster •  En escritura, cuando el buffer no pueda contener otro registro completo, el buffer se copia a un cluster disponible•  Programáticamente, un archivo es accedido mediante un “canal lógico” (gestionado por el s.o.) disponible a través de librerías de la plataforma/lenguaje (En .Net, System.IO)•  Las principales operaciones disponibles son (hacer demo?): •  Crear archivo: asocia un nuevo “canal lógico” a un archivo físico •  Abrir archivo: habilita lectura/escritura sobre un archivo existente •  Leer y escribir: obtiene/persiste bytes desde/hacia el archivo abierto •  Cerrar archivo: persiste el buffer y libera recursos consumidos •  Posicionamiento: mueve el cursor directamente a otra posiciónMotivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Sistemas de Archivos Desde la perspectiva de Sistemas Operativos: •  Suele ser uno de los aspectos más visible •  Provee mecanismo de acceso en línea a datos y programas •  Consiste de dos partes diferentes: 1.  Conjunto de archivos 2. Estructura de directorios •  Mapea el acceso/propiedades físicas de los dispositivos de almacenamiento externo en archivos (unidades lógicas): •  La estructura/significado del contenido del archivo es definida por su creador o usuario. Por ej: •  Archivo de texto (.txt): caracteres y líneas •  Archivo fuente (.py): comandos y declaraciones •  Archivo ejecutable (.exe): instrucciones ejecutables en arquitectura/sistema-operativo particularMotivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Sistemas de Archivos (2) •  Por conveniencia, un archivo tiene un nombre. Usualmente: •  Una cadena de caracteres (por ej. ABC.txt) •  Sistemas pueden o no diferenciar entre mayúsculas/minúsculas •  Aunque los atributos del archivo varían de un sistema a otro, típicamente describen el contenido y uso del archivo: •  Nombre: nombre simbólico legible por usuarios •  Identificador: nombre interno (número) dentro del sistema •  Tamaño: tamaño actual (bytes y/o clusters) •  Fecha/Hora e identidad de usuario: para monitorizar el uso del archivo en suceso de creación, última modificación y último acceso. •  Protección: para controlar quien puede leer, escribir o ejecutarMotivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Sistemas de Archivos (3) •  Algunos S.O. soportan el concepto de tipo de archivo: •  Usado como “sugerencia” acerca del contenido del archivo •  Técnica común lo incorpora dentro del nombre (“extensión”) •  Sistema operativo y programas de aplicación “reaccionan” de manera correspondiente ante un evento con el archivo •  Hay varios métodos de acceso a los datos de un archivo: •  Secuencial: datos/registros se acceden uno después del otro •  Lectura/escritura incrementa cursor •  Directo: datos/registros se acceden “por posición relativa” •  Lectura/escritura accede datos en cualquier orden (aleatorio) •  Depende del dispositivo de almacenamiento concreto: •  Cintas magnéticas NO soportan acceso directo (sólo secuencial)!Motivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Sistemas de Archivos (4) Desde la perspectiva de programas de aplicación: •  El almacenamiento y procesamiento de datos en memoria secundaria requiere algún orden y/o estructura a los datos: •  Sino, no se podría distinguir/acotar entre diversos datos recibidos por parte del usuario •  Organización más apropiada se determina a partir de: •  Características del medio de almacenamiento (método acceso) •  Naturaleza de las operaciones a ejecutar sobre los datosMotivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Sistemas de Archivos (5) •  Un campo es la mínima unidad lógica de datos en un archivo •  Algunas maneras de estructurar campos en archivos: •  Longitud fija: todos los datos de un campo con el mismo tamaño •  J: Posibilita acceso directo a los datos •  L: Desperdicia mucho espacio (“relleno” en blanco), cuando los datos de un mismo campo tienen longitud muy variable •  Indicador de longitud: Al inicio, un entero con longitud del campo •  J: Soporta datos de cualquier longitud •  L: Realiza varias operaciones para acceder al datoMotivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Sistemas de Archivos (6) •  Algunas maneras de estructurar campos en archivos (2): •  Delimitador: “dato de control” que indica cuando el dato terminó •  J: No desperdicia tanto espacio como en indicador de longitud •  L: “Inspecciona” en buffer temporal para reconocer el dato •  Pares Nombre=Valor: metadato que indica/describe el dato •  J: No almacena datos que no existen •  L: Requiere demasiado “espacio administrativo”Motivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Sistemas de Archivos (7) •  Un registro es un conjunto de campos que permanecen unidos desde un punto de vista conceptual •  Algunas maneras de estructurar registros en archivos: •  Longitud fija: todos los registros con el mismo tamaño •  J: Posibilita acceso directo a los registros •  L: Desperdicia mucho espacio (“relleno” en blanco)… •  Indicador de longitud: Al inicio, un entero con longitud del registro •  J: Soporta registros de cualquier longitud •  L: Imposible el acceso directoMotivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Sistemas de Archivos (8) •  Algunas maneras de estructurar registros en archivos (2): •  Delimitador: “dato de control” que indica cuando el registro terminó •  J: No desperdicia tanto espacio… •  L: ¿Y si algún dato es multi-línea? •  Archivo Índice: archivo que indica posición de inicio de los registros •  Lectura/escritura secuencial en índice y directa en registros •  J: Soporta registros de cualquier longitud •  L: Requiere manejo de archivo adicional:Motivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Sistemas de Archivos (9) •  En organización/estructuras de archivos: •  Un archivo es como un conjunto de registros del mismo tipo •  Cada registro está formado por un conjunto de campos •  Registro es mínima unidad de transferencia de información: •  Llave primaria: un campo (o la combinación de varios) que identifica de forma única a cada registro dentro del archivo •  No puede ser nula ni definida sobre campo con datos cambiantes •  Algunas veces “artificial” (NO un campo real) por incertidumbre •  Llave secundaria: un campo (o la combinación de varios) que puede usarse como criterio de búsqueda, actualización o borrado de registros •  Registros adheridos tienen punteros a otros registros: •  No pueden moverse por el almacenamiento! •  Archivos se almacenan en cierta cantidad de clusters •  Costo de una operación determinado por cantidad de clusters accesados…Motivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Sistemas de Archivos (10) •  Gestión por parte del S.O. (en clusters) repercute en cómo se deben manipular los registros de datos: •  Necesitamos técnicas eficientes con este tipo de organización! •  ¿El tamaño del cluster sirve para aprovechar lo ofrecido por el S.O.? •  Registros “en bloques” con tamaño múltiplo al del cluster! •  Dos Tipos: •  Emblocamiento Fijo: registros con longitud fija e inferior al cluster •  Factor de Bloqueo: FB = (LongitudBloque / LongitudRegistro) •  Un mismo registro no puede traslaparse en dos bloques distintos •  Desperdicia espacio en caso de que el tamaño del bloque no sea múltiplo del tamaño del registro L •  Emblocamiento Variable:…Motivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Sistemas de Archivos (11) Registros “en bloques” con tamaño múltiplo al del cluster! •  Dos Tipos: •  Emblocamiento Fijo: … •  Emblocamiento Variable: registros con longitud variable. Dos tipos.. •  Factor de Bloqueo estimada sobre longitud de registro promedio •  No Extendido: registro NO se traslapa a dos bloques distintos •  Extendido: registro SI puede traslaparse en varios bloques: •  Bloques NO necesariamente son adyacentes •  Requiere almacenar un puntero al siguiente bloqueMotivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Sistemas de Archivos (12) Operaciones sobre registros: Inserción •  SI el archivo NO mantiene un orden particular: •  SI hay bloque con suficiente espacio vacío •  Insertar el registro desde atrás. ¿Pork? •  SINO, •  Crear un bloque nuevo •  SINO, buscar el bloque que corresponda (según orden, tb requiere encadenar bloques) •  SI hay espacio disponible •  Desplazar los registros necesarios •  SINO, •  Dos Opciones...Motivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Sistemas de Archivos (13) Operaciones sobre registros: Inserción (2) •  SINO, Dos Opciones… 1. Emplear bloque de desbordamiento (overflow) ligado al bloque original y desplazar los registros para preservar el orden 2. Buscar un bloque vecino con espacio disponible y desplazar los registros entre los bloquesMotivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Sistemas de Archivos (14) Operaciones sobre registros: Borrado •  SI el bloque usa tabla de offsets: •  Compactar registros vecinos para dejar espacio libre en el centro del bloque (evita fragmentación) •  SINO, Dos Opciones… 1. Encadenar registros borrados (o espacio libre en el bloque) en forma de pila 2. Marcar registros borrados con un bit de eliminaciónMotivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Sistemas de Archivos (15) Operaciones sobre registros: Actualización •  SI registros son de longitud fija: •  Sólo reemplazar el contenido del registro! •  SINO, •  SI la nueva versión del registro es de tamaño mayor, •  SI el bloque tiene suficiente espacio vacío •  Tomar espacio disponible y desplazar registros necesarios •  SINO, •  Usar técnicas de inserción (bloque de desbordamiento o inspeccionar bloques vecinos) •  SINO, •  Usar técnicas de borrado (desplazar registros vecinos o lista de espacio libre)Motivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Sistemas de Archivos (16) Operaciones sobre registros: Recuperación Secuencial •  Costo de recuperar un registro equivale al tiempo de posicionamiento (búsqueda o seek-time) •  En archivos SIN bloques: •  Tprom-accesos(n) = N/2 = O(n) •  Recuperar dos registros consecutivos requiere 2 accesos a disco, si la lectura se realiza por registro •  En archivos CON bloques: •  Tprom-accesos(n) = n/(2*FB) = O(n), Peero… •  Aunque dure más transfiriendo cada bloque, tiempo de posicionamiento es muy inferior! •  Cantidad de comparaciones en memoria NO cambia!Motivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Sistemas de Archivos (17) Operaciones sobre registros: Recuperación Directa e Indices •  Acceso directo = Posibilidad de posicionarse directamente al inicio de un registro y accederlo •  Tprom-accesos(n) = O(1) •  Hay dos métodos principales. •  Dispersión (Hashing): calcula posición del registro a partir de un campo llave •  Indexación: almacena posición de cada registro en un archivo secundario (índice) •  Por otro lado, se puede adoptar varias formas de organizar los registros en función de su utilidad y en relación a sus operaciones más frecuentes: •  Organización Secuencial, Directa (Relativa), Indexada, …Motivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Archivos Secuenciales•  Registros están ordenados en función de una llave•  Registros tienen misma cantidad de campos•  Campos aparecen en el mismo orden•  Registros pueden tener longitud fija o variableMotivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Archivos Secuenciales (2)Manipulación de Registros:•  Inserción: Dos Alternativas 1. Desplazamiento: Buscar posición y desplazar si no hay campo O(n) 2. Zona de Desbordamiento en mismo archivo o auxiliar. O(1)•  Borrado: Marcar registro con bit de eliminación. O(1)•  Actualización: Dos Casos SI Llave de Orden cambia O Longitud de Registro cambia Borrar registro O(1) e Insertarlo O(?) SINO, Re-escribe registro directamente O(1)•  Reorganización: Compactar registros en nuevo archivo •  Zona de Desbordamiento incide en tiempo de lecturas (NO está ordenada) •  Borrado genera fragmentación (espacio NO utilizado)Motivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Archivos Secuenciales (3)Manipulación de Registros (2):•  Recuperación Simple: Dos Casos SI Llave de Orden es Criterio de Búsqueda y Longitud de Registro es Fija Búsqueda Binaria O(Log2(n)) SINO, Búsqueda Secuencial O(n) SI Búsqueda falla => Búsqueda Secuencial en Zona de Desbordamiento O(n)•  Recuperación Exhaustiva: •  Búsqueda Secuencial sobre todo el archivo y Zona de Desbordamiento O(n)•  Recuperación Ordenada: Dos Casos SI Llave de Orden es Criterio de Orden Reorganización y Recuperación Exhaustiva O(n) SINO, Búsqueda Exhaustiva de primer registro O(n), luego siguiente O(n),… O(n2)Motivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Archivos Secuenciales (4)•  Operaciones en Archivos Secuenciales son lentas L •  La mayoría de las operaciones requieren lectura del archivo completo•  Uso de Zona de Desbordamiento incide en rendimiento •  Búsquedas deben explorar dos zonas de datos diferentes con métodos de acceso distintos (ordenada y desordenada) •  Entre más crece, acceso a datos es más lento (búsqueda secuencial) •  NO usar: •  Tamaño del archivo es grande •  Información es muy volátil (muchas reorganizaciones)•  Por fortuna, otras organizaciones de archivos proveen acceso a un registro mediante pocas lecturas al archivo J...Motivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Archivos Relativos•  Proporciona acceso directo a registros mediante Dispersión •  Útil si acceso por registro es + importante que acceso a secuencias•  Dispersión (Hashing) es una técnica útil en estructuras de datos de tipo Conjunto: Tabla de Dispersión (Tabla de Hash) o Diccionario •  En promedio, provee “tiempo constante” en operaciones de acceso a la estructura de datos (inserción, borrado y pertenencia (conjuntos)) •  En peor caso, tiene tiempo proporcional al tamaño del conjunto. No obstante, “con mucho cuidado” la probabilidad se puede minimizar•  Determina la posición de un elemento a través de una función de dispersión o hash h(x) (un tanto “imperfecta”)•  Antes de ver su aplicación en almacenamiento externo, conviene echar un vistazo a la técnica y estructura de datos… •  Dos Tipos: Dispersión Abierta y Dispersión CerradaMotivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Archivos Relativos (2)Dispersión Abierta (Externa)•  Almacena elementos del conjunto en un espacio ilimitado•  Divide el conjunto de N miembros (posiblemente infinito) en una cantidad finita de C “clases” numeradas como 0,…,C-1 •  Tabla de cubetas es un arreglo de 0,…,C-1 entradas que apuntan al inicio de cada una de las B listas enlazadas asociadas con las C clases •  Función de dispersión h(x) produce la clase o cubeta para cada elemento x del conjunto •  Miembro x del i-esimo conjunto es aquel tal que h(x) = i•  Es deseable que las cubetas tengan un tamaño similar (N/C): •  Si N es estimable y se elige C lo suficientemente grande, una cubeta tendrá pocos elementos en la medida en que se puedan dispersar uniformemente...Motivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Archivos Relativos (3)Funciones de Dispersión o Hashing•  Aplicadas sobre una llave primaria del elemento•  Residuo de la División: •  Asigna la posición del elemento en la tabla como el residuo de dividir el valor llave vx contra un divisor B •  h(vx) = vx mod B …en llaves numéricas •  …¿Y en llaves NO numéricas? ¿Cómo escoger el divisor B? - B ≤ C y al menos B > n si sabemos N ∈ [n,…[ - B debe MINIMIZAR probabilidad de colisión: * mod Número primo => buena distribución J •  Garantiza una distribución uniforme cuando existe una distribución uniforme entre los posibles valores de la llaveMotivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Archivos Relativos (4)Funciones de Dispersión o Hashing (2)•  Centro del Cuadrado: •  Eleva valor llave vx al cuadrado y extrae algunos dígitos de la mitad como posición del elemento en la tabla. Por ej •  En llaves numéricas: vx = 100064183 y C = 10000 (vx)2 = 10012860719457489 <=> h(vx) = 0719 •  ¿Y en llaves NO numéricas? Vx = jihgfedcabc y C = 10000 •  Formar grupos de 4 caracteres y rellenar espacios a la izquierda vx’= --jihgfedcba •  Obtiene valor numérico como la suma de valores enteros de cada grupo vx-entero= ventero(--ji) + ventero(hgfe) + ventero(dcba) …. Donde: ventero(hgfe) = (256)3·ord(h) + (256)2·ord(g) + (256)1·ord(f) + ord(e) •  Aplica centro del cuadrado al valor llave numerico obtenido vx-enteroMotivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Archivos Relativos (5)Funciones de Dispersión o Hashing (3)•  Pliegue: •  Forma grupos de 4 caracteres y suma los grupos y toma el resultado con la posición del elemento (si es necesario, elimina dígitos más significativos). Por ej: •  En llaves numéricas: vx = 123456789 y C = 10000 (vx-suma) = 1+2345+6789=13221 <=> h(vx-suma) = 3221 •  ¿Y en llaves NO numéricas? Similar al método del centro del cuadrado en llaves NO numéricas..Motivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Archivos Relativos (6)Funciones de Dispersión o Hashing (4)•  Existen muchas técnicas posibles de dispersión: •  Sólo se han cubierto algunas, “de propósito general”…•  Factor de Carga mide saturación de la estructura: FactorCarga = CantidadActualElementos / N•  Algunos resultados de investigaciones: •  Ninguna función de dispersión siempre se desempeña mejor que otra •  A nivel general, Residuo de la División tiene el mejor desempeño J •  Toda función de dispersión trabaja pobremente cuando la estructura está casi llena => FactorCarga > 80% •  Si N se conoce, se recomienda tener un espacio de posiciones de 1.25·N elementos, para un FactorCarga de 80%...Motivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Archivos Relativos (7)Dispersión Cerrada (Interna)•  Limita el tamaño del conjunto en un espacio fijo•  Asigna una posición para almacenar cada elemento directamente en la tabla de dispersión cerrada •  Tabla de cubetas es un arreglo de 0,…,B-1 entradas que SOLO contiene un elemento por cubeta •  Función de dispersión h(x) produce la cubeta de cada elemento x del conjunto, PERO ¿Qué hace con colisiones? •  Estrategia de Re-Dispersión (Resolución de colisiones) elige una sucesión (en orden) de localidades alternas h1(x), h2(x),… hasta encontrar una cubeta vacía•  Desempeño de dispersión cerrada depende de: •  “Aleatoriedad” en que la función de dispersión distribuye los elementos •  Lo bien que la estrategia de re-dispersión evita colisiones adicionalesMotivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Archivos Relativos (8)Estrategias de Re-Dispersión•  Sondeo Lineal (Linear Probing): •  Cada intento busca siguiente cubeta: hi(x)= (h(x)+i) mod C •  Suponga: C=8 h(a) = 3 h(b) = 0 h(c) = 4 h(d) = 3 => h1(x)= h(x)+1= 3+1 = 4 … Esta Llena!  h2(x)= h(x)+2= 3+2 = 5 … Esta Libre!  •  ¿Cómo determinar pertenencia del elemento x al conjunto? •  Sólo examina h(x), h1(x), h2(x) hasta encontrar a x o una cubeta vacía! •  ¿Y si estructura soporta borrado? L •  Usar bit de eliminación para que los intentos continuen…Motivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Archivos Relativos (9)Estrategias de Re-Dispersión (2)•  Sondeo Lineal agrupa cubetas llenas en bloques grandes: •  Tan pronto se llenen unas cubetas consecutivas, cualquier llave dispersada a alguna de ellas se envia al final del grupo •  Causan largas secuencias de intentos en las operaciones…•  Sondeo Lineal por Intervalo: •  Cada intento salta a cubeta posterior. Para algún c > 1: hi(x)= (h(x)+c·i) mod C •  Suponga: C=8 c=3 h(x)= 4 h1(x)= (h(x)+3·1) mod 8 = 4+3 = 7 h2(x)= (h(x)+3·2) mod 8 = 4+6 = 2 h2(x)= 5, h4(x)= 0, h5(x)= 3, h6(x)= 6, h7(x)= 1 •  C y c deben ser primos relativos para que recorra todas las cubetas!Motivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Archivos Relativos (10)Estrategias de Re-Dispersión (3)•  Sondeo Lineal por Intervalo agrupa secuencias de cubetas separadas por la “distancia de salto” c: •  Cualquier estrategia de re-dispersión que NO dependa del valor de la llave misma en cada intento exhibirá la propiedad de aglomeración…•  Dispersión Doble (Double Hashing): •  Combina dos funciones de dispersión: la original y una auxiliar ponderada por el # de intento: hi(x)= (h(x)+i·h’(x)) mod C •  Por ejemplo: C=8 h(x)= x mod 8 h’(x)= (x mod 7) + 1 •  Dispersión doble resuelve el problema de aglomeración •  Intrínsica y paradójicamente la “buena dispersión” que realiza afecta localidad espacial (cada intento accesa regiones lejanas)..Motivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Archivos Relativos (11)Organización Directa de Archivos: Dispersión Abierta•  Dispersión es muy usada para acceso rápido a registros almacenados en memoria secundaria•  Registros se dividen en varias cubetas almacenadas como lista enlazada de bloques de almacenamiento externo •  Tabla de cubetas tiene C punteros que contienen la dirección física (posición) del primer bloque de cada cubeta •  En cada bloque, el encabezado contiene un apuntador al siguiente bloque de la lista enlazada de bloques de su cubeta•  Función de dispersión hace la correspondencia de un registro con una cubeta (por medio de un valor de llave primaria predefinido) •  SI tabla de cubetas es pequeña, puede leerse a memoria principal J •  SINO, puede almacenarse de forma secuencial en los bloques necesarios…Motivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Archivos Relativos (12)Organización Directa de Archivos: Dispersión Abierta (2)•  Aproximadamente, el promedio de accesos a bloques para una operación en un registro (a partir de su valor llave) es: CantidadActualRegistros / (CantidadRegistrosPorBloque·C)•  Idealmente, una cubeta sólo debería tener un bloque ¿Porqué? •  Minimizar acceso secuencial en los bloques de una cubeta! •  Si PromedioRegistrosPorCubeta excede mucho CantidadRegistrosPorBloque, re-estructurar (generar una nueva tabla de dispersión con k·C cubetas)Manipulación de Registros:•  Inserción: Dos Casos SI hay espacio en algún bloque de la cubeta Escribe registro directamente SINO, Crea un bloque nuevo y lo enlaza al final de la cubetaMotivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Archivos Relativos (13)Organización Directa de Archivos: Dispersión Abierta (3)•  Borrado: Dos Alternativas 1. Marcar registro con bit de eliminación 2. Reemplazar registro eliminado por el último registro de la cubeta •  Si último bloque de la cubeta queda vacío, liberarlo…•  Actualización: Dos Casos SI Longitud de Registro cambia Borrar registro e Insertarlo SINO, Re-escribe registro directamente•  Recuperación Simple: Dos Casos SI Llave de Tabla es Criterio de Búsqueda Búsqueda Secuencial en bloques de la cubeta•  SINO, Búsqueda ExhaustivaMotivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Archivos Relativos (14)Organización Directa de Archivos: Dispersión Abierta (4)•  Recuperación Exhaustiva: •  Búsqueda Secuencial en TODOS los bloques de TODAS las cubetas L•  Recuperación Ordenada: Dos Casos SI Llave de Orden es Llave de Tabla Búsqueda Secuencial en bloques de la cubeta SINO, Búsqueda Exhaustiva de primer registro O(n), luego siguiente O(n),… O(n2)Motivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Indexación•  Organización de Archivos Secuenciales y Relativos usan una llave para determinar posición del registro: •  NO muestran buen desempeño cuando operaciones NO se basan en la llave •  Búsquedas podrían tener otros criterios que requieran uso de otras llaves L•  Un índice es estructura auxiliar que acelera operaciones poco eficientes en organizaciones básicas de archivos J: •  “Tabla” con lista de llaves y dirección/posición d registro con cada valor llave •  Permite un orden auxiliar al archivo sin necesidad de reorganizarlo •  Un archivo puede tener varios índices (a partir de distintas llaves) •  Múltiples caminos de acceso al archivo J •  Espacio de almacenamiento adicional L •  Empeora velocidad de inserción, actualización y borrado LMotivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Indexación (2)•  Aunque las entradas de datos k* de un índice están ordenadas (a partir de su llave), hay varias alternativas con respecto a que almacenar en cada entrada de datos k*: 1.  k* es el Registro Mismo (Mismo archivo principal secuencial) •  Evita crear un índice adicional para el orden del archivo principal 2.  k* es un par <k, Rid> (Rid es la dirección del registro con valor de llave k) •  Entradas son de longitud fija => búsqueda binaria J 3.  k* es un par <k, ListaDeRid> (Ahorra espacio en valores “llave” repetidos) •  Entradas son de longitud variable•  Índice es independiente de organización del archivo principal•  Índices de llave múltiple/compuesta •  Un índice de llave múltiple/compuesta puede utilizar la combinación de varios campos como valor de llave en las entradas de datos k* •  Orden de campos en la llave compuesta influye en rendimiento de consultasMotivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Indexación (3)•  Agrupados vs. No-Agrupados (Clustered vs. Unclustered) •  Un índice agrupado tiene las entradas de datos k* en el mismo orden que la los registros del archivo principal (están ordenados por la misma llave)•  Primarios vs. Secundarios •  Un índice primario está basado en los campos de llave primaria. Garantiza que ninguna entrada de datos k* tiene valores de llave duplicados•  Densos vs. Disperso (Dense vs. Sparse) •  Un índice denso tiene una entrada de datos k* para cada valor de llave de búsqueda de los registros del archivo principal (y dirección del registro) •  Un índice es disperso tiene una entrada de datos k* para cada bloque del archivo principal (y dirección del bloque)Motivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Indexación (4)•  SI índice cabe en memoria, operaciones en memoria J: •  Al inicio, leer contenido del índice en memoria •  Insertar/Borrar/Actualizar registros en archivo principal e índice (memoria) •  Al final, escribir contenido del índice en memoria Índice desactualizado si ocurre una falla en el sistema... ¿Qué hacer? 1.  Al leer el índice, marcar el archivo de índice 2.  Al escribir el índice, desmarcarlo 3.  Si al leer el índice, el archivo está marcado => re-generarlo!•  SINO, archivo d índices puede organizarse en bloques (b1, b2, bn): •  Búsqueda binaria por bloques sólo accede log2(n + 1) bloques: •  Al buscar llave x, lee el primer par (y, Rid) del bloque b|n/2|: SI x < y Repite búsqueda en los bloques b1, b2,…, b|n/2| - 1 SINO Lee el primer par (z, Rid) del bloque b|n/2|+1 SI x ≥ z Repite búsqueda en los bloques b|n/2| + 1, b|n/2| + 2,…, bn SINO Busqueda Lineal en los pares del bloque b|n/2|Motivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Indexación (5)Archivo Secuencial Indexado: Organización con Índice Disperso•  Entrada de datos k* como par (k, Bid) secuencial (ordenado) por el valor de llave del primer registro de cada bloque del archivo:•  El archivo secuencial y el índice se ordenan por la misma llave: •  Solo un Índice disperso para cada archivo principal •  Índice acelera las búsquedas por la misma llave JArchivo Secuencial Indexado: Organización con Índice Denso•  Una entrada de datos k* como par (k, Rid) secuencial (ordenado) por el valor de llave de cada registro en el archivo:•  El archivo disperso y el índice NO se ordenan por la misma llave: •  Muchos índices (secundarios) para el archivo principal J •  Aprovecha buen desempeño en operaciones sobre archivo principal •  Índice acelera las búsquedas con otros criterios! J Peeero…Motivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Indexación (6)•  Por cada índice secundario, hay un precio: •  Espacio de almacenamiento •  Tiempo de operaciones de inserción, modificación y borrado•  La selección de índices secundarios requiere seguir un criterio: •  A partir de los conjuntos de campos usados en operaciones muy frecuentes!Motivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Árbol B•  Árbol B+ constituye la estructura de datos más utilizada para implementar índices en sistemas de bases de datos•  Árbol B+ surge por: •  Imposibilidad de mantener índice en memoria principal •  Preservar desempeño en inserción y borrado: •  Organización secuencial del índice requiere “desplazamiento” (caro) o “zona de desbordamiento” (impacta búsqueda binaria) L •  Mejorar rendimiento en recuperación: Por ejemplo: •  Indice = millón (220) de entradas, 64 por bloque => 16384 bloques •  Búsqueda Binaria requiere log2(16384) = 14 accesos a bloques •  Búsqueda B-Tree requiere log64(16384) = 2.33… accesos a bloques •  O(logM(N)) J•  Árbol B+ se basa en estructura de datos Árbol B…Motivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Árbol B (2)•  Árbol B es Árbol de M-vías (generalización de árbol binario) •  Como árbol binario, búsqueda visita una sóla ruta desde raíz hasta las hojas •  En el descenso, permite realizar búsqueda binaria en cada nodo J •  Como árbol AVL, siempre permanece balanceado: •  Garantiza que el recorrido SIEMPRE tiene complejidad logarítmica J•  Por ejemplo:Motivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Árbol B (3)•  Árbol B de orden M es un arból de M-Vías (M≥ 2) en donde: •  M=3 •  La raiz es una hoja O tiene al menos 2 y a lo sumo M hijos •  Las hojas están al mismo nivel •  Las nodos internos tienen al menos ⎡M/2⎤ y a lo sumo M hijos •  Todo nodo tiene al menos ⎡M/2⎤-1 elementos/llaves (excepto la raiz)•  Por tanto, un nodo se compone por: •  Una secuencia de llaves k1,.., k⎡M/2⎤-1,.., kM-1 y punteros p1,…, p⎡M/2⎤ -1,.., pM •  En donde: •  Llaves ki cumple ki-1 < ki < ki+1 •  Puntero pi apunta a sub-árbol con llaves mayores que ki-1 y menores kiMotivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Árbol B (4)Inserción en un Árbol B está basada en casos:•  Para insertar el elemento ‘x’, busca el nodo hoja en el que debe ser insertado, partiendo de la raíz: •  Un nodo T consiste de •  Ti es un puntero a un sub-árbol y ki es una llave •  Si T es hoja, Ti apunta al sub-árbol vacío (puntero es nulo)•  SI cantidad de llaves en nodo hoja T < M-1 (NO está lleno): •  Inserta ‘x’ en posición adecuada (si es necesario, corrimiento de llaves)•  SINO (SI T está lleno): Insertar(x, T) •  Inserta ‘x’ virtualmente •  Nodo inválido se vería así: •  Divide el nodo en dos mitades: // T’L y T’R tienen al menos ⎡M/2⎤ punteros y ⎡M/2⎤-1 llaves (son válidos) // Llave k⎡M/2⎤ (posición central) quedó por afuera!Motivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Árbol B (5)Inserción en un Árbol B está basada en casos (2):•  …•  SINO (SI T está lleno): Insertar(x, T) •  Inserta ‘x’ virtualmente •  Nodo inválido se vería así: •  Divide el nodo en dos mitades: // T’L y T’R tienen al menos ⎡M/2⎤ punteros y ⎡M/2⎤-1 llaves (son válidos) // Llave k⎡M/2⎤ (posición central) quedó por afuera! •  SI T NO es la raíz, En el padre de T: •  Reemplaza T por T’L y al hermano de T por T’R •  Inserta k⎡M/2⎤ recursivamente en el padre: Insertar(k⎡M/2⎤, T.Padre) // !”·$%&/()!”(!/$%/)!!!! ¿Se “embarrialó la cancha”? // ¿No me creen? Veámoslo graficamente…Motivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Árbol B (6)Inserción en un Árbol B está basada en casos (3):•  Insertar elemento ‘6’:•  Si nodo padre está lleno, lo divide, reemplaza la primer mitad e inserta la segunda mitad en el nodo “abuelo”•  Sugerencia de Implementación: •  Todo nodo con puntero al padre! •  Celda extra en arreglos de punteros y arreglo de llaves•  Proceso puede continuar hasta llegar a la raíz: •  ¿Qué hacemos cuando llegamos a la raíz? ¿Y si la raíz está llena? •  Terminemos el algoritmo…Motivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Árbol B (7)casos (4):Inserción en un Árbol B está basada en•  …•  SINO (SI está lleno): •  … •  SI T NO es la raíz, En el padre de T: •  Reemplaza T por T’L y al hermano de T por T’R •  Inserta k⎡M/2⎤ recursivamente en el padre: Insertar(k⎡M/2⎤, T.Padre) •  SINO (T es la raíz): •  No hay nodo padre para sustituir con T’L, T’R e insertar k⎡M/2⎤! L •  ¿Qué hacemos? •  Crea un nuevo nodo R’ (la nueva raíz) con R={T’L, k⎡M/2⎤, T’R}•  Así es como el árbol B va creciendo (en altura): •  Nodos hoja quedan en la misma altura! J •  ¿Lo vemos gráficamente?Motivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Árbol B (8)Inserción en un Árbol B está basada en casos (5):•  Insertar elemento ‘3’:•  Insertar elemento ‘2’: Insertar elemento ‘4’:Motivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Árbol B (9)Borrado en un Árbol B está basado en casos:•  Primero que todo, encomendémonos… J•  Para borrar el elemento ‘y’, busca el nodo en donde se encuentra (hoja o no), partiendo de la raíz:•  SI es nodo hoja: •  Remueve ‘y’ del nodo hoja•  SINO (NO es hoja): •  Ubica al nodo hoja más a la izquierda de su sub-árbol derecho (o más a la derecha de su sub-árbol izquierdo) •  Reemplaza ‘y’ por el elemento z más pequeño (o más grande) de T •  Remueve z del nodo hoja•  SI cantidad d llaves en nodo hoja T ≥ ⎡M/2⎤-1 (Sigue válido) •  Borrado termina!Motivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Árbol B (10)Borrado en un Árbol B está basado en casos (2):•  …•  SI cantidad d llaves en nodo hoja T ≥ ⎡M/2⎤-1 (Sigue válido) •  Borrado termina!•  SINO (nodo T NO es válido): Balancear(T) •  SI cantidad de llaves en nodo hermano izquierdo (hoja) ≥ ⎡M/2⎤ •  Hace rotación LL (“pide prestado” al hermano izquierdo) •  SINO, SI cantidad de llaves en nodo hermano derecho ≥ ⎡M/2⎤ •  Hace rotación RR (“pide prestado” al hermano derecho) •  Análogo a rotación LL…Motivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Árbol B (11)Borrado en un Árbol B está basado en casos (3):•  …•  SINO (nodo T NO es válido): •  … •  SINO SI cantidad de llaves en nodo hermano derecho ≥ ⎡M/2⎤: •  Hace rotación RR (“pide prestado” al hermano derecho) •  SINO (Hermanos “NO pueden prestar”): •  Combina T con nodo hermano izquierdo (o derecho) en el padre // También pide al padre (i.e. ‘x’)… ¿Y si el padre queda inválido?Motivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Árbol B (11)Borrado en un Árbol B está basado en casos (4):•  …•  SINO (nodo T NO es válido): •  … •  SINO (Hermanos “NO pueden prestar”): •  Combina T con nodo hermano izquierdo (o derecho) en el padre •  SI cantidad de llaves en nodo padre ≥ ⎡M/2⎤-1: •  Borrado termina! •  SINO, SI nodo padre NO es la raíz: •  Balancea recursivamente el padre: Balancear(T.Padre) •  SINO (nodo padre es la raíz): •  SI raíz todavía tiene elementos: •  Borrado termina! (Raíz puede tener menos ⎡M/2⎤-1) //¿Y si la raíz “prestó” el último elemento que tenía?Motivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Árbol B (12)Borrado en un Árbol B está basado en casos (5):•  …•  SINO (nodo T NO es válido): •  … •  SINO (Hermanos “NO pueden prestar”): •  … •  SINO (nodo padre es la raíz): •  SI raíz todavía tiene elementos: •  … /*¿Y si la raíz “prestó” el último que tenía? Pues quiere decir que sus únicos dos hijos se acaban de combinar en uno sólo! */ •  SINO, •  Reemplaza la raíz por el único hijo restante! ;)•  Así es como la altura del árbol B va disminuyendo JMotivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Árbol B+ (13)•  Árbol B provee un rendimiento logarítmico para recuperar un registro individual a partir de una llave. Peero: •  Cada nodo puede tener posición del registro en el archivo! •  Si el archivo no está ordenado por llave, recuperar una secuencia ordenada de registros accede todos los nodos en el rango L•  Árbol B+ se usa para instrumentar org secuencial indexada: •  Cada nodo ocupa un bloque de almacenamiento externo. Hay 2 tipos •  Nodo interiores (de índice): tiene el camino a nodos hoja! •  Conjunto secuencial (hojas): llaves/posición de TODO registroMotivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Árbol B+ (14)•  Árbol B+ provee buen rendimiento en búsqueda por rango J: •  Nodos hoja están encadenados (N registros por hoja, N != M) •  Redundancia entre nodos intermedios y hojas•  En nodo intermedios valores de índice pueden tomarse: •  Del registro mayor alcanzable desde el hijo izquierdo (ver arriba), o •  Del registro menor alcanzable desde el hijo derecho…Motivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Árbol B+ (15)•  Operaciones de inserción y borrado son similares. Peeero: •  Deben procurar mantener la redundancia consistentemente•  En Inserción: •  Una copia del valor de la llave menor del nodo derecho es promovida para ser el valor de llave separador en el nodo padre •  Los efectos de esta inserción pueden transmitirse a los nodos padre•  ¿Vemos un ejemplo?Motivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Árbol B+ (15)•  Insertar 23: (M=5, 3 registros por hoja) - Partir bloque 22,23,24,26 - Crear bloque con 24,26 - Insertar puntero en padre - Dividir nodo padre - Raíz recibe(llave/puntero)Motivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Árbol B+ (15)•  Insertar 23: (M=5, 3 registros por hoja) - Partir bloque 22,23,24,26 - Crear bloque con 24,26 - Insertar puntero en padre - Dividir nodo padre - Raíz recibe(llave/puntero)Motivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Árbol B+ (15)•  En Borrado: •  Si el registro a borrar es el primer registro de la hoja, ajustar el valor de llave en el padre •  Si el registro a borrar está en el primer hijo del padre, ajustar el valor de la llave en alguno de los antecesores de P•  Cambios en inserción y borrado son análogos (inversos)!•  Listos para programar!? JMotivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Referencias1.  Aho, Alfred V., John E. Hopcroft y Jeffrey D. Ullman. Estructuras de Datos y Algoritmos. Addison Wesley Longman: México, 1988 (Secciones 4.7 y 4.8, 11.1 , 11.3 y , 11.4)2.  Abraham Silberschatz, Peter Baer Galvin y Greg Gagne. Fundamentos de Sistemas Operativos. Mc Graw Hill: España, 2005 (Secciones 10.1 y 10.2)3.  http://www.inadsys.com/itig_oga_0607/apuntes.pdf (Capítulos 2, 3, 4, 5, 8)4. Bruno R. Preiss. “Data Structures and Algorithms with Object-Oriented Design Patterns in Java” (Secciones 10.6 y 10.7)Motivación | Introducción | Sistemas de Archivos | Secuenciales | Relativos | Indexación | Árbol B | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Almacenamiento Externo – II Semestre 2010
  • Instituto Tecnológico de Costa RicaDepartamento de Ingeniería en Computación Almacenamiento Externo Prof. Aníbal Gómez-Estrada Algoritmos y Estructuras de Datos 2 - II Semestre 2010