Los B-Trees se usan con mayor frecuencia para los índices de bases de datos en el disco duro, pero tienen ventajas incluso como una estructura de datos en memoria, dada la jerarquía de memoria moderna con múltiples capas de caché y con memoria virtual. Incluso si la memoria virtual está en un SSD, eso no cambiará.
Utilizo una biblioteca de árbol de múltiples vías estilo B + en memoria que escribí bastante en C ++. Se puede tener ventajas de rendimiento - la razón por la que fue escrito originalmente era tratar de utilizar la memoria caché mejor - pero tengo que admitir que a menudo no funciona de esa manera. El problema es la compensación, lo que significa que los elementos deben moverse dentro de los nodos en las inserciones y eliminaciones, lo que no ocurre con los árboles binarios. Además, algunos de los hacks de codificación de bajo nivel que utilicé para optimizarlo, bueno, probablemente confunden y derrotan al optimizador, la verdad es que.
De todos modos, incluso si sus bases de datos se almacenan en un SSD, ese sigue siendo un dispositivo de almacenamiento orientado a bloques, y todavía hay una ventaja de usar B-Trees y otros árboles de múltiples vías.
PERO hace unos diez años, se inventaron algoritmos y estructuras de datos ajenos al caché. Estos son ajenos al tamaño y la estructura de los cachés, etc. - hacen (asintóticamente) el mejor uso posible de cualquier jerarquía de memoria. Los árboles B deben "ajustarse" a una jerarquía de memoria particular para hacer el mejor uso (aunque funcionan bastante bien para una amplia gama de variaciones).
Las estructuras de datos ajenas a la memoria caché a menudo aún no se ven en la naturaleza, si es que lo hacen, pero es hora de que hagan obsoletos los árboles binarios en memoria habituales. Y también pueden resultar útiles para discos duros y SSD, ya que no les importa cuál es el tamaño del clúster o el tamaño de la página de caché del disco duro.
El diseño de Van Emde Boas es muy importante en las estructuras de datos ajenas a la memoria caché.
El curso de algoritmos MIT OpenCourseware incluye cierta cobertura de estructuras de datos ajenos a la memoria caché.