350 likes | 502 Views
Teorie zpracování dat. FYZICKÁ ORGANIZACE DAT. Architektura datab á zov é ho syst é mu. F yzick á organizace dat. V databázové technologii o fyzickou strukturu dat v databázi se stará SŘBD (na základě příkazů JDD) o fyzickou manipulaci s daty v databázi se stará SŘBD
E N D
Teorie zpracování dat FYZICKÁ ORGANIZACE DAT
Fyzická organizace dat V databázové technologii • o fyzickou strukturu dat v databázi se stará SŘBD (na základě příkazů JDD) • o fyzickou manipulaci s daty v databázi se stará SŘBD (na základě příkazů JMD) Požadavek co nejrychlejší provádění manipulací s daty Řešení vhodné fyzické uložení záznamů v databázi
Fyzická organizace dat Základní příkazy definice dat ·vytvoření struktury nové tabulkyCREATE TABLE ·modifikace struktury tabulkyALTER TABLE ·zrušení tabulkyvčetně struktury DROP TABLE 4 základní (logické) databázové operace · vyhledávání záznamu SELECT, FIND · vložení nového záznamu INSERT · modifikace záznamu UPDATE, MODIFY · rušení záznamu DELETE
Fyzická organizace dat Vnější paměti Disk-jedna nebo svazek kruhových magnetických desek. Stopy - soustředné kružnice na disku, do nichž se zapisují data. Deska disku je rozdělena na kruhové výseče. Sektor - část stopy v jedné výseči, nejmenší adresovatelná jednotka na disku. Válec, cylindr - všechny stopy nad sebou, pokud disk tvoří několik desek. Disková adresa (na fyzické úrovni) - označení diskové jednotky, číslo cylindru, stopy a sektoru. Stránka (blok) - základní jednotka informace pro přenos dat mezi pamětí vnitřní a vnější, obvykle několik (1, 2, 4, …) sektorů. Rychlost -přenosu mezi diskem a pamětí - operací ve vnitřní paměti
Fyzická organizace dat Vnější paměti sektor stopa
Fyzická organizace dat Vnější paměti Vztah velikosti bloků a záznamů bloky záznamy
Fyzická organizace dat Softwarová podpora práce s databází Vyhledat záznam (= entitu v tabulce) na disku znamená tři etapy zpracování: • uživatel logická podmínka (pomocí příkazů SŘBD, dotazovacím jazykem) • logická podmínka logická adresa záznamu (pořadové číslo nebo adresa záznamu v rámci souboru) ... řeší SŘBD • logická adresa záznamu číslo stránky číslo válce, stopy a sektoru (fyzická adresa záznamu) ... řeší OS S rychlostí přístupu k datovým souborům souvisí také využívánívyrovnávací paměti, její velikosti a ovládání. Ovládání se řeší na několika úrovních: v rámci OS, nastavením velikosti CACHE paměti, případně si vyrovnávací paměť řídí SŘBD sám.
Sekvenční soubory Přirozená nejjednodušší organizace záznamů v souboru
Sekvenční soubory Nový záznam se uloží na konec souboru, k tomu stačí jeden přenos záznamu z paměti na disk. Vyhledání záznamu sekvenční - každý záznam postupně načíst a otestovat, zda vyhovuje podmínce. Pokud ano, je nalezen, pokud ne, načítá se další záznam v pořadí. Vyhledávání sekvenční potřebuje průměrně n/2 porovnání nebo n/(2*B) přístupů na disk (B je blokovací faktor = počet záznamů v bloku) Modifikace záznamu znamená tyto operace: nalézt záznam, načíst, opravit a na stejnou adresu znovu zapsat. Zrušení záznamu u sekvenčních souborů se obvykle provádí ne vymazáním záznamu, ale pouze označením jeho neplatnosti. Mají-li věty klíče, musí se prohledat celý soubor a zkontrolovat jedinečnost klíče vkládané nebo modifikované věty.
Setříděné sekvenční soubory Sekvenční soubor je setříděný podle vyhledávacího klíče Operace SELECT - podle klíče mnohem rychleji (např. metodou půlení intervalu nebo některou její modifikací; počet přenosů pro binární hledání je průměrně log2 n. INSERT- na konec souboru, znovu soubor přetřídit UPDATE- vyhledávacího klíče: vyhledat, zapsat, přetřídit - jiné hodnoty: vyhledání, zápis záznamu zpět DELETE- vyhledání, označení neplatnosti
Zřetězené organizace Sekvenční soubor, záznamy navíc opatřeny ukazatelem pro zápis zřetězení dle třídicího klíče. SELECT – seznam se prohledává postupně pomocí ukazatelů a testuje, zda záznam vyhovuje vyhledávací podmínce. Častější přechody mezi bloky souboru a proto více přenosů mezi diskem a pamětí. Proto vhodné jen u krátkých seznamů. INSERT – záznam se fyzicky zapíše kamkoliv, pak se v seznamu vyhledají sousední záznamy dle udržovaného pořadí a přesměrují se ukazatele předchůdce a následníka DELETE – vyhledá se umístění záznamu v seznamu a přesměrují se ukazatele předchůdce a následníka UPDATE - jen vyhledání záznamu a po modifikaci jeho zápis zpět. V případě modifikace položek, které mají vliv na uspořádání seznamu, se provede modifikace jako DELETE a INSERT.
Soubory s přímým adresováním Princip - jednoznačný klíč záznamu číslo adresa záznamu. Pak jediným přístupem na disk se načte nebo zapíše záznam.
Soubory s přímým adresováním Plýtvání kapacitou paměti - proto speciální funkce hašovací (hash function), která transformuje původní interval adres do číselného intervalu požadované velikosti. Velikost výsledného intervalu je zvolena tak, aby zhruba odpovídala skutečnému počtu záznamů. Nejednoznačnost výsledné adresy– adresa skupiny záznamů, tam záznamy zřetězeně,jsou to krátké seznamy, je přístup k nim rychlý.
Soubory s přímým adresováním Nejednoznačnost výsledku hašování se řeší např. zřetězením záznamů se stejnou adresou.
Soubory s přímým adresováním Operace SELECT - podle klíčenejrychlejší, odtud rychlé i ostatní operace: z klíče se vypočte adresa skupiny záznamů, odtud se prohledá zřetězený seznam až po hledaný záznam. - podle neklíčové hodnoty naopak delší, sekvenční procházení i prázdných míst a zřetězené seznamy. INSERT - výpočet adresy skupiny záznamů, tam se prohledají záznamy (pro kontrolu jednoznačnosti klíče), nový záznam se uloží na první volné místo ve skupině a přesměrují se ukazatele. DELETE- vyhledání, nastavení neplatnosti záznamu, přesměrování ukazat. UPDATE- vyhledání, zápis zpět; při modifikaci klíče se provede nejprve zrušení a pak nový záznam. Setřídění záznamů znamená komplikaci. Varianta i pro vyhledání záznamů nejen podle klíče, ale podle více položek. Růst počtu záznamů – reorganizace hašovacího mechanizmu
Indexové a indexované soubory Sekvenční soubor (indexovaný) + pomocné tabulky (indexové) • index obsahuje hodnotu (vyhledávacího) klíče (indexu) a adresu (recno) záznamu • indexový soubor je setříděn dle klíče -> binární vyhledání, přečtení adresy v datovém souboru • jediným přístupem do dat se načte hledaný datový záznam • často je indexový soubor dost malý - celý v operační paměti • jiné zdůvodnění indexování - ukazatele nejsou součástí záznamů zřetězené organizace), ale jsou uloženy zvlášť v indexovém souboru • indexem nemusí být primární klíč (primární indexování), ale kterákoliv položka souboru nebo seznam několika položek (sekundární indexování)
Indexové a indexované soubory Primární index datový indexovaný soubor indexový soubor
Indexové a indexované soubory Sekundární index – invertovaný soubor
Indexové a indexované soubory Operace INSERT - vložení záznamu do datového souboru (nakonec) + záznam do indexu + setřídění indexového souboru SELECT- dle klíčevyhledání klíče binárně v indexu,přečtení adresy v datovém souboru, 1 přenos záznamu, dle neindexovaného atributu sekvenčně UPDATE - vyhledání záznamu + modifikace + uložení zpět, při změně kterékoliv indexované hodnoty reindexace příslušného indexového souboru DELETE - vyhledání záznamu + označení neplatnosti v datovém i indexovém souboru
Hierarchické indexování • základem sekvenční soubor + indexový (úrovně 0) • k indexovému souboru vytvořen opět indexový soubor (1) • opakováním hierarchie indexových souborů, • hledá se od nejvyšší úrovně, binárně jen v části indexu, proto je průměrný počet procházených záznamů nižší než u index0.
B – stromy (balanced) Pro uspořádání úrovní indexů se používají tzv. B-stromy: • data sekvenční, indexování hierarchické • indexy všech úrovní „rozsekány“ do bloků stejné délky – tvoří strom • v indexových blocích volná místa pro doplňování záznamů • délky všech cest (~počtů přenosů) od kořene stromu do libovolného listu jsou stejné, rovny hloubce stromu
B – stromy SELECT - najde se cesta od kořene k listu s hledaným záznamem (pokud existuje),v každém uzlu se najde následující větev porovnáním hledané hodnoty s klíči v uzlu. Klíče v uzlu mohou udávat minimální/maximální hodnotu klíče, která je příslušnou větví dosažitelná. INSERT - najde se příslušný blok, mohou nastat dvě možnosti: buď v nalezeném bloku je prázdné místo, takže se může přidat vkládaný záznam, nebo je nalezený blok plný a musí se vytvořit nový blok; z původního plného bloku se vytvoří dva bloky, do vyšší úrovně se nový blok zaznamená, opět dva případy –tak až do kořene stromu a případně se musí kořen rozdvojit a přidat nový kořen UPDATE - vyhledávání + modifikace + uložení zpět, při modifikaci klíče se provede DELETE a INSERT. DELETE - opačně než vkládání: při zrušení posledního záznamu bloku se zruší i odkaz na něj, totéž se promítne do vyšších úrovní, případně se v krajním případě může hierarchie indexů o jednu úroveň snížit.
Indexování pomocí binární matice Pro sekundární indexování, jiný způsob implementace • poloha záznamu se zaznamenává polohou jedničkového bitu v posloupnosti bitů, každý bit odpovídá jednomu záznamu, • pro každou hodnotu sekundárního atributu je zaznamenána nová posloupnost, • metoda vhodná pro atributy nabývající jen několika různých hodnot, pro neměnící se sekundární atributy, pro přidávané záznamy na konec souboru, • snadná realizace kombinovaných dotazů pomocí logických operátorů negace, konjunkce a disjunkce.
atrib hodn pořadí záznamů 1 2 3 4 5 6 7 8 9 10 11 12 ... proc 10 0 1 0 1 0 1 0 0 0 0 0 1 20 1 0 0 0 0 0 1 1 0 0 0 0 30 0 0 1 0 1 0 0 0 1 1 1 0 plat 2000 0 0 0 0 1 0 0 0 0 0 0 0 3000 1 0 0 0 0 1 0 0 1 1 0 0 4000 0 1 1 1 0 0 0 0 0 0 1 1 5000 0 0 0 0 1 0 1 1 0 0 0 0 Indexování pomocí binární matice proc=30 plat=4000 1 1
Soubory s proměnnou délkou záznamu Požadavky z reality • opakující se položky známý počet krát • opakující se položky neznámý počet krát • skupinové položky • dlouhé texty proměnné délky • záznamy obrázků, zvuků a jiné datové typy Nové problémy, řešení • úvahy o proměnné délce záznamu jen v logickém modelu, implementace pomocí pevné délky • nové SŘBD připouštějí datové typy proměnné délky a implementují je různě
Soubory s proměnnou délkou záznamu 1. pseudoproměnná délka záznamu • pole se známým počtem opakování: rozložení na jednotlivé položky • pole s neznámým počtem opakování: horní odhad počtu výskytů prvků pole a převedení na předcházející případ • místo opakující se položky se uvede odkaz na seznam jejích prvků, ten může být součástí jiného souboru • pro záznamy s alternativními skupinami položek buď se proměnná část překrývá a záznam zabírá velikost nejdelší z proměnných částí, v záznamu se musí rozlišovat typ proměnné části, implementace složitější • nebo se všechny rozdílné atributy zaznamenají za sebou a pro každý typ se vyplňují jen odpovídající atributy; implementace jednodušší, záznam obsahuje vždy řadu prázdných položek.
Soubory s proměnnou délkou záznamu pseudoproměnná délka záznamu realita – multipoložka s neznámým počtem opakování realizace pomocí pevné délky
Soubory s proměnnou délkou záznamu pseudoproměnná délka záznamu realita realizace pomocí odkazů
Soubory s proměnnou délkou záznamu 2. proměnná délka v sekvenčním souboru nutno rozlišit jednotlivé záznamy: • systém oddělovačů: záznamy jsou odděleny oddělovačem, uvnitř záznamu se atributy oddělují jiným typem oddělovače, opakující se položky dalším typem ap. • zaznamenání délky aktuálního záznamu na začátku záznamu (pro jednosměrný průchod souborem), či na začátku i konci záznamu (pro obousměrný průchod souborem)
Soubory s proměnnou délkou záznamu 3. proměnná délka záznamu s jinou organizací • zřetězené organizace, přímé adresování, indexování i další organizace je možno implementovat podobně, jako při pevné délce záznamu • rozdíl v tom, že místo recno se zaznamenává skutečná relativní adresa záznamu v souboru