IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Pourquoi un Btree et pas un AVL ?


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 38
    Par défaut Pourquoi un Btree et pas un AVL ?
    Salut à tous,

    A l'occasion de mon TIPE, je suis amené à travailler avec des B-tree et des AVL. Seulement, une question à laquelle je dois répondre est "pourquoi dans les bases de données ce sont les b-tree qui sont utilisés, et non les AVL ?"

    En effet, les AVL sont plus performants (si on travaille en mémoire tout du moins). Seulement, ce qui est vraiment coûteux en performance, ce sont les accès disques. Alors je me suis dit que sur le disque (ce qui correspond parfaitement aux bases de données), les Btree sont certainement beaucoup plus performants que les AVL, étant donné qu'un noeud d'un btree contient beaucoup plus d'éléments qu'un noeud d'AVL. Donc, si l'on peut accéder à un noeud par une seule lecture sur le disque, les btree sont plus performants.

    Mais rien ne nous empêche de mettre plusieurs noeuds d'un AVL dans un seul bloc du disque, et donc d'accéder aussi à un grand nombre d'éléments d'un AVL par une seule lecture sur le disque...


    Donc, pourquoi utiliser des Btree et non des AVL ? Qu'est-ce qui les rend plus performants ?



    Merci d'avance.

  2. #2
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par alex.hitman Voir le message
    Mais rien ne nous empêche de mettre plusieurs noeuds d'un AVL dans un seul bloc du disque, et donc d'accéder aussi à un grand nombre d'éléments d'un AVL par une seule lecture sur le disque...


    Mais dans ce cas les noeuds qui sont dans le même bloc n'ont pas de rapport entre eux (i.e. ne sont pas consécutifs). Ou alors il faut modifier le contenu des blocs à chaque balancement, ce qui ferait beaucoup d'accès disque.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #3
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 38
    Par défaut
    Merci de la réponse.

    On pourrait décider de placer dans un même bloc les noeuds issus d'un même parent, c'est à dire qu'il y aurait un "sous-AVL" dans un bloc, dans ce cas une lecture de bloc suffirait pour nous donner plusieurs niveaux de notre AVL.

    Effectivement, il faudrait ensuite maintenir tout cela organisé, mais je ne pense pas que cela demande tant d'opérations sur le disque que ça, comparé à un Btree.

    Je vais réfléchir sur ce point...


    Mais autrement, n'y a-t'il pas d'autre raison poussant à l'utilisation d'un Btree ?

  4. #4
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par alex.hitman Voir le message
    Merci de la réponse.

    On pourrait décider de placer dans un même bloc les noeuds issus d'un même parent, c'est à dire qu'il y aurait un "sous-AVL" dans un bloc, dans ce cas une lecture de bloc suffirait pour nous donner plusieurs niveaux de notre AVL.

    Effectivement, il faudrait ensuite maintenir tout cela organisé, mais je ne pense pas que cela demande tant d'opérations sur le disque que ça, comparé à un Btree.

    Je vais réfléchir sur ce point...


    Mais autrement, n'y a-t'il pas d'autre raison poussant à l'utilisation d'un Btree ?
    Regarde le rapport entre les Red-Black tree et les AVL d'une part et les Btree de l'autre.

  5. #5
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 38
    Par défaut
    Justement, j'ai beaucoup lu et travaillé sur ces différents types d'arbres, mais je ne comprends pas pourquoi ce sont les Btree qui sont utilisés, et non par exemple des AVL que l'on structurerait "par bloc"...

  6. #6
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par alex.hitman Voir le message
    Justement, j'ai beaucoup lu et travaillé sur ces différents types d'arbres, mais je ne comprends pas pourquoi ce sont les Btree qui sont utilisés, et non par exemple des AVL que l'on structurerait "par bloc"...
    1/ pourquoi preferer des red-black trees aux AVL?
    2/ quel est le rapport entre les red-black tree et les Btrees? (Si tu n'en vois pas, considere le regroupement d'un noeud noir et de ses fils rouges et compare ca avec un Btree dont les noeuds ont 4 fils au maximum).

Discussions similaires

  1. Réponses: 9
    Dernier message: 05/10/2005, 14h50
  2. Pourquoi ce code marche pas sous FF?
    Par Death83 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 09/09/2005, 10h04
  3. [W3C] Pourquoi ça ne marche pas sous IE
    Par polo-j dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 16/02/2005, 16h07
  4. Pourquoi je n'ai pas le droit à un bootsplash ?
    Par Michaël dans le forum Administration système
    Réponses: 4
    Dernier message: 30/08/2004, 14h02
  5. [C#] Pourquoi je ne peux pas sauvegarder le fichier Xml ?
    Par gregoun dans le forum Services Web
    Réponses: 5
    Dernier message: 05/05/2004, 10h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo