Professional Documents
Culture Documents
DOUGLAS COMER.
----------------------
_________________________
INTRODUCCIÓN. Una petición secuencial requiere una bús-
queda para examinar el fichero, una carpe-
Las facilidades del almacenamiento secun- ta cada vez. De distinta manera, una peti-
dario disponible en un gran sistema infor- ción aleatoria implica, que la búsqueda
mático, permiten al usuario almacenar, guiada por las etiquetas de los cajones y
actualizar, y retirar datos de grandes colec- carpetas, necesita solo extraer una carpeta.
ciones de información llamadas ficheros.
Un ordenador debe recuperar un elemento Asociado con un gran fichero de acceso
y colocarlo en memoria principal, antes de aleatorio en un sistema informático está un
que pueda ser procesado. Para hacer un índice, que como las etiquetas sobre los
buen uso de los recursos del ordenador, cajones y las carpetas del archivo escrito-
este debe organizar los ficheros inteligen- rio, acelera la recuperación por direccionar
temente, haciendo los procesos de recupe- la búsqueda a la pequeña parte del fichero
ración de manera eficiente. que contiene el elemento deseado. La Fi-
gura 1, representa un archivo y su índice.
La elección de una buena organización Un índice puede estar físicamente integra-
de ficheros depende del tipo de recupera- do con el fichero, como las etiquetas de las
ción que va a ser realizada. Hay dos clases carpetas de los empleados, o físicamente
generales de ver la recuperación que pue- separados, como las etiquetas de los cajo-
den ser ilustradas por los siguientes ejem- nes. Normalmente, el índice mismo es un
plos: fichero. Si el fichero índice es grande, otro
índice puede ser construido sobre la parte
-Secuencial: "De nuestro archivo de em- más alta de este para favorecer una recupe-
pleados, preparar una lista de los nombres ración mas rápida y así sucesivamente. La
y apellidos de todos los empleados ", y jerarquía resultante es similar a la del ar-
chivo de empleados, donde el índice mas
-Aleatorio: "De nuestro archivo de em- alto esta formado de etiquetas sobre cajo-
pleados, extraer la información sobre el nes y el índice de siguiente nivel consiste
empleado J. Smith ". en etiquetas sobre carpetas.
----------------------------------------
proporción entre el espacio requerido por Hay que tener en cuenta que en un ár-
el índice y el espacio requerido por la in- bol binario de búsqueda, la rama elegida
formación asociada. en un nodo depende del resultado de una
comparación de la clave buscada y de la
clave almacenada en el nodo. Si la clave
1. EL ÁRBOL-B BÁSICO buscada es menor que la clave almacenada,
se elige la rama de la izquierda; si es ma-
El Árbol-B tiene una corta pero importante yor, se sigue por la rama de la derecha. La
historia. A finales de los años 60, fabri- Figura 2 muestra parte de un árbol utili-
cantes de computadoras y grupos de inves- zado para almacenar los números de em-
tigación independientes, compitieron en el pleados, y el camino elegido para la clave
desarrollo de sistemas de archivo de pro- de búsqueda 15.
pósito general y los llamados "métodos de
acceso" para sus máquinas. La Sperry Uni- Veamos ahora la Figura 3 en la que se
vac Corporation (junto con la Case Wes- muestra un árbol de búsqueda modificado
tern Reserve University), H. Chiat, M. con dos claves almacenadas en cada nodo.
Schwartz, y otros desarrollaron e imple- La búsqueda se realiza mediante la elec-
mentaron un sistema, el cual llevaba a cabo ción de uno de los tres caminos de cada
las operaciones de inserción y búsqueda de nodo. En el dibujo, la clave buscada, 15, es
una manera afín al método del árbol-B que
describiremos brevemente. Independien-
temente, B. Cole, S. Radcliffe, M. Kauf-
man, y otros desarrollaron un sistema simi-
lar al de Control Data Corporation (junto
con la Stanford University). R. Bayer y E.
McCreight, entonces en los Boeing Scien-
tific Research Labs, propusieron un meca-
nismo externo para el índice con un costo Figura 2. Parte de un árbol binario de búsqueda
relativamente bajo para la mayoría de las para números de empleado. El camino seguido
operaciones definidas en la sección ante- para la búsqueda “15” está sobreimpreso.
rior; lo llamaron árbol-B (1) [ BAYE72].
se encuentra una clave exactamente igual vamente, los árboles-B tienen una forma
(éxito) o hasta que se llega a una hoja como la que se muestra en la Figura 6. El
(error). camino más largo en un árbol-B de n cla-
ves contiene como mucho unos logd (n)
En general, cada nodo en un árbol-B de nodos, siendo d el orden del árbol-B. Una
orden d contiene como mucho 2d claves y operación de búsqueda puede visitar n no-
2d+1 punteros, como se observa en la Fi- dos en un árbol no balanceado indexando
gura 4. De hecho, el número de claves un fichero de n registros, pero en un fiche-
puede variar de un nodo a otro, pero cada ro igual con estructura de árbol-B de or-
uno debe tener al menos d claves y d+1 den d no visitaría mas de 1+logd(n) nodos.
punteros. Como consecuencia, cada nodo Puesto que cada visita requiere un acceso
está completo a la mitad de su capacidad. al dispositivo de almacenamiento secunda-
En la implementación más usual un nodo rio, el balanceo del árbol tiene un gran
forma un registro del fichero índice, tiene ahorro potencial. Se han propuesto varios
una longitud fija capaz de almacenar 2d esquemas para árboles balanceados (ver
claves y 2d punteros, y contiene informa-
ción adicional, que nos informa de cuántas
Figura 7. (a) Un árbol-B de orden 2, y (b) el mismo árbol, tras la inserción de la clave “57”, Nótese que el
número de claves en el nodo raíz puede ser menos que d, el orden del árbol-B. Todos los demás nodos
tienen como mínimo d claves.
Por lo tanto, los árboles-B tienen las ceso de búsqueda desde la raíz para
ventajas del esquema de un árbol ba- localizar la hoja apropiada para la inser-
lanceado, mientras evita algunos de los ción. Entonces se realiza la inserción, y
costes (en tiempo) de mantenimiento. se restablece el balanceado del árbol
mediante un procedimiento, el cual se
Inserción aplica desde la hoja hacia la raíz. Refi-
riéndonos a la Figura 7a, uno puede ver
Para ilustrar cómo se mantiene el balan- que cuando inserta la clave “57" la bús-
ceado durante la inserción, considérese queda termina sin éxito en la cuarta
la Figura 7a la cual muestra un árbol-B hoja. Ya que la hoja puede alojar otra
de orden 2. Puesto que cada nodo en un clave, se inserta la clave nueva simple-
árbol-B de orden d contiene entre d y 2d mente, dando lugar al árbol que se
claves, cada nodo del ejemplo tiene muestra en la Figura 7b. Si se inserta la
entre 2 y 4 claves. En cada nodo debe clave “72", sin embargo, habría compli-
existir un indicador (que no está refleja- caciones porque la hoja correspondiente
do en la figura) para informar sobre el ya está llena. Cuando quiera que una
número de claves que tiene el nodo. La clave necesite insertarse en un nodo que
inserción de un nuevo nodo requiere un ya está lleno, ocurre una división: se
proceso de dos pasos. Primero, un pro- divide el nodo como se muestra en la
Borrado
Figura 10. (a) Parte de un árbol-B antes, y (b) después de la redistribución de nodos entre dos vecinos.
Nótese que la posición final de la clave intermedia, “50”. La redistribución en nodos de igual tamaño
ayuda a evitar ‘underflow’ en sucesivos borrados.
quiere una mera búsqueda por la hoja reside en una hoja. La Figura 9 de-
más a la izquierda, en el subárbol dere- muestra estas relaciones.
cho del ahora slot vacío. Como en un
árbol binario, el valor requerido siempre
Una vez que el slot vacío ha sido tran algoritmos de inserción y borrado
"movido" a una hoja, debemos verificar en BAYE72. Ejemplos simples
para ver que por lo menos quedan d programados en PASCAL son
claves. Si quedan menos de d claves en proporcionados por Wirth (WIRTH76).
la hoja, entonces se dice que ocurre
underflow, y se hace necesaria una re-
distribución de las claves. Para restaurar
el equilibrio (y la propiedad de los ár-
boles-B de que cada nodo tiene por lo
menos d claves) sólo se necesita una
clave que se puede obtener pidiéndola
prestada de una hoja vecina. Pero ya Figura 11. (a) Borrado que origina una conca-
que la operación requiere por lo menos tenación, y (b) el árbol re-balanceado.
dos accesos a almacenamiento secunda-
rio, una mejor redistribución dividiría 2. COSTE DE LAS OPERACIONES
uniformemente las llaves restantes entre
los dos nodos vecinos, disminuyendo el Ya que visitar un nodo en el árbol-B
coste de borrados sucesivos del mismo conlleva acceder a memoria secundaria,
nodo. La Redistribución viene ilustrada el número de nodos que se visiten en
por la Figura 10. cada operación sobre el árbol es lo que
nos da la medida de su coste. Bayer y
Por supuesto, la distribución de cla- McCreight [Baye72] dan un análisis
ves entre dos vecinos basta sólo si hay preciso del coste de las operaciones de
por lo menos 2d claves para distribuir. insertar, borrar y recuperar; también nos
Cuando quedan menos de 2d valores, dan resultados experimentales, hacia lo
debe ocurrir un encadenamiento. Duran- que tienden los dispositivos actuales.
te un encadenamiento, se combinan las Knuth [KNUT73] también nos da las
claves simplemente en uno de los no- tendencias de coste de realizar opera-
dos, y se desecha el otro (observar que ciones sobre un árbol-B pero usando
ese encadenamiento es lo contrario del una definición algo diferente. En el si-
fraccionamiento). Ya que queda un úni- guiente párrafo se da una explicación de
co nodo, la clave que separa los dos los límites asintóticos del coste.
nodos en el antecesor ya no es necesa-
ria; también es añadida a la única hoja Coste de una recuperación
restante. La Figura 11 muestra un
ejemplo de encadenamiento y la situa- Primero, hay que considerar el coste de
ción final de la clave separadora. la operación de búsqueda. Excepto para
la raíz, cada nodo en un árbol-B tiene al
Cuando algún nodo pierde una clave menos d descendientes directos ya que
separadora debido a un encadenamiento hay entre d y 2d descendientes por
de dos de sus hijos, también puede cau- nodo; la raíz tiene al menos 2 descen-
sar underflow y requiere redistribución diente. Así que el número de nodos en
de uno de sus vecinos. El proceso de los niveles 2 0, 1, 2, ..., deben ser por lo
encadenamiento puede forzar encade- menos 2, 2d, 2d*d, 2d*d*d, ... Todas
namiento en el siguiente nivel hacia las hojas tienen que estar a la misma
arriba, y así sucesivamente hasta el lle- altura h, por lo tanto hay nodos con al
gar a la raíz. Finalmente, si se encade-
nan los descendientes de la raíz, éstos 2
La raíz de un árbol se encuentra enel nivel 0;
forman una nueva raíz, decrementando los hijos de un nodo de profundidad i-1 se en-
la altura del árbol-B en 1. Se encuen- cuentran a profundidad i.
Además, el coste esconde el factor que la clave deseada. Por ejemplo, la clave
siempre está presente y que crece de más pequeña se encuentra en la hoja de
igual manera que crece el volumen de más a la izquierda y para encontrarla
datos a transferir. Para terminar, cada necesitamos acceder a todos los nodos a
dispositivo tiene varios tamaños de pis- lo largo del camino que se establece
ta fijados, los cuales deben de ajustarse entre la raíz hasta la hoja, tal y como se
para evitar el desperdicio del espacio muestra en la Figura 12.
en memoria. De esta manera en la prác-
tica el tamaño óptimo del nodo depen- ¿Qué es lo que se puede hacer para
de, y mucho, de las características del mejorar el coste de realizar la siguiente
sistema y de los dispositivos en los que operación? Esta pregunta y otras se con-
se encuentre el fichero almacenado.
sido eliminado del almacenamiento se- comparación con los beneficios, espe-
cundario. El sugiere usar una búsqueda cialmente ya que el almacenamiento
binaria en vez de una búsqueda lineal secundario es económico y está hecho
para localizar para localizar el puntero para fijar la longitud de los nodos.
correcto al descendiente. Knuth
[KNUT73] señala que una búsqueda
binaria puede ser útil si el nodo es gran-
de, mientras que una búsqueda secuen- ÁRBOLES-B*
cial puede ser lo mejor para nodos pe- Quizás el término más utilizado en la
queños. No hay razón para limitar la literatura de los árboles-B es árbol-
búsqueda interna a búsqueda secuencial B* 3 . En realidad, Knuth [KNUTH73]
o binaria; puede usarse cualquier núme- define un árbol-B* como un árbol-B en
ro de técnicas de KNUT73. En particu- el cual cada nodo está al menos 2/3 lle-
lar, Maruyama y Smith [MARU77] no (en vez de solo la mitad). La inser-
mencionan una técnica de extrapolación ción del árbol-B* emplea un esquema
que ellos llaman la búsqueda de la raíz de redistribución local para retrasar la
cuadrada. división hasta que dos nodos hermanos
En sus tratamientos generales de están llenos. Entonces los dos nodos se
creación por índices para un fichero, dividen en tres cada uno lleno en 2/3
Ghosh y Senko [GHOS69] consideran partes. Este esquema garantiza que la
el uso de una búsqueda de interpolación utilización del almacenamiento es al
para eliminar el acceso a un almacena- menos del 66%, mientras que solamente
miento secundario. El análisis presenta- requieren una moderada modificación
do generaliza para árboles-B e indica de los algoritmos de mantenimiento.
que esto puede tener un coste efectivo Esto debe ser señalado ya que el incre-
para eliminar algunos de los niveles de mento en la utilización del almacena-
índices justo por encima de las hojas. miento tiene el efecto lateral de acelerar
Desde una búsqueda terminaría con la búsqueda ya que la altura del árbol
varias posibles hojas candidatas, la co- resultante es más pequeña.
rrecta sería encontrada por una "estima-
ción" basada en el valor de la clave y la El término árbol-B* ha sido utilizado
distribución de la clave dentro del fiche- frecuentemente para otras variaciones
ro. Cuando la estimación produzca la de árboles-B como también sugiere
hoja equivocada, podría llevarse a cabo Knuth [KNUTH73, WEDE74,
una búsqueda secuencial. Aunque algu- BAYE77]. Para evitar confusión, noso-
nas estimaciones podrían perderse, el tros usaremos el término árbol-B+ para
método resultaría sobre el promedio. la implementación no identificada de
Knuth.
Knuth [KNUTH73] sugiere una va-
riación del árbol-B la cuál tiene diver- ÁRBOLES-B+
sos "órdenes" para cada profundidad. En un árbol-B+, todas las claves están
Parte de la motivación viene de su ob- en las hojas. Los niveles más altos, que
servación de que los punteros en los están organizados como un árbol-B,
nodos hojas gastan espacio y deberían constan sólo de un índice, un mapa para
ser eliminadas. Esto también da sentido permitir una rápida localización de las
a tener una forma diferente para la raíz
3
(la cual está rara vez muy llena en com- Un caso entretenido es el "algoritmo de bús-
queda de un árbol-B*", el cual es sobre un
paración con los otros nodos). Los
algoritmo de un árbol de búsqueda llamado B*
costes de mantenimiento para esta im- [BERL78]
plementación parecen bastante altos en
Figura 13. Un árbol-B+ con las partes índice y claves separadas. Las operaciones ‘por clave empiezan en
la raíz como en un árbol-B; el proceso secuencial empieza en la hoja más a la izquierda.
Figura 14. (a) Un árbol-B+ y (b) un árbol-B+ después del borrado de la clave “20”. Incluso después del
borrado, la clave “20” vale todavía como valor separador en la parte índice.
Figura 15. Parte de un árbol-B Prefijo. La entrada índice “e” es suficiente para diferen-
ciar “computador” de “electrónico”.
La técnica más simple para elegir el peado en una página del espacio de di-
prefijo único más corto de la clave para recciones virtual. Entonces el usuario
servir como separador da resultado. En trata el árbol-B como si estuviera en
el ejemplo, el prefijo más corto de 'elec- memoria. Los accesos a los nodos (pá-
trónico' es suficiente para distinguirlo ginas) que no están en memoria, causan
de 'computador'. Algunas veces, sin al sistema una recuperación de página
embargo, la técnica del prefijo no fun- desde memoria secundaria.
ciona bien: eligiendo el prefijo más cor-
to de 'programadores' para distinguirlo Muchos algoritmos de paginación
de 'programador' no resulta del todo eligen sustituir la página menos usada
correcto. En cada uno de los casos, Ba- cuando ha de traer una página nueva.
yer y Unterauer sugieren explorar unas En términos del árbol-B, los nodos más
pequeñas claves cercanas para obtener activos son esos más próximos a la raíz;
una buena pareja para el algoritmo de estos procuran quedarse en memoria.
separación. Mientras esto pueda dejar En realidad Bayer y McCreight
los nodos desigualmente cargados, te- [BAYE72] y Knuth [KNUT73] sugieren
niendo no mucha cantidad de claves ambos un mecanismo LRU para árbo-
extra en uno de los nodos, no afectará al les-B cuando no se usa paginación por
coste global. hardware. Al menos, la raíz debería
permanecer en memoria principal ya
Árboles-B virtuales que es accedida por cada búsqueda.
Muchos de los sistemas de computado- Así, los árboles-B virtuales tienen las
res emplean un esquema de gestión de siguientes ventajas:
memoria que suministra a cada uno de 1.- El hardware especial realiza transfe-
los usuarios una extensa memoria vir- rencias a alta velocidad
tual. El espacio de direcciones de la 2.- El mecanismo de protección de me-
memoria virtual por usuario está dividi- moria aísla de otros usuarios, y
do en páginas que son almacenadas en 3.- Las partes del árbol accedidas fre-
memoria secundaria y cargadas en me- cuentemente, deberían permanecer
moria principal automáticamente cuan- en memoria.
do son referenciadas. Esta técnica, lla-
mada Página Demandada o Por Falta de Compresión
Página, multiplexa la cantidad de me-
moria real de los usuarios y al mismo Otras técnicas varias de implementa-
tiempo proporciona protección para ción han sido sugeridas para mejorar el
asegurar que cada uno de los usuarios funcionamiento de los árboles-B. Wag-
no interferirá con datos de otro. Además ner [WAGN73] resume varias de estas
el hardware de propósito especial mane- incluyendo los conceptos de claves y
ja la paginación, así que las transferen- punteros comprimidos 4 .
cias a y desde memoria son realizadas a
alta velocidad. Los punteros pueden ser comprimi-
dos usando una base/forma de reempla-
La disponibilidad del hardware de zamiento de direcciones de modo mejor
demanda de página sugiere una intere- que el modo de direccionamiento abso-
sante implementación de árboles-B. A luto. Un modo con punteros comprimi-
través de una cuidadosa cuota o ración,
cada nodo del árbol-B puede ser ma- 4
Ver también AUER76
Figura 16. Un nodo con punteros comprimidos. Para obtener el puntero i-ésimo, se suma el valor base al
offset i-ésimo.
El análisis muestra que la inserción, ra dos o más accesos a los nodos, igual
borrado y búsqueda solo toman logn para la más a la izquierda. Usando el
pasos como en un árbol-B, aunque bus- puntero derecho para dos propósitos
car la dirección más a la derecha requie- hace complicados los algoritmos de
Figura 18. Un archivo VSAM con datos reales (información asociada) almacenados en sus hojas
Figura 19. Formato de un intervalo de control. El campo de control describe el intervalo mismo, y el
formato de los campos de datos.
man un índice y una conjunto secuen- Aunque VSAM presenta al usuario una
cial de árbol-B+ como se ha descrito; las vista de los datos lógica (o independien-
hojas contienen registros de datos ac- te de la máquina), la organización de
tuales. En terminología VSAM , una ficheros debe acomodarse a los recursos
hoja se llama intervalo de control y subyacentes si se quieren realizar las
forma la unidad básica de datos transfe- transacciones eficientemente. Por tanto,
ridos en una operación Entrada/Salida. el tamaño máximo de un intervalo de
Cada intervalo de control contiene uno control está limitado por la mayor uni-
o más registros de datos así como in- dad de datos que el hardware puede
formación de control que describe el transferir en una operación. Además el
formato del intervalo. La Figura 19 ajuste de todos los intervalos de control
muestra los campos de un intervalo de asociados con una secuencia de nodos
control. (llamada rea de control) debe caber en
un cilindro de la unidad de almacena-
Mejoras de Realización
Figura 21. El catálogo Maestro VSAM, que sirve como directorio para todos los ficheros VSAM, es un
archivo VSAM en sí mismo.
Quizá la idea más novedosa en la im- a los registros (p.e. no se permiten ope-
plementación VSAM es que se puede raciones usando la clave). Los ficheros
usar un formato de datos para el siste- VSAM entrada-secuenciados no necesi-
ma. Por ejemplo, aquellas rutinas que tan índice, por eso son menos costosos
mantienen un directorio de todos los de mantener.
ficheros VSAM en el sistema tienen la
información en un fichero VSAM, el Añadiéndose a los procesos de manteni-
catálogo maestro. La figura 21 muestra miento y recuperación de los ficheros
el catálogo maestro, que contiene una VSAM, el sistema proporciona un me-
entrada para cada fichero VSAM (o canismo para definir y cargar un fichero
conjunto de datos VSAM). Ya que to- VSAM. Se debe decidir cómo distribuir
dos los ficheros VSAM deben ser intro- el espacio libre dentro del fichero: si el
ducidos en el catálogo, el sistema puede usuario prevé‚ muchas inserciones, el
localizar cualquier fichero automática- fichero no debería ser cargado con cada
mente mediante su nombre. Por supues- nodo completo al 100% o las insercio-
to el catálogo es un conjunto de datos nes iniciales serían demasiado costosas.
VSAM, así que contiene una entrada Por otra parte, si el fichero va a perma-
describiéndose a sí mismo. necer relativamente estable, cargar los
nodos al 50% de capacidad desperdicia
Si varios procesos acceden al catálo- espacio de almacenamiento. La facili-
go maestro simultáneamente, ocurre dad de definición de ficheros VSAM
competencia y todos excepto uno ten- proporciona ayuda mediante la carga
drán que esperar. Para evitar demoras del fichero de acuerdo con los paráme-
provocadas por este conflicto, cada tros elegidos.
usuario puede definir un catálogo local
con entradas para ficheros VSAM. Los Finamente existen facilidades VSAM
catálogos de usuario, que son ficheros para la inserción eficiente de gran con-
VSAM, deben ser entradas en el catálo- junto de registros contiguos, protección
go maestro. Una vez se ha localizado un de datos, backups de ficheros y recupe-
catálogo de usuario mediante una bús- ración de errores todos los cuales son
queda en el catálogo maestro, referen- necesarios en un entorno de producción.
cias posteriores a ficheros indexados
por ese catálogo no implican buscar en Resumen
el catálogo maestro. El esquema del
catálogo resultante con estructura de Una organización de ficheros externos
árbol y multinivel recuerda al sistema equilibrada y multicamino, el árbol-B,
de ficheros de MULTICS. es eficiente, versátil, simple y de fácil
mantenimiento. Una variante, el árbol-
Otras facilidades de VSAM B+, permite el proceso secuencial efi-
ciente del fichero mientras conserva el
Muchas facetas del VSAM no han apa- coste logarítmico deseado para las ope-
recido en nuestra breve discusión - el raciones de búsqueda, inserción y bo-
lector está avisado de que hemos dado rrado. Los esquemas de árboles-B ga-
sólo un rápido vistazo. Por ejemplo, los rantizan el 50% de utilización del alma-
ficheros VSAM que hemos discutido cenamiento mientras asignan o liberan
son los llamados llave-secuenciados espacio conforme el fichero crece o
(key-sequenced). Otra forma, los entra- decrece. Mas aún, los árboles-B crecen
da-secuenciados (entry-sequenced), y disminuyen exactamente al contrario;
permiten un procesado secuencial efi- la "reorganización" masiva de ficheros
ciente cuando ninguna clave acompaña