Extern triedenie TwoPhase Multiway Merge Sort Preo triedi

  • Slides: 13
Download presentation
Externé triedenie – Two-Phase Multiway Merge. Sort

Externé triedenie – Two-Phase Multiway Merge. Sort

Prečo triediť ? • Je to klasický problém nielen pri SRBD ale v celej

Prečo triediť ? • Je to klasický problém nielen pri SRBD ale v celej informatike • Dáta sú takmer vždy požadované v usporiadanej podobe • Je to prvý krok pri indexovaní pomocou B+ stromov • Triedenie sa používa pri odstraňovaní duplicity v súbore záznamov

Ako triediť ? • Je dôležité správne zvoliť algoritmus pre triedenie, a to podľa

Ako triediť ? • Je dôležité správne zvoliť algoritmus pre triedenie, a to podľa povahy dát (čísla, reťazce. . . ), podľa ich veľkosti a spôsobu uloženia • Ak sa všetky triedené údaje vmestia do hlavnej pamäte (a sú tam už načítané, použijeme klasický spôsob triedenia (Quick-sort pre čísla, alebo Radix -sort pre reťazce) • Pri obtiažnom triedení používame odlišné algoritmy

Kedy je triedenie obtiažne ? • Ak je potrebné triediť veľké množstvo údajov, ktoré

Kedy je triedenie obtiažne ? • Ak je potrebné triediť veľké množstvo údajov, ktoré sa naraz nevojde do hlavnej pamäti, čiže je potrebné dáta čítať z disku a utriedené ich zapisovať späť na disk

Externé triedenie - External Sort • Ľubovoľný triediaci algoritmus, ktorý využíva externú pamäť (ako

Externé triedenie - External Sort • Ľubovoľný triediaci algoritmus, ktorý využíva externú pamäť (ako napr. magnetické pásky či disk) počas triedenia. • Vo všeobecnosti platí, že pre ten istý problém sú najlepšie algoritmy spracúvajúce veľké množstvo dát na disku – externé, rôzne od tých pracujúcich s menším množtvom v hlavnej pamäti – main memory algoritmy.

Two-Phase Multiway Merge-Sort • Tento algoritmus triedenia je schopný utriediť enormné množstvo dát na

Two-Phase Multiway Merge-Sort • Tento algoritmus triedenia je schopný utriediť enormné množstvo dát na disku použitím iba 2 čítaní a 2 zápisov pre každý údaj (záznam). – Fáza 1: Utrieď menšie kúsky dát a vytvor tak niekoľko utriedených zoznamov - sorted sublists. – Fáza 2: Spoj (merge) všetky zotriedené zoznamy do jedného utriedeného celku.

Fáza 1: Triedenie - Sort • Načítaj do hlavnej pamäti maximálne možné množstvo triedených

Fáza 1: Triedenie - Sort • Načítaj do hlavnej pamäti maximálne možné množstvo triedených údajov zoskupených v blokoch. • Zotrieď v pamäti údaje použitím niektorého algoritmu triedenia v pamäti (napr. Quick. Sort). • Zapíš zotriedené údaje z pamäti na disk (tým sa vytvoria tzv. sublist-y). • Opakuj postup pokiaľ nie sú utriedené a uložené všetky položky (každá položka nakoniec patrí do niektorého sublistu)

Fáza 1: Triedenie (pokrač. )

Fáza 1: Triedenie (pokrač. )

Fáza 2: Spájanie - Merge • Načítaj do vstupných buffrov v pamäti prvé bloky

Fáza 2: Spájanie - Merge • Načítaj do vstupných buffrov v pamäti prvé bloky zo všetkých sublistov (každý sublist má jeden vstupný buffer). • Nájdi najmenšie číslo spomedzi prvých čísel vo vstupných buffroch a presuň vybrané číslo do výstupného buffra. • Ak boli presunuté všetky čísla zo vstupného buffra do výstupného, potom načítaj ďalší blok sublistu, ktorému patrí "vyčerpaný" vstupný buffer. • Ak je výstupný buffer "plný", ulož jeho obsah na disk a vyprázdni buffer pre ďalšie použitie a Opakuj pokiaľ nie sú prečítane a presunuté všetky bloky všetkých sublistov.

Fáza 2: Spájanie (pokrač. )

Fáza 2: Spájanie (pokrač. )

Príklad Krok štart 1 2 Sub. List 1 1, 3, 4, 9 Sub. List

Príklad Krok štart 1 2 Sub. List 1 1, 3, 4, 9 Sub. List 2 2, 5, 7, 8 Výstup nič 1 1, 2 3 4 5 6 7 8 4, 9 9 9 nič 5, 7, 8 8 nič 1, 2, 3, 4, 5, 7 1, 2, 3, 4, 5, 7, 8, 9

Veľkosť triediteľných dát • M je veľkosť hlavnej pamäte • B je veľkosť bloku

Veľkosť triediteľných dát • M je veľkosť hlavnej pamäte • B je veľkosť bloku • R je veľkosť údaja Potom: • M / R údajov je možné naraz zotriediť v hlavnej pamäti • M / B buffrov sa "zmestí" do hlavnej pamäti (M / B - 1 je vstupných a 1 je výstupný buffer) • utriediť je teda možné M / R * (M / B - 1) záznamov ( = zhruba M^2/(B*R) zázn. )

Príklad • • Pri M = 50 MB B = 4 k. B R

Príklad • • Pri M = 50 MB B = 4 k. B R = 100 B Výsledok: je to 6. 71*10^9 záznamov zaberajúcich 671 GB