Descarga la aplicación para disfrutar aún más
Esta es una vista previa del archivo. Inicie sesión para ver el archivo original
Lo que se busca con esto es hacer la mayor cantidad de índices en la menor cantidad de niveles de árboles posibles para lograr una mejor eficiencia. O sea que se busca que los arboles sean más pequeños y gruesos en vez de largos y delgados siguiendo las siguientes reglas: Cada página, excepto la raíz y las hojas, tiene por lo menos [m/2] descendientes. Una página que no es una hoja K descendiente contiene k-1 llaves. Una página hoja contiene por lo menos [m/2]-1 y no más de m-1 llaves. Es necesario desarrollar algún tipo de garantía igualmente confiable para que se mantengan estas propiedades cuando se eliminan llaves de árbol. Trabajar a en situaciones simples te ayudara a demostrar que con la eliminación de llaves puedes caer en varias situaciones diferentes. Como se mostró en el caso 1, eliminar la llave J no provoco que el contenido de la página 5 caiga por debajo del mínimo número de llaves. Por ende, la solución no fue mucho más complicada que reacomodarlas llaves de esa página. En el caso 2 es más complicado, porque, si solo se elimina la M de la raíz, es más complicado reacomodar el árbol para que mantenga su estructura. En el caso 3 se elimina R de la página 7 y no se hace nada más, porque la página solo tiene una llave y el número mínimo de llaves para una página hoja en un árbol de orden 6 es: [6/2]-1=2 Por lo tanto, se tienen que tomar medidas para arreglar este estado de insuficiencia. La acción correctiva consiste en redistribuir las llaves entre las páginas, esta debe de ocasionar un cambio en la llave que está en la página padre, para que continúe actuando como separador. En el caso 4 al eliminar la letra A y no poder hacer redistribución con la pagina hermana lo que se hace es una concatenación tomando la página padre y las dos páginas hijas para crear una nueva página, pero se crea una nueva insuficiencia de datos en la página hermana de la página padre de la A. En el caso 5 resolvemos el problema que quedo en el caso 4, de igual manera hacemos una evaluación para ver si la página hermana tiene una llave de sobra para hacer ARBOLES DE TIPO B 9.13 Eliminación, Redistribución y Concatenación redistribución, pero al solo tener las necesarias se opta por una concatenación, se toma la página padre que es la raíz de nuestro árbol y se concatena con sus dos hijas. El caso 6 muestra lo que pasa cuando la concatenación llega hasta la raíz de nuestro árbol lo que hace que este mismo disminuya su altura. 9.13.1 Aquí se habla de las diferencias que hay en la redistribución a diferencia de la concitación y la división. A diferencia de la división y la concatenación la redistribución no se propaga, todos sus efectos son locales, esto se refiere a que todos sus efectos suceden entre páginas “hermanas” de la misma página padre. En la redistribución no existe una regla fija para la reacomodación de las llaves, una eliminación en un árbol B bien estructurado no puede causar una insuficiencia de más de una llave. La redistribución por lo tanto puede restituir las propiedades del árbol B trasladando solo una llave de un hermano a la página que ha tenido la insuficiencia, aun cuando la distribución de las llaves entre la página sea dispareja. 9.14 Redistribución durante la inserción Prácticamente en los arboles B su inserción no necesita una operación análoga de redistribución sin embargo nunca está de más optimizar cuestiones de saturación. Dicho de otra forma, la redistribución durante la inserción es una forma muy efectiva de para mejorar la utilización del almacenamiento haciendo al árbol B un poco más eficiente. La lectura nos deja una reflexión sobre, aunque la importancia de la eficiencia de almacenamiento es recomendable el uso de la redistribución como alternativa de la división sea usado solo cuando sea posible, y de dividir una página solo cuando ambos hermanos estén completos. 9.15 Árboles B* Este árbol es una pequeña al árbol B convencional que nos permite aprovechar mucho mejor el espació de las páginas ya que antes utilizábamos mínimo la mitad del almacenamiento de una página pero esta mejora hace que mínimo utilicemos dos terceras parte de cada página que no sea la raíz, pero desde mi punto de vista creo que se vuelve más complejo y difícil el manejo del árbol ya que tendremos que cambiar nuestros métodos de eliminación y de redistribución para que se adapten a las nuevas características. Además de que no solo eso debe de cambiar sino el uso de nuestra página raíz ya que para permitirle dividirse y que sus hijos cumplan con las características de este árbol, será necesario que permitamos un tamaño mayor de almacenamiento a la raíz y usar métodos específicos para sí mismo. 9.16 Manejo de páginas virtuales en buffers Estas mejoras aplicadas al Árbol B Virtual aunque aumentan la cantidad de memoria RAM utilizada por el sistema, reducen considerablemente el acceso a disco por búsqueda, lo que, a fin de cuentas, siguen manteniendo el uso de la RAM al mínimo, por lo cual, si se tiene la posibilidad de utilizar más RAM, es una excelente medida para implementar en cuanto a búsquedas constantes de información, ya que al mantener, la página raíz únicamente, o también mantener las páginas principales, aumentan considerablemente las posibilidades de que la información requerida se encuentre ya en memoria principal, evitando de esta forma desperdiciar tiempo y memoria al tratar de ingresar a almacenamiento secundario. 9.17 Colocación de la información asociada con la llave. En cualquier aplicación real la información asociada es el verdadero objeto de interés. Por lo regular es la información asociada con la llave la que en realidad se desea encontrar. Es importante preguntar dónde y cómo almacenar la información indizada por las lleves en el árbol. Fundamentalmente se tiene dos opciones: Almacenar la información en el árbol B junto con la llave Colocar la información en un archivo separado; dentro del índice se acopla la llave con un número relativo de registro, o un byte apuntador de dirección que hace referencia a la localización de la información en ese archivo separado. Las ventajas que tiene el prime enfoque sobre el segundo es que una vez que se encuentra la llave, no se requiere más accesos a disco. La información está ahí con la llave. Sin embargo, si la cantidad de información asociado con cada llave es relativamente grande, entonces almacenarla con la llave reduce el número de llaves que pueden colocarse en una página del árbol B. A medida que se reduce el número de llaves por página, se reduce el orden del árbol y tiende a ser de mas altura, ya que hay menos descendientes de cada página. La ventaja del segundo método es que, suponiendo que la información asociada es de gran longitud en relación con la longitud de la llave, colocar la información asociada en otro lugar permite construir un árbol de orden más alto. En general, entonces la decisión acerca de donde conviene almacenar la información debe guiarse por algunos cálculos que comparen las profundidades de los árboles que resultan. El factor crítico que influye en estos cálculos es la relación que guarda la longitud del registro completo con la longitud de solo una llave y el apuntador. Si pueden ponerse muchas parejas llave/apuntador en el área requerida para una sola pareja completa llave/registro, es recomendable la eliminación de la información asociada del árbol B y su colocación en un archivo separado. 9.18 Registros y Llaves de Longitud Variable. Si bien es cierto, muchas de las aplicaciones actuales al manejar información relacionada con una llave esta puede variar en longitud, por lo tanto, aquí se nos presenta un incidente muy peculiar en el que contradecimos las características y algunas de las reglas de un Árbol B. Recordemos que un Árbol B es de algún orden”. Cada página tiene un número fijo máximo y mínimo de llaves que puede almacenar, por lo tanto, la idea de implementar un registro de longitud variable hasta este punto es un cambio de perspectiva realmente notable. Un árbol B con un número variable de llaves por página no tiene claramente un orden fijo único. Sin embargo, esta situación nos deja grandes posibilidades que podemos utilizar para mejorar la eficiencia de un Árbol B, como: Utilizar una estructura con campos de longitud variable el cual como bien se sabe combate la fragmentación interna, ahora a eso le agregamos que en lugar de usar un número máximo y mínimo de llaves por página se utilice un máximo y mínimo de bytes no romperemos reglas de un Árbol B al tener una cantidad preestablecida de espacio y esto nos permitirá manipular el espacio de mejor manera aprovechando el mismo para poder asignar una mayor cantidad incluso de llaves por página incrementando así la cantidad de sus respectivos descendientes y a su vez probablemente un Árbol con menos niveles. Esto nos deja una mejor idea de su implementación en aplicaciones actuales incluso sabiendo que pueden desarrollarse e implementarse mejoras como mejorar la promoción de llaves, las llaves más pequeñas a niveles superiores y las más grandes en inferiores, y como bien sabemos esto nos dará un Árbol B con un mínimo de niveles y mayor cantidad de descendientes aprovechando la variabilidad. Comparación de índices con árboles. Un índice es una forma de encontrar de forma sencilla un registro sin tener que buscar registro por registro, esto se hace por medio de llaves y estructuras de datos simples. Podríamos decir que un índice es como el directorio de una biblioteca donde se encuentran muchos tipos de libros, autores y clasificaciones, entonces podemos dividir todos estos libros por su contenido ya sea de investigación, novelas, cocina o podría ser por el título del libro o el autor del mismo, todas estas formas de clasificarlos se podrían denominar como sus llaves, entonces dando una búsqueda por el libro o el autor que estamos buscando estamos acortando el tiempo de búsqueda para encontrar el libro de nuestra referencia, así es como se podrían explicar los índices en las estructuras de datos. A su vez los árboles son los índices llevados a un campo de registros más grandes, estos pueden guardar miles de datos y acceder a estos con muy pocos movimientos ahorrando memoria RAM y sin tanta perdida de datos. Su invención se hizo ya que muchas veces era imposible guardar registros de tanta capacidad de almacenamiento por lo que se tenía que ahorra la mayor capacidad de almacenamiento tanto de memoria RAM como de memoria secundaria. A comparación de otros medios de índices estos pueden acceder a los datos almacenados de hasta un millón de registros en menos de 4 desplazamientos a comparación de una búsqueda binaria que le llevaría aproximadamente más de 20 desplazamientos. Integrantes Carrillo Magallanes Fernando Corral Barajas Carlos Alejandro Gutiérrez Ramírez Felipe de Jesús Musich Flores Branco Ríos Vergara Isaac Mijael Rodríguez Gómez Jimena Fernanda Romero Proa Juan Manuel
Compartir