Databázy 2 - Prednáška č. 5

Created: 2009-03-17 - 17:27


/*
Fyzická implementácia DB
- typy súborov
- stránka / PAGE
- tabuľka
- indexy
- stromy a B-stromy

SQL server mapuje databázu na systémové súbory - primárny dátový súbor 
											   - sekundárny dátový súbor
											   - log súbor

1.) Primárny dátový súbor
- každá DB má len 1 - prípona ".mdf"
- obsahuje odkazy na ďalšie súbory + master DB

2.) Sekundárny dátový
- prípona .ndf

3.) Log súbor
- prípona .ldf
- do transakcie vkladáme viac operácií - treba zabezpečiť, že keď sa niečo naruší, tak treba vrátiť všetko do pôvodného stavu
- Úlohou log súboru je to, aby po transakciách bolo možné v prípade potreby obnoviť databázu.

----------------------------------

Stránka / PAGE
- základná jednotka ukladania riadkov tabľky
- 1 stránka má 8 kB
- každá stránka má hlavičku a za ňou nasledujú riadky
- 8 typov strán:
	- samotné dáta
	- indexová stránka
	- obrázky / veľké texty
	- prehľad o voľných miestach v rámci stránky

Tabuľka
- delí sa na partície
- jedna partícia sa skladá z riadkov, ktoré môžu byť uložené na základe stránky: 
	1. Štruktúra klastrového indexu
		- dáta sú usporiadané
		- pre tabuľku sa vytvorí index a ukladá sa dvojica index - pole (kt. obsahuje odkaz na miesto kde je riadok alebo samotný riadok)
	2. Heap štruktúra (halda)
		- http://en.wikipedia.org/wiki/Heap_(data_structure)

Indexy
- indexový súbor je dvojica polí:
	1. Index
	2. Dáta (riadok tabľky)

Stromy
- uzol - korenovy, vnutorny (nelistovy), vonkajsi (listovy)
- rodic (predok) / potomok 
- hĺbka (výška) stromu
- podstrom

B-stromy
- http://en.wikipedia.org/wiki/B-tree
- 1972 - Bayer, McCreight
- def: B-strom stupňa n je strom, ktorý spĺňa podmienky:
	1. Koreň má minimálne 2 potomkov alebo list
	2. Každý vnútorný uzol má minimálne m/2 potomkov alebo maximálne m potomkov
	3. Každý list musí byť v tej istej hĺbke
	4. Vnútorný uzol s j+1 potomkami má j kľúčov (tvoria obsah uzla)
	5. V každom uzle kľúče sú usporiadané ... k0 < k1 < ... < ki-1 < ki < ... < kj-1

Vnútorné < p_0, p_1, [k_1, q_1 ] , ... ,p_i-1, [k_i-1, q_i-1], p_i, [k_i, q_i], ..., p_j-1, [k_j-1,q_j-1], p_j >
< k_1, .. ,  k_i-1 ,k_i,...,k_j-1>
 PS_0, .. , PS_i-1 ,PS_i,
kde pi je ukazovateľ (smerník) na iný uzol v strome, ki je kľúč, qi je pointer na dáta
	
	6. Pre ľubovoľný kľúč k_i podstromu platí: k_i-1 < k < k_i
- pre B-stromy sú najdôležitejšie: vyhľadaj, vlož, vymaž

*/