teorie zpracování dat
Post on 03-Jan-2016
23 Views
Preview:
DESCRIPTION
TRANSCRIPT
1
Teorie zpracování dat
FYZICKÁ ORGANIZACE DAT
2
Architektura databázového systému
3
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
4
Fyzická organizace dat Základní příkazy definice dat
vytvoření struktury nové tabulky CREATE TABLE
modifikace struktury tabulky ALTER TABLE
zrušení tabulky vč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
5
Fyzická organizace dat Vnější pamětiDisk - 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
6
Fyzická organizace dat Vnější paměti
sektor
stopa
7
Fyzická organizace dat Vnější pamětiVztah velikosti bloků a záznamů
bloky
záznamy
8
Fyzická organizace dat Softwarová podpora práce s databázíVyhledat záznam (= entitu v tabulce) na disku znamená tři etapy
zpracování:1. uživatel logická podmínka (pomocí příkazů SŘBD, dotazovacím
jazykem)2. logická podmínka logická adresa záznamu (pořadové číslo nebo
adresa záznamu v rámci souboru) ... řeší SŘBD3. 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.
9
Sekvenční souboryPřirozená nejjednodušší organizace záznamů v souboru
adr del osob jméno . . .
1 3456 Dudek Jindřich
2 1243 Kovář František
3 * 3333 Novák Karel, ing.
4 5734 Horák Ivo
5 2578 Sedlák Jiří
6 9999 Forman Zdeněk
7 3579 Anděl Zbyněk
... . . . . . .
n 7766 Nováčková Iva
n+1 6743 Hájek Petr
10
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.
11
Setříděné sekvenční soubory
Sekvenční soubor je setříděný podle vyhledávacího klíče
OperaceSELECT - 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
12
Setříděné sekvenční soubory
adr del osob jméno . . .
1 1243 Kovář František
2 2578 Sedlák Jiří
3 * 3333 Novák Karel, ing.
4 3456 Dudek Jindřich
5 3579 Anděl Zbyněk
6 … …
7 5734 Horák Ivo
... 7766 Nováčková Iva
n 9999 Forman Zdeněk
n+1 6743 Hájek Petr
13
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.
14
Zřetězené organizace
adr ukaz osob jméno . . .
1 7 3456 Dudek Jindřich
2 5 1243 Kovář František
3 1 3333 Novák Karel, ing.
4 10 11 5734 Horák Ivo
5 3 2578 Sedlák Jiří
6 9999 Forman Zdeněk
7 4 3579 Anděl Zbyněk
... . . . . . .
10 6 7766 Nováčková Iva
11 10 6743 Hájek Petr
15
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.
osob adr osob jméno ...
3456 1
1243 2
3333 ...
5734 1243 1243 Kovář František
2578 ...
9999 2578 2578 Sedlák Jiří
3579 ...
. . . ...
7766 9999 9999 Forman Zdeněk
16
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ý.
osob adr=hash(klíč) adr osob jméno ...3456 1
1243 ...
3333
5734 43 1243 Kovář František
2578 ...
9999 78 2578 Sedlák Jiří
3579 ...
99 9999 Forman Zdeněk
100
17
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.
18
Soubory s přímým adresováním OperaceSELECT - podle klíče nejrychlejší, 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
19
Indexové a indexované souborySekvenč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í)
20
Indexové a indexované souboryPrimární index datový indexovaný soubor indexový soubor
ukaz adresa klíč atr1 ... adresa klíč3 1 4567 2 1234
7 2 1234 7 2222
6 3 5678 5 2345
1 4 4444 4 4444
4 5 2345 1 4567
- 6 7890 3 5678
5 7 2222 6 7890
21
Indexové a indexované souborySekundární index – invertovaný soubor
plat adresa nebo plat adresa
3000 1 3000 1,2,6
3000 2 4000 3
3000 6 5000 4,5,8
4000 3 ...
...
22
Indexové a indexované soubory
OperaceINSERT - vložení záznamu do datového souboru (nakonec) + záznam do
indexu + setřídění indexového souboru
SELECT - dle klíče vyhledá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
23
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.
24
Hierarchické indexováníData ind0 ind1 ind2
klíč atr1 ... adr klíč adr klíč adr klíč
888 2 023 2 125 2 345
023 13 125 4 345 4 802
987 7 234 6 567
799 12 345 9 802
802 9 456 11 933
678 10 567
234 6 678
996 4 799
456 5 802
567 1 888
933 11 933
345 3 987
125 8 996
25
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
26
Data uka klíč uka klíč uka klíč
klíč atr1 ... 2 023
888 13 125
023 7 234 023
987 ... 345
799 ... 023
802 678
678 12 345
234 9 456
996 10 567 678
456 ... 996
567
933 6 678
345 4 799
125 5 802
27
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.
28
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.
29
Indexování pomocí binární matice
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
proc=30 plat=4000 1 1
30
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ě
31
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.
32
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í
atr1 atr2 atr3 počet ...
1
5
2
4
atr1 atr2 atr3 a:multi ... ... ...
realizace pomocí pevné délky
33
Soubory s proměnnou délkou záznamu
pseudoproměnná délka záznamu realita
atr1 atr2 atr3 počet ... hod1 nil
1 hod2 ukaz
5 hod3
2
4
atr1 atr2 atr3 a:multi ... ... ...
realizace pomocí odkazů
34
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)
35
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
top related