Obsah

AP12 Organizace souborů

Zadání

(Schémata organizace souborů. Statické organizace souborů, sekvenční soubory, indexové a přímé organizace souborů, statické hašování. Implementace souborů. Dynamické organizace souborů, dynamické hašování, B-stromy a jejich varianty. Základy teorie informace, komprese dat)

Schémata organizace souborů

Cíl = umožnit optimálně řešit operace nad záznamy souboru nezávisle na konkrétním fyzickém zařízení vnější paměti
Schéma organizace souborů = způsob, jak jsou zakódovaná data počítačem uložená do paměti. Schéma organizace souboru je popis logické paměťové struktury, do níž lze zobrazit logický soubor, spolu s algoritmy operací nad touto strukturou. Ta je obvykle tvořena z logických stránek (bloků pevné délky) a může popisovat více provázaných log. souborů, z nichž primární soubor je ten, který obsahuje uživatelská data. Operace definované nad schématem org. souboru jsou kromě operací nad soubory ještě build, reorganization, open a close.

Proti němu stojí fyzické schéma souboru - struktura nad fyzickými soubory, nejblíže hardwaru je implementační schéma souboru.

Zajištění Vyváženosti struktury znamená zajištění omezení cesty při vyhledávání nějakým výrazem (zaručení asymptotické složitosti), navíc zaručení rovnoměrnosti zaplnění struktury - faktor naplnění stránek. Schémata, která splňují obě podmínky, se nazývají dynamická, ostatní jsou označována jako statická.
Logické schéma souboru – Obsahuje primární soubor a pomocné soubory (indexy, rejstříky…). Výběrem vhodného logického schématu souboru se snažíme dosáhnout minimalizace počtu přístupů do sekundární paměti (na disky) – ideální stav je 1 požadavek = 1 přístup.
Fyzické schéma souboru – Zobrazuje logické soubory do paměťových jednotek konkrétního použitého typu paměti.
Implementační schéma – Popisuje rozmístění dat na konkrétním uchovávacím médiu. Standardně řeší OS nezávisle na aplikacích

Statické organizace souborů

Do statické organizace souborů patří:

Ukázka uspořádaného sekvenčního souboru – keysort:
 Uspořádaný sekvenční soubor -- keysort Ukázka uspořádaného sekvenčního souboru – řetězené struktury:
 Uspořádaný sekvenční soubor -- řetězené struktury

Indexování v souborech

Řádné indexy

Obvykle pokud se mluví o indexech, jsou myšleny řádné.
Dělení 1

  1. primární index – podle jeho klíče je uspořádán primární soubor se záznamy; může být hustý nebo řídký
  2. sekundární index – určený pro dotazy založené na jiném vyhledávacím klíči než na primárním; musí být hustý

Dělení 2 hustý – indexový záznam pro každou hodnotu vyhledávacího klíče. Typicky bývá uspořádán podle hodnoty klíče
řídký – indexový záznam pouze pro některé hodnoty vyhledávacího klíče; použitelné pouze v případě, kdy je soubor podle tohoto klíče uspořádán

Příklad

Uložený soubor se záznamy:
ID (2B) Jméno (20B) Rok narození (2B) Místo narození (16B) Telefon (4B) Bydliště (16B)
1 Bílá Alena 1972 Ostrava xxxxxxxx Brno
2 Novák Jan 1952 Praha 123456789 Kladno
3 Novotný Tomáš 1987 Brno 565656565 Vyškov
4 Procházka Petr 1964 Brno 100001011 Řestoky

Hustý index pro atribut jméno:

Jméno ID
Bílá Alena1
Novák Jan2
Novotný Tomáš3
Procházka Petr4

Pokud chceme vyhledat místo narození Tomáše Novotného, pak je při sekvenčním prohledávání nutné načíst 2 · (2 B + 20 B + 2 B + 16 B + 4 B + 16 B) + 2 B + 20 B + 2 B + 16 B = 160 B. Při použití hustého indexu stačí načíst 3 · (20 B + 2 B) + 2 B + 20 B + 2 B + 16 B = 106 B. Pokud je index uložen v operační paměti, pak v obou případech stačí pouze jeden přístup na disk, avšak v prvním případě bude třeba číst výrazně více dat.

Řídký index pro atribut jméno:

Jméno ID
Bílá Alena1
Novotný Tomáš3

Pokud je požadavek na vyhledání například Jana Nováka, nalezne se poslední záznam v uspořádání před ním (Alena Bílá) a dál se postupuje sekvenčně.

Sekundární index pro atribut místo narození:

Místo narození ID
Brno3,4
Ostrava1
Praha2

Implementace souborů

Definice

soubor 1 = pojmenovaná kolekce souvisejících záznamů
soubor 2 = logická paměťová jednotka zobrazovaná operačním systémem do fyzického paměťového zařízení
záznam = kolekce atributů charakterizujících jistý objekt
adresář = kolekce dat obsahující informace o souborech uchovávaných na disku (jméno, typ, adresa, délka, maximální délka, čas posledního přístupu…)

Možná formátování

  1. volné formátování – sekvenčně řazené záznamy pevné i proměnlivé délky
  2. komplexní formátování – soubor obsahuje vhodné řídící struktury nebo se k záznamům přistupuje přes přístupové funkce (B-stromy, haše…)

Uložení souborů na disku

  1. souvislá alokace datových bloků
    • soubor je na disku uložen v souvislé posloupnosti datových bloků
  2. alokace datových bloků pomocí zřetězeného seznamu
    • každý datový blok obsahuje data a ukazatel na následující datový blok
  3. alokace datových bloků pomocí tabulky
    • alokace datových bloků je založená na zřetězeném seznamu, ale ukazatele na následující datový blok jsou uloženy v tabulce FAT
  4. i-nodes
    • i-node je struktura, která obsahuje jak atributy souboru, tak adresy datových bloků, ve kterých je uložen obsah souboru

Dynamické organizace souborů

Motivace: změny dat neznamenají velké (globální) reorganizace, které jsou drahé, ale spíše reorganizace lokální.

  1. B-strom
  2. dynamický haš soubor
    • založený na rozšiřitelném hašování nebo lineárním hašování

Hašování

Definice

hašovací funkce (obecně) = převedení libovolně dlouhého vstupu na výstup pevné délky
hašovací funkce (ve smyslu organizace souborů) = funkce řešící přístup k záznamům souboru s konstantní složitostí
kolize = situace, kdy je pro více záznamů spočítána stejná adresa
  • obvykle se řeší pomocí bucketů – každé paměťové místo má předepsanou kapacitu záznamů, ve které se následně vyhledává lineárně

Perfektní hašovací funkce – hašovací funkce h, která je prostá.
Požadované vlastnosti hašovací funkce:

Statické hašování

Dynamické hašování

  • hašovací funkce rozmisťuje záznamy do kapes (kapsa = záznamy s jistou podmnožinou klíčů, vymezuje je hašovací funkce)
  • jako index v adresáři kapes se používá dynamicky určovaný prefix výsledku hašovací funkce h(k)
  • délku indexu vymezuje globální hloubka adresy kapsy
  • štěpení
    • globální hloubka > lokální hloubka – na blok ukazuje více ukazatelů, jednoduše se rozdělí na dva
    • globální hloubka = lokální hloubka – musí vzniknout nová kapsa a také se zdvojnásobí rozměr adresáře kapes

  • řeší nedostatky rozšiřitelného hašování za cenu vyšší režie dané manipulací s přetokovými kapsami
  • počet kapes udržuje tak, aby byly naplněny z např. 80 %
  • rozdíl oproti rozšiřitelnému hašování: nemusí se vytvářet ani udržovat adresář kapes, přesto počet kapes roste lineárně.

B stromy a jejich varianty

Definice

strom = souvislý orientovaný acyklický (jednoduchý) graf
B strom = m-ární vyhledávací strom s omezujícími podmínkami (viz dále)
B+ strom = redundantní varianta B stromu

Vyhledávací B stromy a jejich varianty se používají pro efektivní ukládání a zpětné zpřístupňování dat. Nejčastěji jsou používány v databázích. Na B+ stromech jsou také založeny například souborové systémy XFS, ReiserFS či NTFS.

B strom

B+ strom

B* strom – Obdoba B stromu, která pracuje s uzly naplněnými minimálně do 2/3, místo 1/2 jako u klasického B stromu.

B# strom – Obdoba B+ stromu s povolenou rotací hodnot mezi sousedními uzly.
Trie – Klíče jsou uchovávány na cestách z kořene k externímu uzlu a nikoliv jako celky v jednotlivých uzlech. (Trie není m-ární vyhledávací strom.)

Základy teorie informace

Definice

Teorie informace = větev matematiky zabývající se efektivností a přesností uchovávání, přenosu a reprezentace informace
Informace = to, co přijímáme formou textů, řeči, obrazy… (zprávami)
  • informační objem zprávy je přímo úměrný entropii zprávy (méně pravděpodobná zpráva nese více informace)

1 bit = ekvivalent volby mezi dvěma stejně pravděpodobnými zprávami

Entropie

Entropie je míra neurčitosti; snížením neurčitosti získáváme informaci, množství získané informace odpovídá velikosti odstraněné neurčitosti.

Vzorec na výpočet entropie

H = - \sum^{M}_{i=1} P_{i} \log_{2} P_{i} [b/symbol]

P_{i} je pravděpodobnost výskytu symbolu s měřenou informací

M je počet symbolů

log_{2} P_{i} je překvapení z výskytu daného symbolu i

Maximální neurčitost

Při stejné pravděpodobnosti výstupu každého z M symbolů je P_{i} = \frac{1}{M} Maximální neurčitost potom je H_{max} = - \sum^{M}_{i=1} \frac{1}{M} \log_{2} \frac{1}{M} = \log_{2} M

Kódování

Kódování = nahrazování jedné posloupnosti symbolů jinou posloupností symbolů (pořizování dat, šifrování, opravné kódy, komprese…).

Další kódování: Brailovo písmo, RLE kódování (náhrada opakujících se symbolů), Aritmetické kódování (pro malé abecedy)

Komprese dat

Definice

komprese dat = proces identifikace a odstraňování redundance v datech

Cílem komprese je minimalizovat velikost komprimovaných dat, ať už pro ukládání nebo přenášení po síti.

Dělení 1

  1. neztrátová komprese – dekompresí se získají původní data (Huffmanovo kódování, Run-Length kódování…)
  2. ztrátová komprese – za cenu zefektivnění komprese se snižují nároky na přesnost rekonstrukce (MP3, JPEG…)

Dělení 2

  1. statická komprese – neměnný algoritmus, probíhá nezávisle na komprimovaných datech
  2. adaptivní komprese – dynamicky se měnící algoritmus, specifický pro komprimovaná data

Dělení 3

  1. fyzická komprese – ignoruje význam dat, odstraňuje se pouze formální redundance
  2. logická komprese – zohledňuje význam komprimovaných dat, obvykle se jedná o ztrátovou kompresi

Typy kompresních metod

  1. základní (intuitivní) technikyBraillovo písmo, Run-Length kódování…
  2. statistické metodyHuffmanovo kódování, Shannon-Fanovo kódování…
    • prvkům vstupní abecedy s větší pravděpodobností výskytu ve zprávě se přiřazují prvky výstupní abecedy kódované kratšími bitovými řetězci
    • aritmetické metody
      • každá posloupnost symbolů se reprezentuje značkou; množinou značek je interval <0;1); máme funkci, která mapuje posloupnost symbolů do tohoto intervalu
  3. slovníkové metodyLZ77, LZ78, LZW…
    • některé vzorky se vyskytují v mnoha typech dat; pokud se kóduje celý vzorek místo jednotlivých symbolů, které jej tvoří, bude kódovaný text kratší
  4. dalšíMP3, JPEG, MPEG…
    • věsměs specializované ztrátové kompresní metody na hudbu, obrázky a video

Předměty

PV062: Organizace souborů, doc. Ing. Jan Staudek, CSc.

Použitá literatura

Slidy předmětu PV062, doc. Ing. Jan Staudek, CSc.
Implementace souborů - ČVUT WIKI

Kam dál

B strom WIKI B+ strom WIKI Komprese WIKI Hašovací funkce WIKI Informační teorie EN WIKI Trie WIKI

Animace

B-Tree http://slady.net/java/bt/view.php B+Tree http://www.seanster.com/BplusTree/BplusTree.html

Vypracuje

Otázku si přečetl pan RNDr. Vlastislav Dohnal a rámcově prošel. Jeho podněty pro doplnění textu, opravy nesrovnalostí a odstranění matoucích či k otázce se nevztahujících textů byly do otázky zaneseny. Tato kontrola je jen rámcová, stále se může stát, že v otázce zůstala zapomenutá chybka či nesrovnalost, vyučující za toto nenese odpovědnost, berte tuto rámcovou kontrolu jako formu pomoci od vyučujících pro studenty.