DBI007 Organizace a zpracování dat I Index-sekvenční a indexovaný soubor 4. přednáška RNDr. Michal Žemlička, Ph.D.
Index-sekvenční soubor Přístup k záznamům je možný jak sekvenčně, tak i přímo Části: primární soubor, index a oblast přetečení Vhodný zejména tenkrát, když potřebujeme jak přístup k jednotlivým záznamům dle primárního kĺıče (ještě lépe, když není třeba kĺıč měnit, jen data), tak i ke všem záznamům najednou
Index-sekvenční soubor Aplikace Účetní systém platebních karet individuální přístup při manipulaci s kartou/účtem; dávkový přístup pro generování sumářů, měsíčních vyúčtování, apod.
Index-sekvenční soubor Struktura 1. úroveň Ab Ak Bf Bp Bx Ck Dl Ea Eh Fu Gh Ha Kd primární soubor 2. úroveň Ab Oi Ab Bx Eh Kd My Oi... 3 oblast přetečení Jm index
Index-sekvenční soubor: Odkazy do oblasti přetečení Za každým záznamem zabere to více místa + kratší sekvence v oblasti přetečení Na konci každého bloku mohou se tvořit delší sekvence v oblasti přetečení + menší nároky na místo v bloku; je možné si v blocích nechat volno na později přidané prvky
Index-sekvenční soubor kapsy implementace index-sekvenčního souboru pomocí kapes kapsa (bucket) je množina bloků organizovaných jako spojový seznam indexují se kapsy
Index-sekvenční soubor kapsy (2) Babka Kolář 00 10 20 index 1. úrovně číslo bloku odkaz na další bloky kapsy 00 10 20 00000 11111 Babka Codr Couf Colt Cuc 11110 Kolář Kotrč Macák Maloň bitová mapa bloky (kapsy) se záznamy 0 0 0
Index-sekvenční soubor kapsy (2) Aktualizace: I(Daněk), I(Alfons), D(Kotrč) Babka Kolář 00 10 20 00 10 20 30 10000 Alfons 11111 Babka Codr Couf Colt Cuc 10110 Kolář Macák Maloň 10000 Daněk 0 30 0 0
Index-sekvenční soubor úrovně Maximální počet úrovní x = log bi N/ b ps ; b = B/R. Připomeňme, že B je velikost bloku a R (průměrná) velikost záznamu at již v primárním souboru (ps) nebo indexu (i). Počet přístupů na disk odpovídá počtu úrovní. Minimalizace počtu přístupů na disk: prakticky pouze maximalizací B; omezeno kapacitou stopy.
Index-sekvenční soubor ISAM Přímá podpora index-sekvenčních souborů v runtime COBOLu Úroveň Umístění 1 stopa index stop na 0. stopě každého válce určuje pozice v primárním souboru 2 válec index válců (na začátku oblasti souboru) určuje lokality s indexy stop 3 svazek master index po OPEN v RAM; určuje lokality s indexy válců T F = 2(s + r + btt) + r + btt = 2s + 3r + 3btt
Index-sekvenční soubor ISAM (2) Oblast přetečení na každém válci + společná pro celý soubor Statický soubor = nutná reorganizace po naplnění oblasti přetečení nebo periodicky
ISAM struktura indexu Cylindry i stopy číslovány od 0. Index stop na 0. stopě cylindru 1 150 2 200 3 400... stopa největší kĺıč na stopě Index cylindrů umístěn kdekoliv jinde 13 1650 14 1750 15 2000... cylindr největší kĺıč na cylindru
ISAM struktura indexu (2) Záznamy v blocích (stopách) setříděny Hlavní (master) index pro velké soubory na více discích ukazuje na stopy indexu cylindrů Oblast přetečení: vytlačen největší kĺıč na stopě aktualizace indexu
index stop ISAM index s oblastí přetečení 1 120 1 120 2 200 2 200 3 250 N Ov N Ov N primární soubor 130 145 150... 180 190 200 Insert(185): 1 120 1 120 2 190 10 1 stopa pro přetečení 200 3 250 130 145 150... 180 185 190
ISAM index s oblastí přetečení (2) Insert(186): 1 120 1 120 2 186 10 2 nemění se 200 3 250 130 145 150... 180 185 186 Insert(194): oblast přetečení # 200 10 3 190 10 1 194... řetězec v oblasti přetečení
Index-sekvenční soubor výhody Rychlý přítup dle primárního kĺıče. Zachovává většinu dobrých vlastností setříděného sekvenčního souboru.
Index-sekvenční soubor nevýhody Rychlé vyhledávání jen pro primární kĺıč Problémy s dynamikou primárního souboru Oblast přetečení vede ke zpomalení přístupu k datům Bloky inicializovány jako ne zcela zaplněné větší nároky na prostor Případná potřeba reorganizací
Index-sekvenční soubor návrh Uspořádání položek v seznamu Definice primárního kĺıče Analýza doplňování záznamů (Počáteční naplnění stránek max. 60 %) Prostor pro primární soubor, index a oblast přetečení Počet úrovní indexu Blokovací faktor primární oblasti, indexu
Index-sekvenční soubor závěr Blokování zvyšuje účinnost Rychlý přímý přístup košatý index Žádá se pouze sekvenční přístup použít sekvenční soubor nejsou třeba indexy Žádá se pouze přímý přístup použít soubor s přímým přístupem není třeba uspořádanost
Indexovaný soubor Umožňuje vyhledávat záznamy podle různých kĺıčů Odpovídá tabulce v DB Primární soubor a indexy Indexy mohou být mnoha různých typů (a to i v rámci jediného indexovaného souboru)
Indexovaný soubor obrázek 4.1 Jirásek Jirásek Němcová Světlá 1.1 2.1 3.1 index 2. úrovně (master/hlavní index) 1.1 2.1 3.1 Jirásek 4.1 Jirásek 4.3 Jirásek 5.1 Němcová 4.2 Němcová 5.2 Němcová 5.3 Němcová 6.3 Němcová 7.2 Světlá 6.2 index 1. úrovně 5.1 6.1 Němcová Jirásek Světlá Jirásek Němcová Němcová...... Světlá Němcová... Vyhledávací kĺıč: Příjmení primární soubor
Indexovaný soubor úrovně indexu Počet úrovní indexu počítáme podobně jako u index-sekvenčního souboru, ale indexujeme jednotlivé záznamy a ne bloky. x = log b N, b = B/R ; B... velikost fyzické stránky R... (průměrná) velikost fyzického indexového záznamu
Indexovaný soubor částečná shoda Řešení dotazů na částečnou shodu Vytváření průniků seznamů adres (ukazatelů) primárních záznamů Netriviální při velkém objemu, tj. velká N malá aktuální doména A Kombinovaný index pro více atributů současně (A,B,C)
Indexovaný soubor implementace Nepřímé adresování: primární kĺıč, sekundární kĺıč sekundární kĺıč se indexuje na primární kĺıč Možná reorganizace, restrukturalizace souboru bez o- vlivnění indexu Vyšší režie dotazu
Bitová mapa Vhodná pro malou doménu hodnot Boolské dotazy se řeší logickými operacemi Bitové vektory lze vytvářet pro více atributů Obecnější Boolské dotazy A Pořadí záznamu v S α 1 0 0 1 0 0 0 1 0 0 1 1 0 β 0 1 0 0 0 1 0 0 1 1 0 0 0
Bitové mapy Při zachování velikosti domény jejich velikost roste s počtem záznamů pouze lineárně Je možné sdružovat procesy procházející bitovou mapu nový proces nejprve se stávajícím dočte to, co ten stávající ještě nemá zpracované, a pak se vrátí k tomu zbytku (piggybacking)
Seznamy adres Odstranění duplicity kĺıčů Chemik 90 90 3 1.1 1.4 2.3 Mechanik 91 91 1 1.2 Primární soubor Referent 92 92 3 1.3 2.1 2.2
Indexy indexovaného souboru statické seznamy adres bitové mapy B-stromy a jejich varianty kombinované indexy vícerozměrné indexy