Árbol B (BTree) y árbol B+ (B+Tree)

¿Qué es un árbol B?

B-tree es un árbol de búsqueda equilibrado multidireccional
Equilibrio significa que la altura del subárbol es la misma (es decir, todos los nodos hoja están en la misma capa), es decir, el factor de equilibrio de cada nodo es igual a 0
Multidireccional, es decir, excepto por el nodo raíz (la razón por la cual el número de bifurcaciones del nodo raíz no está limitado es porque cuando todo el árbol tiene solo 1 palabra clave, el nodo raíz solo puede tener 2 bifurcaciones), cada una de ellas el otro Todos los nodos tienen al menos m/2 para tomar toda la bifurcación. (m es su orden, y m es también el número máximo de bifurcaciones de un nodo, que también puede entenderse como que cada nodo tiene como máximo m subárboles)

(1) Entre todos los nodos, el que tiene el mayor número de hijos, es decir, el número máximo de bifurcaciones, se denomina el orden de todo el árbol B.
Por ejemplo, si un nodo tiene como máximo 3 bifurcaciones, se denomina árbol B de tercer orden
(2) Los múltiples elementos de datos contenidos en cada nodo se denominan "palabras clave". Cuando un nodo tiene m subárboles Cuando , debe haber palabras clave m-1.
Hay 3 nodos bifurcados en la figura siguiente, y solo se pueden insertar 3-1=2 palabras clave en el espacio
inserte la descripción de la imagen aquí
(3) Si el nodo raíz no es un nodo terminal (el nodo terminal es la siguiente capa por encima del nodo hoja Nodo, el nodo hoja aquí en realidad no existe, representa el nodo que no se pudo encontrar, no contiene ninguna información de palabra clave, el nodo terminal es el "nodo hoja" que en realidad tiene palabras clave almacenadas, pero también se le llama nodo terminal) , entonces tiene al menos 2 subárboles (es decir, al menos una palabra clave puede ocupar un nodo y una palabra clave puede generar bifurcaciones, por lo que hay al menos dos subárboles) (4) Similar al árbol de clasificación binaria, el árbol
B también sigue el principio de la izquierda pequeña y la derecha grande, pero debido a que hay varias palabras clave en un nodo, también tiene varios rangos. Como se muestra abajo:
inserte la descripción de la imagen aquí

El proceso de búsqueda del árbol B:

Suponga que X=8
1: De acuerdo con el objetivo de búsqueda X, comience desde el nodo raíz 12, menor que 12, vaya al subárbol izquierdo, mayor que 12, vaya al subárbol derecho 2: alcance el
nodo raíz del subárbol izquierdo, compare en orden (También puede usar el método de búsqueda binaria) 6, 9, 10; encuentre 9<X<10; luego siga el puntero de bifurcación hacia abajo, pero descubra que es nulo, es decir, este rango no existe. En este momento, sabe que la palabra clave correspondiente no está incluida en el árbol B y la búsqueda de retorno falla.

(5) Los datos del nodo se ordenan de izquierda a derecha.

(6) Excepto el nodo raíz, todos los nodos que no son hojas tienen al menos m/2 (redondeo hacia arriba) bifurcaciones (subárboles), es decir, al menos m/2 (redondeo hacia arriba) -1 palabras clave.
¿Por qué los nodos que no son hojas tienen al menos m/2 (redondeados hacia arriba) bifurcaciones (subárboles)?

Generación e inserción de árboles B:

Suponga que el orden de un determinado árbol B se establece en m = 5, es decir, cada nodo tiene palabras clave como máximo 4. Al insertar una palabra clave, primero utilizará el método de búsqueda de árbol B mencionado anteriormente para ubicar dónde está el debe almacenarse una nueva palabra clave Coloque, y luego inserte palabras clave, pero habrá un problema, si el nodo terminal correspondiente ya tiene 4 palabras clave, y se inserta otra, que no satisfará la naturaleza del árbol B de quinto orden, causará "Dividir". (Es decir, después de insertar una nueva palabra clave, si la cantidad de palabras clave correspondientes al nodo terminal es menor o igual a m-1, la inserción es exitosa. Cuando la cantidad de palabras clave de un nodo es mayor a m-1, el nodo debe dividirse), como se muestra en la siguiente figura:
inserte la descripción de la imagen aquí
Por lo tanto, cada nodo se divide, y cuando ocurre una división, se garantiza que el nodo debe estar lleno y desbordado, y cada nodo después de la división debe ser Hay m /2 (redondeado hacia arriba)-1 palabras clave (excepto el nodo raíz), entonces debe haber m/2 (redondeado hacia arriba) bifurcaciones (subárboles).
⚠️: No cada vez que se divide, el árbol crecerá un nivel más alto. La división debe causar la división del nodo raíz, y el árbol crecerá un nivel más alto. Si no afecta la división del nodo raíz, entonces no no importa cuán dividido, el árbol crecerá No crecerá más alto.

(7) Todos los nodos en el árbol B contienen la dirección de almacenamiento real del registro correspondiente a la palabra clave (generalmente, las palabras clave en el árbol B son ID, ID de usuario y similares). Por lo tanto, en la búsqueda, si una determinada capa coincide con la palabra clave de destino, la dirección de almacenamiento de la palabra clave se busca inmediatamente en el disco.

(8) Dado que la inserción es una nueva adición, la eliminación debe corresponder a una operación de fusión. Sin embargo, después de la eliminación, se deben mantener las características del árbol B, por lo que depende de la posición de la palabra clave eliminada.

Eliminación del árbol B:

Todavía tome el árbol B de quinto orden anterior como ejemplo, suponga que la palabra clave que se eliminará es X
tipo 1: X está en el nodo terminal, y el número de palabras clave del nodo terminal (antes de la eliminación) >= m/2 ( tomar todo), eliminarlo directamente.
inserte la descripción de la imagen aquí

Tipo 2: X está en el nodo terminal, pero el número de palabras clave del nodo terminal es exactamente = m/2 (redondeado), y después de eliminar una, no cumple con la definición del árbol B. En este momento , es necesario considerar cómo llenar esta vacante . Se divide además en el método de transposición padre-hijo y el método de tirar del padre al agua.

Método de transposición padre-hijo: cuando se elimina un nodo y las palabras clave no son suficientes para respaldar la definición del árbol, verifique si hay nodos redundantes que puedan tomarse prestados de los hermanos izquierdo y derecho del nodo. por lo tanto, use la clave del hermano prestado. La palabra se eleva hasta el nodo principal y la palabra clave correspondiente al nodo principal se vuelve a llenar hasta el nodo que no cumple con la definición.

inserte la descripción de la imagen aquí

Tire de papá al agua: cuando la cantidad de palabras clave de los hermanos izquierdo y derecho es apenas suficiente para mantenerse, y no puede igualar, solo puede empujar a papá al agua en este momento para sostener el árbol juntos

inserte la descripción de la imagen aquí

Tipo 3: X está en un nodo no terminal, luego reemplace la posición de X con la palabra clave predecesora o sucesora de X, y luego elimine la palabra clave predecesora y sucesora correspondiente, lo que se convierte en el caso de eliminar el nodo terminal.

Ventajas y desventajas

Ventajas: En la consulta, la memoria externa, es decir, la E/S del disco, es la menos eficiente. Cuando la estructura de árbol tiene una gran cantidad de datos, generalmente se selecciona el almacenamiento en cadena. El almacenamiento en cadena hará que los datos se dispersen en todos los rincones del disco. Es necesario realizar continuamente E/S de disco para buscar y leer, y usar B-tree, porque cada nodo coloca múltiples datos de palabras clave, lo que comprime en gran medida la profundidad del árbol, y cada nodo adopta la forma de una matriz de almacenamiento continuo. Después de leer en la memoria, la velocidad de consulta mejora considerablemente y, al mismo tiempo, se puede reducir la cantidad de IO, lo que mejora la velocidad de consulta.
Falta: algunas palabras clave están en nodos no terminales y algunas palabras clave están en nodos terminales, por lo que no hay forma de realizar una consulta de rango. Al mismo tiempo, debido a que cada nodo contiene la información de almacenamiento de palabras clave, ocupa una parte del espacio, por lo que está destinado a La cantidad de palabras clave que afectan a cada nodo no optimiza la E/S del disco al máximo.

árbol B+

El árbol B+ es una deformación del árbol B, y es una estructura de datos muy importante en la parte inferior de la base de datos.
(1) Los nodos que no son hojas no contienen la dirección de almacenamiento de las palabras clave.
(2) Una palabra clave corresponde a un subárbol, es decir, una palabra clave va seguida de una bifurcación. Entonces, un nodo con n palabras clave contiene n subárboles.

La bifurcación en el árbol B está intercalada entre las palabras clave. Esta es la diferencia más destacada al juzgar si el árbol en el título es B o B+. Mire la posición de la bifurcación

(3) ⚠️El nodo raíz debe tener al menos dos subárboles (dos bifurcaciones) y los nodos de rama deben tener al menos m/2 (redondeo hacia arriba) de subárboles.

El árbol B permite solo una palabra clave para el nodo raíz y dos para el árbol B+

(4) Todas las palabras clave (incluidas las que aparecen en los nodos que no son de hoja) aparecerán en los nodos de hoja, y los nodos de hoja se ordenarán según el tamaño de las palabras clave, y los nodos de hoja adyacentes se conectarán entre sí en el formulario de una lista enlazada. Entonces, el árbol B + admite la búsqueda de rango secuencial. Al mismo tiempo, B+Tree tiene dos punteros principales, uno que apunta al nodo raíz y el otro al nodo hoja de la clave más pequeña.
inserte la descripción de la imagen aquí
(5) Dado que los registros del árbol B+ solo se pueden encontrar en los nodos hoja, la capa inferior se encontrará al buscar y el árbol B volverá después de encontrar la palabra clave de destino en el nodo medio.
(6) Dado que los nodos que no son hojas del árbol B+ no contienen la información de almacenamiento correspondiente al registro de palabras clave, se puede usar un espacio de disco continuo para almacenar más palabras clave, lo que hace que el pedido sea más grande y el árbol más corto, lo que reduce aún más el espacio en disco. tiempos de E/S del espacio.

Supongo que te gusta

Origin blog.csdn.net/whiteBearClimb/article/details/128131370
Recomendado
Clasificación