Tyto objekty dopodrobna probírám na semináři Základy SQL 

Zeptejte se mě přímo, co Vás zajímá na chatu, mailem nebo po telefonu.

1. Tabulka

– jde o základní databázový objekt. Skládá se z řádků a sloupců, kde řádky obsahují jednotlivé záznamy v tabulce a sloupce defi nují hodnoty jednotlivých položek. Slupce bývají nejčastěji textové řetězce nebo čísla, ale na výběr máte plno dalších typů. Jednotlivé záznamy jsou do tabulky vkládány postupně pomocí příkazů insert na konec nebo je můžete kdykoli změnit pomocí příkazu update. Chcete-li řádek smazat použijete příkaz delete. Návrh tabulek, jejich velikosti, pojmenovaní, umístění atd. jsou součástí designu databáze a správný design databáze je klíčový pro budoucí běh databáze a následné ladění databáze. Je proto důležité věnovat mu dostatek času. Je potřeba hledat optimální řešení, které bude vyhovovat jak uživatelům, tak bude splňovat bezpečnostní pravidla organizace. Je důležité hned na začátku simulovat reálný provoz kvůli nákupu odpovídajícího hardwaru, rozložení souboru na jednotlivé svazky atd.
Design databáze lze rozdělit na dvě základní kategorie, a to logický návrh, kde se zaobíráte potřebami aplikace. Nastavujete vazby mezi tabulkami, jejich jména, indexy atd. K tomu vám slouží různé UML, E-R modelování a programy přímo k tomu určené. Kreslíte diagramy a na konci můžete vygenerovat skript pro vytvoření vlastní databáze. Oproti tomu je fyzický návrh, kde řešíte, co a kam uložit, jaké technologie zvolit, jak zabezpečit data z pohledu operačního systému atd. Designu databází je věnováno hodně knih, a proto zde nebudu popisovat pravidla, kterých se držet a jak postupovat. To není účelem knihy, která se věnuje již hotovým řešením.Spíš bych se pozastavil u logického a fyzického uspořádání databáze. Podívejte se na fyzické uspořádání. Zde je to jednoduché. V operačním systému se pracuje s os block neboli bloky operačního systému. Velikost bloku operačního systému je daná os, na kterém databáze běží.
atový soubor nebo jakýkoli jiný soubor databáze je pak v os rozložen do daných bloků. Avšak v databázi, podíváte-li se na logické uspořádání, je zde daleko užší členění. Z pohledu databáze by bloku os odpovídal parametr OS_BLOCK_SIZE, kde jeho velikost bývá nejčastěji 8192B, což odpovídá velikosti bloku os, ale může být i větší, a tím sloučit více bloků os do jednoho databázového bloku. Velikost bloku vám říká, kolik dat můžete přečíst při jednom načtení do paměti. Je jasné, že u OLTP (online transaction procesing) čtete často po malých blocích, a proto 8KB blok je dostačující, ale například u datových skladů OLAP (online analytical processing) operací potřebujete načíst velké množství dat, a proto velikost bloku by měla být větší. Databázové bloky se slučují do extentů. Extent je základní jednotka při vytváření tabulkových prostorů, kde například definujete, o kolik extentů se má velikost tabulkového prostoru zvětšit, dojde-li k jeho zaplnění. Sloučením více extentů dohromady vznikne segment. Existují různé druhy segmentů, podle jejich účelu využití je lze rozdělit na datové segmenty, indexové segmenty, undo segmenty nebo temporary segmenty. Jednotlivé segmenty se pak slučují do tabulkových prostorů neboli tablespaces. Existují systémové tabulkové prostory a nesystémové. Systémové jsou SYSTEM nebo SYSAUX a nesystémové ostatní. Při vytváření tabulkových prostorů můžete definovat, že bude buď small, nebo big. Tabulkový prostor může obsahovat jeden nebo více datových souborů, je-li defi nován jako small. V případě, že je definován jako big, pak mu náleží pouze jeden datový soubor. Nakonec celá databáze se skládá z tabulkových prostorů. V databázi existují ještě různá schémata ať systémová (system,sysman) nebo nesystémová (scott).

2. Index

– objekt, který vychází z tabulky, ale jak je patrné z definice tabulky data v ní jsou neuspořádaná a v případě dohledání konkrétního záznamu se musí projít všechna data v tabulce. V případě velkých tabulek je to náročná operace jak na IO tak na CPU. V případě menších tabulek ten rozdíl není tak markantní, ale je patrný. Indexy jsou tedy objekty, ve kterých jsou data z tabulek uspořádaná podle nějakého klíče, který definujete na začátku. Indexy mohou být nad jedním sloupcem nebo mohou být složené z více klíčů. Existují primární klíčecizí klíče. V tabulce může existovat pouze jeden primární klíč a tento klíč musí splňovat určité podmínky, jako že je unique (jedinečný). To znamená, že data v sloupci, nad kterým je vytvořen primární klíč, se nesmí opakovat, nesmí mít hodnotu NULL. Oproti tomu cizích klíčů může být více a nejčastěji ukazují do jiné tabulky a vy si pomocí cizích zajišťujete integritu dat (jejich čistotu) a vytváříte vazby mezi tabulkami. Rozlišuje 4 základní vazby mezi tabulkami. Mezi tabulkami neexistuje žádná vazba, vazba 1:1, vazba 1:N a nebo vazba N:M. V databázi můžou existovat dva druhy indexů, a to buď b-tree index, což je nejčastěji používaný index, nebo bitmapové indexy, které se používají u dat s vysokou kardinalitou. To znamená, že hodnoty v daném sloupci nabývají jen několika málo hodnot. Nejčastěji dělení, muž, či žena. Indexy vám zrychlí vaše dotazy, ale berte v potaz při jejich vytváření, že to s sebou nese další práci navíc, protože je budete muset udržovat aktuální, jsou to další nároky na místo na disku. Navíc operace DML budou muset editovat kromě dat samotných i indexy. Nevytvářejte tedy indexy na každý sloupec, ale spíše věnujte pozornost při vytváření dotazu a při návrhu aplikace.

3. Pohled

– pohledy (views) jsou dalšími z řady objektů, jejichž četnost v databázi je vysoká, a to z několika důvodů. Jedním z důvodů může být bezpečnost, dalším důvodem je zpřehlednění dotazů. Klasický pohled není nic jiného než logické defi nování, jak získat potřebná data. Aniž byste museli při každém dotazu zadávat výčet všech parametrů v klauzuli where, uděláte to jednou a daný dotaz si uložíte jako pohled. Budete-li chtít někdy v budoucnu získat daná data stačí vám udělat dotaz do daného pohledu a vám se dynamicky zobrazí jen ta data, která splňují veškeré podmínky zadané při defi nici pohledu. Normální pohled tedy neobsahuje žádná data, ale jen mění pohled na tabulky, oproti tomu je materializovaný pohled, který dělá to samé jako normální pohled, s tím že si data uloží na disk. Přístup k těmto datům je pak rychlejší, neboť není potřeba dynamicky spojovat veškeré tabulky, ale je naopak potřeba udržovat takové materializované pohledy aktuální. To se děje pomocí refreshe daných pohledů.

4. Spouštěč

– spouštěče (triggers) jsou objekty, jejichž cílem je reagovat na nějakou událost a v závislosti na dané události vykonat nějakou akci. Existují různé druhy spouštěčů, které mohou být definované na úrovni celé databáze nebo jen nad tabulkou. Mohou být vyvolány na základě nějaké DML operace (delete, insert, update) nebo DDL operace (create, alter, drop) případně na operace v databázi, jako je spuštění nebo zastavení databáze popřípadě při vyvolání určité chyby. V databázi existuje celá řada dalších objektů, ale pro základní operace a pochopení principu činnosti a struktury databáze stačí zmínit tyto čtyři. Pokusil jsem se na několika stranách vysvětlit to, čemu se věnují celé publikace. Budete-li chtít proniknout hlouběji do tajů činnosti databáze, máte dveře otevřené. Budu rád, když vám kniha pomůže alespoň s některými problémy, které se v databázi mohou objevit. Odkaz na knihu zde



Komentáře