Je vous expose la situation : il semblerai que les B+Tree soient les plus utilisés quand il s'agit de représenter une hiérarchie dans un système de fichier afin de stocker la liste des éléments enfants d'un dossier donné. En effet, avoir du O(log(n)) pour presque toues les opérations semble plutôt bien (moi je suis pour l'instant en O(n) avec la méthode la plus basique qui soit pour enregistrer ma liste ...).
Je voudrais donc implémenter mon propre B+Tree pour mon "système de fichier" (plus une base de donnée) afin d'améliorer les temps d'accès et de modifications des nodes. Cependant en cherchant sur le net soit j'ai trouvé des exemples trop spécialisés pour être utilisés (j'y comprends rien) soit il manquait certaines opérations (dont la suppression d'une node, j'en ai besoin). Existe-t-il des descriptions complètes de l'algo sous une forme "simple" (pseudocode) sur le net ?
Petite précision, je fonctionne avec des blocks de 64 octets, en comptant que chaque "pointeur" fait 8 octets je peut donc en mettre 8 par node. Donc à priori 7 de données et le 8ième qui pointe vers la node suivante. Les nodes doivent cependant êtres comparées par le nom, qui peut être obtenu en le lisant à partir du pointeur de la node (mais qui se trouve dans un autre bloc, avec ~32760 caractères maxi). Par contre, la lecture d'un bloc n'est pas très rapide donc une économie de n vers log(n) pourrait être intéressante. Le B+Tree est-il adapté à mon problème ?
Merci d'avance![]()
Partager