Mati - PowerPoint PPT Presentation

About This Presentation
Title:

Mati

Description:

Mati re S lectionn e: Triage Externe, Join Hachage, Chapitres 13 15: 13.1 13.5, 14.4, – PowerPoint PPT presentation

Number of Views:79
Avg rating:3.0/5.0
Slides: 19
Provided by: RaghuRa103
Category:

less

Transcript and Presenter's Notes

Title: Mati


1
Matière Sélectionnée Triage Externe, Join à
Hachage,
  • Chapitres 1315 13.113.5, 14.4,

2
Pourquoi Trier?
  • Problème classique en informatique (Voir Knuth,
    v.3)!
  • Données requises en ordre trié
  • P.ex. Trouver les étudiants en ordre croissant
    de gpa
  • Chargement en vrac de lindex à arbre B
  • Élimination des duplicatas dans une collection
    denregistrements
  • Algorithme de Sort-merge join
  • Problème commun trier des données trop larges
    pour tenir en mémoire

3
Merge Sort à 2 Voies Requiert 3 Tampons
  • Passage 1 Lire une page, la trier (en mémoire),
    lécrire sur disque.
  • seulement une page tampon utilisée
  • Passage 2, 3, , etc.
  • trois pages tampon utilisées

ENTREE 1
SORTIE
ENTREE 2
Mémoire principale
Disque
Disque
4
Merge Sort à 2 Voies Algorithme
  • proc two-way_extsort(file)
  • // Trier un fichier sur disque en utilisant 3
    pages tampons
  • // Passage 0 produit des runs dune page
  • Lire chaque page du fichier dans la mémoire, le
    trier et lécrire.
  • //Fusionner des paires de runs pour produire de
    plus long runs
  • // jusquà ce quil ne reste quun seul run
  • While de runs à la fin du passage précédent gt
    1 do
  • //Traiter les passages i1,2,
  • While il y a des runs à fusionner issus du
    passage précédent do
  • Prendre les 2 runs suivants du
    passage précèdent.
  • Lire chaque run dans un tampon dentrée, 1
    page à la fois.
  • Fusionner les runs et écrire le résultat dans
    le tampon de sortie en
  • forçant le contenu de ce tampon vers le disque
    page par page.
  • endproc

5
Merge Sort Externe à 2 Voies
Fichier
6,2
2
3,4
9,4
8,7
5,6
3,1
  • A chaque passage on lit et écrit chaque page du
    fichier gt 2N I/Os par passage.
  • N pages dans le fichier gt de passages.
  • Doù le coût total est
  • Idee Divide et impera trier des sousfichiers
    et fusionner.
  • Dans lexemple, le fichier dentrée contient 7
    pages les pages noires montrent ce qui se
    passerait avec 8 pages.

PASSAGE 0
runs de 1page
1,3
2
3,4
5,6
2,6
4,9
7,8
PASSAGE 1
4,7
1,3
2,3
runs de 2 pages
8,9
5,6
2
4,6
PASSAGE 2
2,3
4,4
1,2
runs de 4 pages
6,7
3,5
6
8,9
PASSAGE 3
1,2
2,3
3,4
runs de 8 pages
4,5
6,6
7,8
9
6
Merge Sort Externe Général
  • Coment utiliser plus de 3 pages tampon ?
  • Pour trier un fichier avec N pages en utilisant B
    pages tampon
  • Passage 0 utiliser B pages tampon. Produit
    runs triés de B pages chacune.
  • Passage 2, , etc. fusionner B-1 runs.

ENTREE 1
. . .
. . .
ENTREE 2
. . .
SORTIE
ENTREE B-1
Disque
Disque
B tampons en mémoire
7
Merge Sort Externe Général Algorithme
  • proc two-way_extsort(file)
  • // Trier un fichier sur disque en utilisant B
    pages tampons
  • // Passage 0 produit des runs de B pages
  • Lire B pages du fichier dans la mémoire, les
    trier et les écrire.
  • //Fusionner B-1 runs pour produire de plus long
    runs
  • // jusquà ce quil ne reste quun seul run
  • While de runs à la fin du passage précédent gt
    1 do
  • //Traiter les passages i1,2,
  • While il y a des runs à fusionner issus du
    passage précédent do
  • Prendre les B-1 runs suivants du
    passage précèdent.
  • Lire chaque run dans un tampon dentrée, 1
    page à la fois.
  • Fusionner les runs et écrire le résultat dans
    le tampon de sortie en
  • forçant le contenu de ce tampon vers le disque
    page par page.
  • endproc

8
Coût du Merge Sort Externe
  • Nombre de passages
  • Coût 2N ( de passages)
  • P.ex., avec 5 pages tampon, trier un fichier de
    108 pages
  • Passage 0 22 runs triés de 5
    pages chacune (le dernier nayant que 3 pages)
  • Passage 1 6 runs triés de 20
    pages chacune (le dernier avec seulement 8 pages)
  • Passage 2 2 runs triés, 80 pages et 28 pages
  • Passage 3 fichier trié de 108 pages

9
Nombre de Passages du Triage Externe
10
I/O pour le Merge Sort Externe
  • de plus longs runs signifient souvent moins de
    passages!
  • Les algorithmes présentés font des I/O dune page
    à la fois.
  • En pratique, on lit un bloc de pages
    sequentiellement!
  • Suggestion les tampons devraient contenir des
    blocs de pages et non des pages individuelles.
  • En pratique, la plupart des fichiers sont triés
    en 2-3 passages.
  • Des DBMSs typiques trient 1M denreg.s de la
    taille de 100 bytes en 15 minutes.

11
Nombre de Passages du Triage Optimisé
  • Taille des Blocs 32, le passage initial
    produit des runs de 2B.

12
Double Tampons
  • Afin de réduire le temps dattente pour que une
    requête I/O soit complétée, on peut prélire les
    données dans un bloc de réserve.
  • Potentiellement, plus de passages sont possibles
    en pratique, la plupart des fichiers sont
    toujours triés en 2-3 passages.

ENTREE 1
ENTREE 1'
ENTREE 2
SORTIE
ENTREE 2'
SORTIE'
b
Taille de bloc
Disque
ENTREE k
Disque
ENTREE k'
B tampons en mémoire, fusion à k voies
13
Utilisation des Arbres B pour Trier
  • Scénario La table à trier a un indexe à arbre B
    sur les colonnes de triages.
  • Idée Puiser les enregistrements dans lordre en
    traversant les feuilles de lindexe.
  • Est-ce une bonne idée ?
  • Cas à considérer
  • Lindex B est groupé Bonne idée!
  • Lindex B est non groupé Pourrait être une
    très mauvaise idée!

14
Index B Groupé Utilisé pour Trier
  • Coût partir de la racine à la feuille la plus à
    gauche et de là traverser toutes les pages
    feuilles (Alternative 1)
  • Si lalternative 2 est utilisée? Coût
    additionnel de puiser les enreg.s des données
    chaque page puisée juste une fois.

Index
(Oriente la recherche)
Entrees des donnees
("Sequence set")
Enregistrements des données
  • Toujours meilleur que le triage externe!

15
Index B Nongroupé Utilisé pour Trier
  • Alternative (2) pour les entrées des données
    chaque entrée contient le rid dun enregistrement
    des données. En général, un I/O par
    enregistrement des données!

Index
Entrées des données
Données
16
Hash Join Idée
  • Deux phases partition et vérification
    (matching)
  • Partition Repartir les deux relations R et S en
    utilisant la même fonction de hachage h les
    tuples de R dans la partition i de R ne peuvent
    être joints que avec ceux de la partition i de S.
    Suppositions faites
  • Le de pages tampon est B 1 pour entrée et 1
    pour sortie
  • Le de partitions est k
  • Le de pages tampon utilisé par les partitions
    est B-2
  • Hacher R et S sur les colonnes de join i et j
  • Matching Lire une partition Ri de R en mémoire
    et ensuite la hacher en utilisant une fonction de
    hachage h2 (différente de h). Scanner la
    partition Si de S pour rechercher les tuples
    correspondants aux tuples de Ri (en utilisant h2
    pour vérifier la table de hachage de Ri).

17
Hash Join Algorithme
  • // Calculer le join de deux relations R et S sur
    les colonnes Ri et Sj.
  • // Repartir R en k partitions
  • foreach tuple r de R do
  • lire r et lajouter à la page tampon h(ri)
    // Forcer cette page vers le disque au
    // fur et à mesure quelle
    se remplit
  • // Repartir S en k partitions
  • foreach tuple s of S do
  • lire s et lajouter à la page tampon h(sj)
    // Forcer cette page vers le disque au
    // fur et à mesure quelle
    se remplit
  • //Phase de vérification (Probing/matching)
  • for l1, , k do
  • //Construire une table de hachage en
    mémoire pour Rl, utilisant h2
  • foreach tuple r de Rl do
  • lire r et linsérer dans la table de
    hachage de Rl utilisant h2(ri)
  • // Scanner les tuples de Sl et vérifier les
    tuples correspondants à r dans Rl
  • foreach tuple s de Sl do
  • lire s et vérifier la table de hachage de
    Rl en utilisant h2(sj)
  • pour tout tuple correspondant r dans Rl, sortir
    ltr,sgt
  • réinitialiser la table de hachage pour préparer
    la prochaine partition

18
Résumé
  • Le triage externe est important un SGBD peut
    dédier une partie de la réserve des pages tampon
    juste pour cette tâche!
  • Le merge sort externe minimalise les coûts des
    entrées et sorties vers le disque
  • Passage 0 Produit des runs triés de taille B (
    de page tampon). Les passages suivants sont des
    runs de fusion.
  • Le de runs fusionnés à la fois dépend de B et
    de la taille du bloc.
  • Bloc de large taille gt petit de runs à
    fusionner.
  • Les index à arbre B groupé sont bons pour le
    triage externe les index nongroupés sont
    généralement très mauvais.
  • Les algorithmes de join sont cruciaux en
    pratique. Le hash join est largement supporté par
    les SGBDs.
Write a Comment
User Comments (0)
About PowerShow.com