Les B-Trees sont le plus souvent utilisés pour les index de base de données sur le disque dur, mais ils présentent des avantages même en tant que structure de données en mémoire, compte tenu de l'hérarchie de la mémoire moderne avec plusieurs couches de cache et de mémoire virtuelle. Même si la mémoire virtuelle est sur un SSD, cela ne changera pas.
J'utilise une bibliothèque d'arborescence multi-voies de style B + en mémoire que j'ai beaucoup écrite en C ++. Il peut avoir des avantages en termes de performances - la raison pour laquelle il a été écrit à l'origine était d'essayer de mieux utiliser le cache - mais je dois admettre qu'il ne fonctionne pas souvent de cette façon. Le problème est le compromis qui signifie que les éléments doivent se déplacer dans les nœuds lors des insertions et des suppressions, ce qui ne se produit pas pour les arbres binaires. En outre, certains des hacks de codage de bas niveau que j'ai utilisés pour l'optimiser - eh bien, ils confondent et défont probablement l'optimiseur, a dit la vérité.
Quoi qu'il en soit, même si vos bases de données sont stockées sur un SSD, il s'agit toujours d' un périphérique de stockage orienté bloc, et il y a toujours un avantage à utiliser les arborescences B et d'autres arborescences multivoies.
MAIS il y a une dizaine d'années, des algorithmes et des structures de données sans cache ont été inventés. Ceux-ci sont inconscients de la taille et de la structure des caches, etc. - ils font (asymptotiquement) la meilleure utilisation possible de toute hiérarchie de la mémoire. Les B-Trees doivent être "accordés" à une hiérarchie de mémoire particulière pour en faire le meilleur usage (bien qu'ils fonctionnent assez bien pour un éventail assez large de variations).
Les structures de données inconscientes du cache ne sont pas encore souvent vues dans la nature, voire pas du tout, mais il est temps qu'elles rendent les arbres binaires en mémoire obsolètes. Et ils peuvent également s'avérer utiles pour les disques durs et les SSD, car ils ne se soucient pas de la taille de la page de la taille du cluster ou du cache du disque dur.
La disposition de Van Emde Boas est très importante dans les structures de données sans cache.
Le cours sur les algorithmes MIT OpenCourseware comprend une certaine couverture des structures de données inconscientes du cache.