Você está na página 1de 3

Estructura de Archivos, Michael J.

Folk

Esta combinación de desplazamiento lento y transferencia rápida lleva a la idea de paginación.

El uso de grandes páginas no es gratuito. Todo acceso a una página requiere la transmisión de una gran
cantidad de datos, la mayoria de los cuales no se usan.

Supóngase que debe construirse un árbol en páginas conforme se recibe la siguiente secuencia de llaves
de una sola letra:

Los problemas anteriores pueden apreciarse al insertar la siguiente secuencia de claves de registros en
un árbol paginado que almacena 3 nodos por página:

En un sistema con paginas se lee una pagina completa del archivo, ya que detodos modos se tomo el
tiempo para desplazerse en el disco.

Para el peor caso de búsqueda en un árbol binario balanceado: log2 (N+1), N: cantidad de claves

Para las versiones paginadas del mismo árbol: logk+1(N+1), N: cantidad de claves, k: cant. claves por
pág.

Comparación

log2 (134.217.727 +1) = 27 desplazamientos

log511+1(134.217.727 +1)= 3 desplazamientos

Los registros se van insertando conforme llegan. Para mantener la página lo más balanceada posible, a
medida que se insertan las claves se rotan (si es necesario) dentro de la página. El árbol resultante es el
siguiente

Sabemos que quizá la característica más crítica de los dispositivos de almacenamiento secundario es la
velocidad de desplazamiento para acceder a los datos.

Pero una vez que la cabeza lectora esta en posición, la lectura y escritura se hacen muy rápidamente

En un sistema con paginas, ya que se tomó el tiempo para desplazarse, se lee una página completa del
archivo.

Si la siguiente porción de informacion que se requiere del disco está en la página que se leyo, se ha
ahorrado el costo de un acceso a disco.
La paginación, entonces, es una solución potencial al problema de la búsqueda.

Al dividir un árbol binario en páginas y después almacenar cada página en un bloque de localidad
contiguas en disco debe ser posible reducir el numero de desplazamientos asociados a cualquier
búsqueda.

El problema, una vez que se decide realizar un árbol paginado, es cómo construirlo. Si se tiene todo el
conjunto de llaves a la mano antes de construir el árbol, la solución es relativamente sencilla: puede
clasificarse la lista de llaves y construir el árbol a partir de esta lista. Lo más importante es que, si se
planea iniciar la construcción a partir de la raíz, se sabe que la llave situada a la mitad de la lista
clasificada debe ser la llave raíz dentro de la página raíz del árbol. Abreviando, se sabe dónde comenzar,
y se asegura que este punto inicial divide el conjunto de llaves en forma balanceada.

Por desgracia, el problema es mucho más complejo cuando se reciben llaves en orden aleatorio y se
insertan tan pronto como se reciben.

Los problemas que presenta esta estructura, son similares a los de los arboles binarios de búsqueda, y se
derivan de las sucesivas operaciones de inserción de nuevos registros en las páginas:

Por una parte, puede llegar a obtenerse una estructura des balanceada consecuencia de una mala
elección de la clave inicial, ya que el árbol se construye de forma descendente.

Por otra, debido a que tampoco existe una política de situación de claves dentro de los bloques, puede
darse el caso de que algunos bloques tengan un número reducido de claves mientras que otros estén
completos, lo cual no contribuye al equilibrio del árbol ni a la optimización del acceso a la información

Aunque el árbol no está excesivamente desequilibrado, ilustra claramente los problemas inherentes a la
construcción de un árbol paginado en forma descendente

Cuando se comienza a partir de la raíz, las llaves iniciales deben, por necesidad, ir en la raíz. En este
ejemplo al menos dos de estas llaves, C y D, no son las que se quisiera tener ahí. Son adyacentes en la
secuencia y tienden hacia el principio del conjunto total de llaves. En consecuencia, hacen que el árbol
salga de balance.

Una vez que las llaves equivocadas se colocan en la raíz del árbol (o en la raíz de cualquier subárbol que
está más abajo en el árbol), ¿qué es lo que se puede hacer? Por desgracia, la respuesta no es fácil. No se
puede simplemente rotar páginas completas del árbol en la misma forma en que se rotarían las llaves
individuales en un árbol que no está paginado si se rota el árbol de tal forma que la página raíz inicial se
mueva hacia abajo a la izquierda, trasladando las llaves C y D a una mejor posición, entonces la llave S
queda fuera de lugar. Por lo tanto, deben dividirse las páginas.
Esto abre todo un mundo de posibilidades……. Y problemas.

La ocupación de las páginas es muy desigual: mientras que algunas están completas, otras sólo
almacenan una clave.

Así, aunque se ha determinado que la idea de agrupar llaves en páginas es muy buena considerando la
reducción de desplazamientos en disco, no se ha encontrado una forma de agrupar las llaves correctas.

Todavía quedan al menos dos preguntas sin respuesta:

¿Cómo puede asegurarse que las llaves de la página raíz sean buenas llaves separadoras, que dividan en
forma más o menos pareja el conjunto de las otras llaves?

¿Cómo evitar que se agrupen llaves, como C, D y S en el ejemplo, que no deben compartir una página?

Sin embargo, este tiempo de transmisión adicional justifica su costo debido a que ahorra muchos
desplazamientos, los cuales consumen más tiempo que las transmisiones adicionales.

Un ejemplo típico de tamaño de página puede ser de 8 kilobytes, capaz de almacenar 511 parejas de
campos de llaves y referencias. Con este tamaño de página, y suponiendo que cada página contiene un
árbol Lleno, completamente balanceado, y que las páginas por sí mismas están organizadas como un
árbol lleno completamente balanceado, entonces es posible encontrar cualquiera de 134217727 llaves
con sólo tres desplazamientos.

Cada acceso a una página requiere transmitir muchos datos, la mayoría no usados.

Hay tiempo de transmisión adicional, pero se ahorran muchos desplazamientos que consumen más
tiempo que las retransmisiones.

Você também pode gostar