Gilles Heurtebize1
Projection et Jointure par hachage
Bases De Données C1
Projection et jointure par hachage2
Plan
Projection par hachage.– Rappel sur la projection.– Principes de la projection par hachage.– Illustration.
Phase de projection/hachage. Phase d’élimination des doublons.
Jointure.– Principes de la jointure par hachage.– Illustration.
Phase de hachage. Phase de jointure.
– Coût de la jointure par hachage.
Projection et jointure par hachage3
Projection par hachage
Projection et jointure par hachage4
La projection
La projection d’une relation sans sélection consiste en:– Examiner les nuplets un par un et a éliminer les
champs que l’on ne veut pas garder.– Éliminer les nuplets en double.
C’est cette dernière étape qui coûte cher.– Deux techniques sont possibles:
– Le tri– Le hachage
Projection et jointure par hachage5
Algorithme en deux phases.
Phase de projection et de hachage.– On accède séquentiellement à la table dans un tampon.– Chaque nuplet projeté est place par une fonction de hachage
uniforme dans un des M-1 tampons.(La fonction retourne un entier compris entre 1 et M-1).
– Quand un tampon est plein il est stocké sur le disque.A l’issue de cette phase on a M-1 partitions.
Phase d’élimination des doublons.– Lire une par une les M-1 partitions en mémoire.Du fait du
hachage, les doublons se trouvent dans la même partition.– Effectuer un tri et éliminer les doublons.
Principes de la projection par hachage
Projection et jointure par hachage6
ILLUSTRATION
Phase de projection / hachage
Projection et jointure par hachage7
Phase de projection / hachage
Table A
Accès séquentiel
M-1 Tampons
Projection et jointure par hachage8
Table A
ProjectionAccès séquentiel
Phase de projection / hachage
M-1 Tampons
Projection et jointure par hachage9
Table A
ProjectionAccès séquentiel
Hachage
Distribution dans les M-1 tampons
Phase de projection / hachage
M-1 Tampons
Projection et jointure par hachage10
Table A
ProjectionAccès séquentiel
Tampon 2 plein
Phase de projection / hachage
M-1 Tampons
Projection et jointure par hachage11
Table A
ProjectionAccès séquentiel
Écrire les nupletsPartition 2
Phase de projection / hachage
M-1 Tampons
Projection et jointure par hachage12
Table A
ProjectionAccès séquentiel
Partition 2
Hachage
Distribution dans les M-1 tampons
Phase de projection / hachage
M-1 Tampons
Projection et jointure par hachage13
Table A
ProjectionAccès séquentiel
Partition 2
Tampon M-1 plein
Phase de projection / hachage
M-1 Tampons
Projection et jointure par hachage14
Table A
ProjectionAccès séquentiel
Partition 2
Écrire les nupletsPartition M-1
Phase de projection / hachage
M-1 Tampons
Projection et jointure par hachage15
Table A
ProjectionAccès séquentiel
Partition 2
Partition M-1
Hachage
Distribution dans les M-1 tampons
Phase de projection / hachage
M-1 Tampons
Projection et jointure par hachage16
Table A
ProjectionAccès séquentiel
Partition 2
Partition M-1
Tampon 1 plein
Phase de projection / hachage
M-1 Tampons
Projection et jointure par hachage17
Table A
ProjectionAccès séquentiel
Partition 2
Partition M-1
Écrire les nupletsPartition 1
Phase de projection / hachage
M-1 Tampons
Projection et jointure par hachage18
Table A
ProjectionAccès séquentiel
Partition M-1
Partition 1
Partition 2
Phase de projection / hachage
M-1 Tampons
Projection et jointure par hachage19
ILLUSTRATION
Élimination des doublons
Projection et jointure par hachage20
Élimination des doublons
Partition 2
Partition M-1
Partition 1
Projection et jointure par hachage21
Élimination des doublons
Partition 2
Partition M-1
Partition 1
Lecture de la partition 1 en mémoire
Projection et jointure par hachage22
Élimination des doublons
Partition 2
Partition M-1
Partition 1
Tri en mémoireet élimination des doublons
Projection et jointure par hachage23
Élimination des doublons
Partition 2
Partition M-1
Partition 1
Projection et jointure par hachage24
Élimination des doublons
Partition 2
Partition M-1
Partition 1
Lecture de la partition M-1 en mémoire
Projection et jointure par hachage25
Remarques
Algorithme adapté dans le cas ou le nombre de tampons est assez important par rapport à la relation projetée.
En cas de débordement d’une partition on peut récursivement recommencer l’opération en partitionnant la partition en sous partitions et éliminer les doublons dans chaque sous-partitions.
Projection et jointure par hachage26
Une autre façon de faire pour éliminer les doublons en mémoire.
– Lecture page par page de la partition en mémoire centrale dans un tampon.
– Chaque nuplet n est hache avec une fonction h’ de hachage différente de h. (celle qui a permit de partitionner la table A)
– Chaque nuplet est placé dans les N-1 tampons restants.– Vérifier si il il existe un nuplet déjà stocké tel que h’(n’) = h’(n).– Si il n’existe pas, n’ est stocké à l’emplacement h’(n’).– Sinon vérifier si n est différent de n’.– Si n=n’ alors n’ est élimine sinon n’ est stocké.
Projection et jointure par hachage27
Jointure par hachage
Projection et jointure par hachage28
Jointure par hachage
Algorithme récent Très efficace quand une des deux tables est
petite.
Algorithme en option dans ORACLE.
Il est indispensable d’avoir des statistiques
Projection et jointure par hachage29
Principes de la jointure par hachage
On hache la plus petite des deux tables sur l’attribut de jointure, en n partitions.
On hache la seconde table sur l’attribut de jointure avec la même fonction, en n autres partitions.
On associe les partitions par paire, et on fait la jointure.
Essentiel: pour chaque paire, au moins une partition doit tenir en mémoire.
Projection et jointure par hachage30
ILLUSTRATION
Phase de hachage
Projection et jointure par hachage31
Phase de hachage
Mémoire
Table A
Table B
M tampons
Projection et jointure par hachage32
Phase de hachage
Table A
Table B
Lecture
Projection et jointure par hachage33
Phase de hachage
Table A
Table B
Hachage
Distribution dans les M-2 tampons
Projection et jointure par hachage34
Phase de hachage
Table A
Table B
Partition A1
Partition A2
Partition Am-2
Écrire
Projection et jointure par hachage35
Phase de hachage
Table A
Table B
Partition A1
Partition A2
Lecture
Partition An-2
Projection et jointure par hachage36Partition Bn-2
Phase de hachage
Table A
Table B
Partition B2Partition A2
Lecture
Hachage
Partition An-2
Partition B1Partition A1
Projection et jointure par hachage37
Phase de hachage
Au l’issue de la première phase,on obtient A n-2 partitionsassocies à B n-2 partitions.
Partition Bn-2
Partition B2Partition A2
Partition An-2
Partition B1Partition A1
Projection et jointure par hachage38
Phase de jointure
ILLUSTRATION
Projection et jointure par hachage39
Phase de jointure
Mémoire
Partition Bn-2
Partition B2Partition A2
Partition An-2
Partition B1Partition A1
Projection et jointure par hachage40
Phase de jointure
Lecture de la partition A1 en mémoire
Partition Bn-2
Partition B2Partition A2
Partition An-2
Partition B1Partition A1
Projection et jointure par hachage41
Phase de jointure
Partition A1 en mémoire
Lecture séquentielle de la partition B1 en
mémoire
Partition Bn-2
Partition B2Partition A2
Partition An-2
Partition B1Partition A1
Projection et jointure par hachage42
Phase de jointure
Écriture
Partition A1 en mémoire
Jointure
Partition Bn-2
Partition B2Partition A2
Partition An-2
Partition B1Partition A1
Projection et jointure par hachage43
Phase de jointure
Lecture de la partition A2 en mémoire
Partition Bn-2
Partition B2Partition A2
Partition An-2
Partition B1Partition A1
Projection et jointure par hachage44
Phase de jointure
Lecture séquentielle de la partition B2 en
mémoire
Partition A2 en mémoire
Partition Bn-2
Partition B2Partition A2
Partition An-2
Partition B1Partition A1
Projection et jointure par hachage45
Phase de jointure
Jointure
Partition A2 en mémoire
Partition Bn-2
Partition B2Partition A2
Partition An-2
Partition B1Partition A1
Projection et jointure par hachage46
Phase de jointure
Lecture de la partition An-2 en mémoire
Partition Bn-2
Partition B2Partition A2
Partition An-2
Partition B1Partition A1
Projection et jointure par hachage47
Phase de jointure
Partition An-2 en mémoire
Lecture séquentielle de la partition Bn-2 en
mémoire
Partition Bn-2
Partition B2Partition A2
Partition An-2
Partition B1Partition A1
Projection et jointure par hachage48
Phase de jointure
Partition An-2 en mémoire
Lecture séquentielle de la partition Bn-2 en
mémoire
Jointure
Partition Bn-2
Partition B2Partition A2
Partition An-2
Partition B1Partition A1
Projection et jointure par hachage49
Phase de jointure
Lecture en mémoire des
partitions de A
Jointure
Lecture séquentielle des des partitions de B
Partition Bn-2
Partition B2Partition A2
Partition An-2
Partition B1Partition A1
Projection et jointure par hachage50
Pour la première phase– Chaque table est lu entièrement puis hachées dans
les partitions qui sont recopiés sur disque page par page.
2 (Nb Blocs x Partitions de A + Nb Blocs x Partitions de B ).
Pour la seconde phase– Chaque table partitionnée est lue une fois.
Au total 3 (Nb Blocs x Partition de A + Nb Blocs x Partition de B ).
Coût de la jointure par hachage
Projection et jointure par hachage51
Remarques
Algorithme adapté quand toute partition de la plus petite table tiens en mémoire.
En cas de débordement d’une partition il faut appliquer la même méthode employée pour la projection.
L’algorithme de jointure présenté suppose que l’on a M-2 tampons pour une partition de la table A, un tampon pour la table B et un tampon pour la jointure.
Il existe d‘autres variantes de cet algorithme.
Projection et jointure par hachage52
Remarques (suite)
Ex:– Si la table A est si petite qu’elle tiens en mémoire:
Partitionner la table A dans un des M-2 tampons comme précédemment.
Lire séquentiellement la table B en appliquant sur chaque nuplet la même fonction de hachage.
Le comparer avec les nuplets de la table A et faire la jointure si il y a lieu.
– Dans ce cas,chaque table n’est lu q’une seule fois.– le coût est de:
(Nb Blocs x Partition de A + Nb Blocs x Partition de B ).
Projection et jointure par hachage53
Références
Cours de bases de données.
Aspects Systèmes.
Phillippe Rigaux, Michel Sholl