DBI007 Organizace a zpracování dat I Složená úložiště, záznamy, soubory RNDr. Michal Žemlička, Ph.D.
Důležitá organizační připomenutí Zkoušku lze skládat, i když ještě nejsou splněny všechny podmínky pro zápočet. Zkouška je zapsána až ve chvíli, kdy je splněn i zápočet. Povinnosti je třeba mít splněné do léta v září nebudu.
Hierarchie pamětí počítače V počítačích najdeme mnoho různých pamětí: + Registry Vyrovnávací pamět procesoru pamět ova cache + Operační pamět Vyrovnávací pamět pro disky disková cache + Sekundání pamět (disky)
Hardware Magnetické pásky Optické disky Jukeboxy Magnetické disky Flash paměti RAID-y
Magnetická páska umožňuje sekvenční čtení i rychlé převíjení existují speciální zařízení pro kontrolu kvality záznamu aplikace: zálohování proudová data vzácněji přistupovaná rozsáhlá data (spolu s optickými disky) Dlouhodobé uchování dat (desítky let)
Magnetický disk pohled z boku osa povrchy hlavy
Hardware problémy Pohyblivá média mohou podléhat různým deformacím, a tak je třeba průběžně dolad ovat nastavení čtecích/záznamových částí. Tato média mohou být i mechanicky poškozena; musí se to umět zdetekovat, případně (v případě menšího poškození) i opravit.
Bloky možná implementace značka začátek bloku číslo bloku na stopě/pásce značka začátku dat vlastní data značka konce dat pomocné kódy na detekeci chyb a případné opravy značka konce bloku Samotné bloky mají mezi sebou mezery jednak aby se stihl blok zpracovat, než se bude číst další, jednak aby se případným nepřesným umístěním bloku nepřepsal blok sousední
Disková pole RAID Redundant Array of Inexpensive Disks Slouží ke zvýšení kapacity, rychlosti, nebo bezpečnosti disků. Navenek se chová jako jediná disková jednotka s pozměněnými vlastnostmi. Existuje celá řada různých uspořádání. Každé z nich vhodné pro jinou aplikaci.
RAID 0 schema A1 A2 B1 B2 C1 C2 D1 D2
RAID 0 Striping Data rozložena na více disků Není to klasický RAID nedochází k redundanci Při výpadku jediného disku můžeme přijít o veškerá data Zvyšuje výkon jak pro čtení, tak pro zápis Podporováno i velmi levnými řadiči
RAID 1 Zrcadlení A A B B C C D D
RAID 1 Mirroring Disky instalovány ve dvojicích. Vždy se zapisuje na oba disky v páru. Čtení se ralizuje tam, kde to jde rychleji. Při výpadku jediného disku jej stačí vyměnit a nakopírovat na něj data z jeho partnera. Může přežít i výpadek až n disků z 2n za předpokladu, že z každé dvojice vypadne nejvýše jeden.
RAID 0+1, 1+0 Kombinace principů RAID 0 a 1 pro alespoň 4 disky 0+1: stripe + mirror... levné souborové systémy 1+0: mirror + stripe... databáze podpora již u relativně levných a jednoduchých řadičů (0,1,0+1) dostupné na mnoha základních deskách
RAID 5 Parita zapisována postupně na různé disky Použitelný od 3 disků výše Rozumný kompromis mezi bezpečností dat, kapacitou a výkonem vyžaduje složitěkší elektroniku (bývá na řadičích s procesorem a větší pamětí)
RAID 6 Odolný proti výpadku až dvou disků Zvýšená redundance Menší využití kapacity Potřebuje složitější řadič Vhodné pro mission-critical aplikace
Optické disky CD, DVD, blue-ray,... Informace uchovávána prostřednictvím rozdílné odrazivosti světla Lisované velké série disků se stejným obsahem velmi spolehlivé Modifikovatelné médium (R, RW, RAM) malé série + zálohování + přenos dat (pouze RW a RAM)
Jukeboxy Pásky i optické disky mohou mít menší kapacitu, než je třeba požadovaná data jsou pak uložena na více médíıch Jednoduchá média je možné automaticky vyměňovat (stačí jedna či několik málo mechanik + výměnný mechanismus + prostor na desítky či stovky médíı)
Jukeboxy (2) Poskytují obrovskou úložnou kapacitu s pomalým přístupem (sekundy) Většinou využity jako terciální pamět jsou tam ukládáan data, co se nepotřebují příliš často, ale přesto by měla být dostupná Zálohování dat ze sekundárních pamětí
Systémy výměnných disků Zařízení umožňující bezobslužný přístup k více CD nebo DVD diskům Někdy včetně podpory zápisu Několik různých forem: mechanika na více CD stojan s mnoha mechanikami po jednom CD mechanika s přídavným zařízením na výměnu CD (jukebox)
Parametry Jukeboxu Až stovky CD/DVD (tj. až 5,5 TB) Může obsahovat i více mechanik Doba výměny disků 2,5 10 s Někdy i možnost otáčet média (u oboustranných)
Páskové výměnné systémy Obdobně jako u CD/DVD existují i bezobslužné systémy s jednou či několika málo mechanikami a mnoha páskami Kapacita až deítky TB
Flash paměti Velmi rychlé Drahé Často jen omezený počet přepsání Dnes běžně dodávané kapacity v jednotkách GB ( kĺıčenky ) nebo desítkách GB ( SSD solid-state disky )
Připojování vnějších pamětí Disky připojovány většinou přímo (DAS disrect attached storage), nebo přes sít (NAS network atatched storage), případně se chovají jako bloková úložiště (SAN storage area network) SAN i NAS se dají pořídit jak velká, tak SOHO; pozor, někdy je výkon SOHO zařízení velmi nízký
Bezpečnost dat RAID bývá bezpečnější než samotné disky (s výjimkou RAID 0), ale i zde může dojít ke ztrátám dat = je třeba zálohovat, případně využívat další typy pamětí (diskové a páskové jukeboxy) Kritické systémy i jejich záložní kopie je důležité mít umístěné na dostatečně vzdálených a různých místech (požáry, povodně)
Vnější paměti Mnoho druhů lišících se rychlostí, dodávanou kapacitou i cenou Platí, že velké kapacity bývají dostupné pomalu, malé kapacity rychleji nebo jsou silně miniaturizovány Je možné vytvářet kaskády pamětí
Záznam Logický kolekce souvisejících položek hodnot atributů Fyzický logický záznam doplněný o oddělovače, definice délek, zarážky,... délka fyzického záznamu R
Typ záznamu dán jmény a doménami atributů A j : dom(a j ) A 1 : D 1,..., A n : D n
Fyzický a logický záznam Logický záznam množina atributů Fyzický záznam (délky R) fyzická reprezentace logického záznamu na médiu (může obsahovat pomocná data navíc) Fyzické záznamy se ukládají do fyzických stránek (bloků jejich velikost značíme B) Bloky jsou minimální entitou přenášenou mezi primární a sekundární pamětí
Blokovací faktor, blokování Blokovací faktor (b) poměr B/R Blokování (umíst ování záznamů do bloků); říkáme, že záznamy jsou: neblokované b = 1, B = R; blokované b > 1; přerostlé b < 1; Pro implementaci je důležité, zda se R mění, či nikoliv budeme předpokládat, že se nemění.
Soubor Soubor je identifikovaná kolekce logicky souvisejících záznamů. Jsou-li záznamy stejného typu a velikosti, říkáme, že soubor je homogenní. V opačném případe je nehomogenní.
Kĺıč Kĺıč souboru je množina atributů A i1..a ik, k n, taková, že k-tice atributů < a 1..a k > (kĺıče záznamu) jednoznačně identifikují záznamy. Vyhledávací kĺıč je atribut (či množina atributů), k jehož hodnotě vyhledáváme množinu záznamů obsahujících pro daný atribut právě uvedenou hodnotu
Typy vyhledávacích kĺıčů Hodnotové hodnoty z dom(a i ) Hašované algoritmická transformace hodnot Relativní udána pozice od začátku souboru
Operace nad soubory INSERT vložení záznamu do souboru DELETE rušení záznamu v souboru UPDATE změna některých položek záznamu v souboru Aktualizace souboru posloupnost operací INSERT, DELETE a UPDATE FETCH získání záznamu ze souboru do vnitřní paměti
Schéma organizace souboru popis logické pamět ové struktury, co níž může být původní soubor zobrazen, spolu s algoritmy provádějícími operace nad touto strukturou může popisovat více logických souborů svázaných dohromady primární soubor soubor obsahující uživatelská data; N počet záznamů v něm
Fyzická úroveň Abstrakce fyzického zařízení fyzické schéma souboru fyzický soubor Reálné fyzické zařízení implementační schéma souboru
Abstrakce přítupu k souborům schéma organizace souboru logické soubory fyzické schéma souboru fyzické soubory implementační schéma úroveň typu implementace fyzických souborů úroveň výskytu
Operace SOS operace nad soubory (insert, delete, update) BUILD vytvoření struktury REORGANIZATION uvedení SOS do nového výchozího stavu Stav souboru S (S ; extenze souboru S) podoba SOS mezi dvěma ukončenými aktualizacemi CLOSE aktualizuje některá data o souboru
Souborové systémy podpora práce se soubory na úrovni základního SW uchovávají metadata o souborech umožňují správu souborů včetně mapování souborů na médium
Dotazy nad soubory dotaz nad schématem souboru S jakákoliv totální funkce vyjádřitelná programem definovaná nad množinou U S. která každému stavu přiřadí odpověd zpravidla množinu záznamů hity prvky odpovědi v případě dokumentů
Vícerozměrné/ortogonální dotazy dotaz na úplnou shodu zadány hodnoty všech atributů dotaz na částečnou shodu zadány hodnoty jen některých atributů dotaz na úplnou intervalovou shodu zadán interval hodnot pro každý z atributů dotaz na částečnou intervalovou shodu zadány intervaly pro vybrané atributy
Další operace READ ENTIRE FILE čtení celého souboru sériově podle zadaného uspořádání sekvenčně podle fyzického upořádání záznamů v souboru
Vyváženost struktury omezení délky cesty ve struktuře při vyhledání záznamu (např. O(log M), kde M je počet logických stránek) rovnoměrná naplněnost stránek faktor naplnění stránky λ (0 α < λ < β 1) někdy se λ označuje průměrné naplnění stránek SOS splňující obě podmínky dynamické, ostatní statické
Hardware důsledky Datové struktury pro sekundární paměti musí splňovat tyto podmínky: Základní jednotkou komunikace je blok (sektor) či jeho celistvý násobek. Bývá výhodnější číst n bloků souvisle uložených než n bloků náhodně rozmístěných. Totéž platí i pro zapisování.
Úrovně abstrakce vrstvy Logická... jak na to pohĺıžíme při návrhu (logické soubory co k sobě patří). Fyzická... fyzické soubory jak je to očima souborového systému. Implementační... jak je to reálně rozmístěno na disku
Záznam Logický kolekce souvisejících položek hodnot atributů Fyzický logický záznam doplněný o oddělovače, definice délek, zarážky,... délka fyzického záznamu R
Typ záznamu dán jmény a doménami atributů A j : dom(a j ) A 1 : D 1,..., A n : D n
Soubor Soubor je identifikovaná kolekce logicky souvisejících záznamů. Pozor! Soubor je kolekce (záznamy se obecně mohou o- pakovat), ne množina!
Homogenní soubor Hodnoty primitivní typy Deklarace S(A 1 : D 1,..., A n : D n ) Obsahuje pouze záznamy jediného typu.
Nehomogenní soubor Opak homogenního souboru obsahuje bud záznamy různých typů, záznamy se složitější strukturou, nebo záznamy různých délek. Úmluva: nebude-li řečeno jinak, budeme uvažovat pouze homogenní soubory.
Kĺıč Kĺıč souboru je množina atributů A i1..a ik, k n, taková, že k-tice atributů < a 1..a k > (kĺıče záznamu) jednoznačně identifikují záznamy. Vyhledávací kĺıč je atribut (či množina atributů), k jehož hodnotě vyhledáváme množinu záznamů obsahujících pro daný atribut právě uvedenou hodnotu
Typy vyhledávacích kĺıčů Hodnotové hodnoty z dom(a i ) Hašované algoritmická transformace hodnot Relativní udána pozice od začátku souboru
Operace nad soubory INSERT vložení záznamu do souboru DELETE rušení záznamu v souboru UPDATE změna některých položek záznamu v souboru Aktualizace souboru posloupnost operací INSERT, DELETE a UPDATE FETCH získání záznamu ze souboru do vnitřní paměti
Fyzický a logický záznam Logický záznam množina atributů Fyzický záznam (délky R) fyzická reprezentace logického záznamu na médiu (může obsahovat pomocná data navíc) Fyzické záznamy se ukládají do fyzických stránek (bloků jejich velikost značíme B) Bloky jsou minimální entitou přenášenou mezi primární a sekundární pamětí
Blokovací faktor, blokování Blokovací faktor (b) poměr B/R Blokování (umíst ování záznamů do bloků); říkáme, že záznamy jsou: neblokované b = 1, B = R; blokované b > 1; přerostlé b < 1; Pro implementaci je důležité, zda se R mění, či nikoliv budeme předpokládat, že se nemění.
Schéma organizace souboru popis logické pamět ové struktury, co níž může být původní soubor zobrazen, spolu s algoritmy provádějícími operace nad touto strukturou může popisovat více logických souborů svázaných dohromady primární soubor soubor obsahující uživatelská data; N počet záznamů v něm
Fyzická úroveň Abstrakce fyzického zařízení fyzické schéma souboru fyzický soubor Reálné fyzické zařízení implementační schéma souboru
Abstrakce přítupu k souborům schéma organizace souboru logické soubory fyzické schéma souboru fyzické soubory implementační schéma úroveň typu implementace fyzických souborů úroveň výskytu
Operace SOS operace nad soubory (insert, delete, update) BUILD vytvoření struktury REORGANIZATION uvedení SOS do nového výchozího stavu Stav souboru S (S ; extenze souboru S) podoba SOS mezi dvěma ukončenými aktualizacemi CLOSE aktualizuje některá data o souboru
Souborové systémy podpora práce se soubory na úrovni základního SW uchovávají metadata o souborech umožňují správu souborů včetně mapování souborů na médium
Dotazy nad soubory dotaz nad schématem souboru S jakákoliv totální funkce vyjádřitelná programem definovaná nad množinou U S. která každému stavu přiřadí odpověd zpravidla množinu záznamů hity prvky odpovědi v případě dokumentů
Vícerozměrné/ortogonální dotazy dotaz na úplnou shodu zadány hodnoty všech atributů dotaz na částečnou shodu zadány hodnoty jen některých atributů dotaz na úplnou intervalovou shodu zadán interval hodnot pro každý z atributů dotaz na částečnou intervalovou shodu zadány intervaly pro vybrané atributy
Další operace READ ENTIRE FILE čtení celého souboru sériově podle zadaného uspořádání sekvenčně podle fyzického upořádání záznamů v souboru
Vyváženost struktury omezení délky cesty ve struktuře při vyhledání záznamu (např. O(log M), kde M je počet logických stránek) rovnoměrná naplněnost stránek faktor naplnění stránky λ (0 α < λ < β 1) někdy se λ označuje průměrné naplnění stránek SOS splňující obě podmínky dynamické, ostatní statické
Schéma organizace souboru (SOS) abstrakce zobecňující soubory s určitými vlastnostmi mapování souboru na logické úrovni do úrovně fyzické, případně i implementační
Schémata organizace souboru Sekvenční soubor Index-sekvenční soubor Indexovaný soubor Soubor s přímým přístupem
Hromada Nehomogenní soubor V případě záznamů s proměnnou strukturou se uvádějí i jména či kódy atributů Vyhledání záznamu O(N)
Sekvenční soubor Nejjednodušší SOS Homogenní soubor obsahuje pouze záznamy daného typu V dávkových systémech velmi častý
Nesetříděný sekvenční soubor Použitelný pro uložení sesbíraných dat Vhodný pro případy, kdy probíráme jeden záznam za druhým a něco s nimi děláme bez vazby na okoĺı (např. kontrolujeme jejich integritu) Operace READ, WRITE Vyhledání záznamu O(N), resp. O(N/ b )
Uspořádaný sekvenční soubor Pořadí dle (vyhledávacího) kĺıče Vhodný zejména pro práci se všemi záznamy s vazbou na jiná data aktualizace úložiště, slévání Pro práci s jednotlivými záznamy se moc nehodí
Uspořádaný sekvenční soubor (2) Primární soubor + soubor aktualizací (dodatečných změn) Soubor aktualizací nebývá setříděn (dopisuje se na konec) Reorganizace: setřídíme soubor aktualizací + zatřídíme s primárním souborem do nového primárného souboru
Uspořádaný sekvenční soubor Vyhledání záznamu Nesetříděném O(N), setříděném O(log 2 N) T F = log 2 (N/ b ) (s + r + btt) Přepsání záznamu (Update): T U = T F + 2r T U = T I Kĺıč se nemění kĺıč se mění
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 00000 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 p N/ b ; b = B/R. Připomeňme, že B je velikost bloku a R (průměrná) velikost záznamu. 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(185): 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á index 2. úrovně (master/hlavní index) 1.1 2.1 3.1 Jirásek 4.1 Jirásek 4.3 Jirásek 5.2 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 ovlivně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