Databázové systémy
Portál: | E-learningový vzdelávací portál Slovenskej poľnohospodárskej univerzity v Nitre |
Kurz: | Databázové systémy |
Kniha: | Databázové systémy |
Vytlačil(a): | Hosťovský používateľ |
Dátum: | štvrtok, 21 novembra 2024, 22:03 |
Opis
Databázové systémy
Databázový systém
Uvádzané problémy klasických metód hromadného spracovania dát viedli k vzniku a rozvoju databázových systémov. Prvé komerčné databázové systémy boli vyvinuté začiatkom 60-tych rokov 20. storočia, kedy sa začali prejavovať nedostatky riešení založených na čistých súborových systémoch. V tých časoch prevládali tzv. navigačné databázové systémy, ktoré využívali sieťový dátový model alebo hierarchický dátový model. Už koncom 60-tych a začiatkom 70-tych rokov vznikli prvé systémy, ponúkajúce komplexnejšie riešenia databázových požiadaviek. Nazývajú sa systémy riadenia bázy dát (DataBase Management Systems, DBMS). Systémy riadenia bázy dát umožnili oproti súborovým systémom prácu na úrovni záznamov, transakčný mechanizmus, prostriedky na zálohovanie a autorizáciu, nastavovanie parametrov pre správu externej pamäte. Dáta pri tomto riešení už nie sú organizované v izolovaných súboroch, ale v komplexnejšej, centrálne spracovávanej štruktúre dát, nazývanej databáza (DataBase, DB) alebo taktiež báza dát, pre ktorú je vytvorená jediná interná organizácia dát, spoločná pre všetky oblasti a spôsoby využitia týchto dát. Centrálna správa databázy, tzn. všetky implementačné programy, je realizovaná prostredníctvom systému riadenia bázy dát, ktorý spolu s databázou tvoria databázový systém (DataBase System, DBS).
Báza dát
Pod bázou dát budeme rozumieť organizovaný súhrn vzájomne spojených dát, odrážajúcich stav vyčlenenej predmetovej oblasti reálneho sveta. Dáta slúžia jednotlivým užívateľom pri riešení konkrétnych úloh. Inak povedané, databáza je základnou jednotkou úschovy dát.
V databáze sú dáta väčšinou uchovávané v jednej alebo vo viacerých dátových štruktúrach, ktoré majú tvar tzv. dátovej tabuľky. Táto tabuľka existuje vo forme súboru na disku. Jednotlivé súbory so svojou vnútornou stavbou sú v databáze medzi sebou v určitom logickom vzťahu. Dátová tabuľka sa skladá zo záznamov (viet), pričom každý záznam je tvorený skupinou položiek (polí, slov). Štruktúra dátovej tabuľky je definovaná schémou bázy dát.
Príklad: Zoznam študentov fakulty by mohol byť uložený v databázovej tabuľke, kde záznam (veta) predstavuje údaje o jednotlivých poslucháčoch fakulty, pričom každý záznam má napríklad päť položiek (meno, priezvisko, dátum narodenia, miesto narodenia, rodné číslo).
Schéma bázy dát predstavuje opis štruktúry bázy dát uložený v adresári dát, vytvorený pomocou jazyka pre opis (definíciu) dát. Schéma definuje jednotlivé dátové položky, databázové vety a logické vzťahy medzi týmito vetami (záznamami). Schéma bázy dát teda predstavuje opis logickej a fyzickej štruktúry dát.
Jednotlivé dátové položky rozlišujeme podľa typu dát, ktoré do nich môžeme ukladať. Najbežnejšie sú položky textové (alfanumerické), číselné (numerické), dátové (dátumy) a logické. V niektorých databázových systémoch sa stretávame aj s inými položkami ako sú napr. finančné položky, položka o premennej dĺžke (na zapisovanie dlhšieho textu, poznámky), prípadne položky na uloženie obrázkov, grafov a pod.
Databázu je možné kupovať alebo požičiavať, ideálnym prípadom je však tvorba vlastnej databázy, čo je aj bezpečnejšie. Pri návrhu konkrétnej databázy sa veľmi skoro ukáže, že nie je výhodné uchovávať všetky dáta v jednej tabuľke.
Obrázok: Schematické znázornenie databázového systému
Systém riadenia bázy dát
Poznámka:V našom prípade by bolo asi rozumné uchovávať v jednej tabuľke osobné údaje pedagogických pracovníkov, v ďalšej údaje o prospechu poslucháčov v jednotlivých predmetoch, v inej tabuľke by figurovali zase údaje o ich zdravotnom stave a pod.
Poznámka: Jedna z najväčších databáz na svete sa nachádza na Stanfordovej univerzite v Kalifornii. Tamojší vedci pracujúci v oblasti časticovej fyziky ukladajú do databáz dáta získané z prevádzkovania časticového urýchľovača. Už existujúci počet 500 TB sa denne zvyšuje o ďalšie 2 TB a očakáva sa prelomenie petabajtovej (1 petabajt (PB) = 1015 bajtov) hranice.
Systém riadenia bázy dát bezprostredne riadi prevádzku bázy dát a zabezpečuje do nej prístup pre všetky aplikačné programy. Systém riadenia bázy dát je softvér dodávaný príslušným výrobcom. Softvérové produkty ako Microsoft Access, Oracle, Microsoft SQL Server, Sybase, DB2, INGRES a MySQL sú teda príkladom databázových systémov. Systém riadenia bázy dát zaisťuje – okrem vlastnej úschovy dát – všetky základné služby, nevyhnutné pre organizáciu databázy a udržanie v chode ako napríklad:
- poskytovanie nástrojov na tvorbu databázových tabuliek.
- nástroje na presúvanie dát do fyzických dátových súborov a naopak - z nich von (podľa potreby).
- mechanizmy umožňujúce údaje z jednotlivých tabuliek kombinovať podľa požiadaviek užívateľa (aplikačného programu).
- správu súčasného prístupu viacerých užívateľov k údajom, vrátane realizovania takých opatrení, ktoré zabránia vzájomným konfliktom pri aktualizácii rovnakých dát realizovaných rôznymi užívateľmi v rovnakom čase.
- správu transakcií, ktoré znamenajú súčasné vykonávanie niekoľkých zmien v databáze v rámci jednej nedeliteľnej jednotky. Inými slovami, pokiaľ transakcia skončí úspešne, zaznamenajú sa do databázy všetky zmeny obsiahnuté v transakcii. Pri zlyhaní transakcie sa - naopak - nezaznamená žiadna z jednotlivých zmien.
Poznámka: Transakcia je diskrétna postupnosť krokov – operácií, ktoré musia byť buď všetky zrealizované správne, alebo nemôžu byť zrealizované vôbec. Transakcia sa taktiež označuje ako jednotka práce.
- podporu dopytovacieho jazyka, ktorý tvorí množina príkazov, napr. pre načítanie dát z databázy, modifikáciu dát v databáze atď. Na bežnú prácu s uchovávanými dátami využívajú koneční používatelia aplikačné programy vytvorené aplikačnými programátormi. Používatelia však častokrát potrebujú vyhľadávať údaje v báze dát podľa ad hoc kritérií. Tieto kritériá nebývajú známe vopred a sú zvyčajne natoľko jednoduché a dočasné, že sa pre ne neoplatí vytvárať špeciálne programy. Databázový systém preto má poskytovať jazyk veľmi vysokej úrovne, ktorý dovolí laickému používateľovi, so znalosťou základnej štruktúry bázy dát, vyhľadávanie dát podľa jednoduchých kritérií. Tento deklaratívny dopytovací jazyk je štandardizovaný, aby sa dal využiť v rôznych databázových systémoch.
- mechanizmy pre zálohovanie databázy a pre „zotavenie“ po haváriách.
- bezpečnostné mechanizmy, ktoré zabraňujú neoprávnenému prístupu k dátam a k neoprávneným modifikáciám. Databázové systémy sa často používajú v "citlivých" oblastiach ako sú napríklad bankové systémy, registre obyvateľstva a pod. Systém musí byť preto chránený pred nepovoleným prístupom. Najlepšou ochranou sú vo všeobecnosti organizačné opatrenia v organizácii, kde sa systém prevádzkuje. Databázový systém však musí tieto opatrenia podporiť: umožniť identifikáciu používateľa a priradiť mu dáta a programy, ku ktorým má prístup (tzv. autorizácia).
Jednotlivé systémy riadenia bázy dát sa navzájom líšia v mnohých aspektoch, predovšetkým v modeli dát, ktoré podporujú, v rozsahu funkcií, ktoré poskytujú, v náročnosti na zdroje počítača, v schopnosti pracovať pre jedného alebo súčasne viacerých užívateľov a podobne. Napriek uvedeným odlišnostiam, prakticky pri všetkých modeloch systémov riadenia bázy dát sú programy, ktorými sa realizujú základné funkcie tohto systému. Môžeme ich rozdeliť do štyroch skupín, a to podľa ich spôsobu práce a funkcie, ktorú vykonávajú: prekladače jazykov, programy pre prácu s katalógmi dát, výkonné programy a servisné programy.
Poznámka: Databázový objekt je pomenovaná dátová štruktúra, uložená v databáze. Konkrétne typy podporovaných databázových objektov sa líšia podľa výrobcu databázového systému a v závislosti od databázového modelu. Niekoľko príkladov podporovaných databázových objektov: tabuľky, kľúče, indexy, udalosti, formuláre, reporty, procesy a iné. Databázový model (model databázy) vyjadruje spôsob usporiadania dát v databáze. Tento spôsob usporiadania dát odráža podobu reálneho sveta.
Systém riadenia bázy dát
So systémom riadenia bázy dát prichádzajú priamo do styku tri skupiny používateľov, a to správca (administrátor) databázy, aplikační programátori a neprogramátori. Je zrejmé, že každý z nich má špecifické požiadavky na komunikáciu so systémom riadenia bázy dát, preto sú tieto vybavené viacerými databázovými jazykmi.
Ide o definičné jazyky (určené pre správcov databáz), ktorých úlohou je tvoriť alebo meniť časti adresára dát (adresár dát eviduje všetky základné informácie o štruktúre údajov, vzájomnom prepojení databázových objektov a pod.). Okrem toho, definičné jazyky zabezpečujú aj iné funkcie databázového systému ako napríklad stanovenie spôsobu prístupu k dátam, prideľovanie a odoberanie práv prístupu k dátam pre jednotlivých používateľov, funkcie uloženia údajov v pamäti, spôsob ochrany databázy pred stratou údajov a pod. Tento prostriedok pre opis dát sa niekedy označuje ako jazyk typu DDL (data definition language – jazyk pre definíciu štruktúry dát). Jazyk typu DDL slúži na vytvorenie všetkých definícií užívateľských dát potrebných v aplikácii, to znamená, že poskytuje možnosti vytvorenia a modifikácie databázových objektov.
Ďalšiu skupinu jazykov charakterizujeme pojmom manipulačné jazyky, určené pre aplikačných programátorov (tvorcovia aplikácií), ktorí prostredníctvom nich vytvárajú aplikačné programy pre potreby ostatných používateľov. Tieto jazyky umožňujú formulovať jednotlivé požiadavky na databázu, čiže obsahujú príkazy potrebné pre napĺňanie, aktualizáciu a výbery dát z databázy pre potreby ostatných používateľov, príkazy pre generovanie špecifických hlásení a plnenie typických výpočtov, obsahujú aj príkazy na spoluprácu databázy s okolím databázového systému, poskytujú možnosti využitia základných logických a aritmetických operácií, riadiace príkazy a pod. Tento prostriedok pre opis algoritmu sa niekedy označuje ako jazyk typu DML (data manipulation language – jazyk pre manipuláciu s dátami).
Skupina užívateľských jazykov poskytuje služby používateľom systému. Obyčajne sú to odborníci v danej problémovej oblasti ako priemysel, zdravotníctvo, kultúra atď. Užívateľské jazyky, ako komunikačné prostriedky, sú určené predovšetkým neprogramátorom, preto je ich syntax pomerne jednoduchá. Tieto jazyky sú typické pre relačný model údajov a využívajú sa napríklad pri aktualizácii údajov v databáze, t.j. pri zmenách dát v databáze – pridávanie a rušenie, pri sprístupňovaní (výbere) údajov z databáz podľa daných požiadaviek alebo na logické a číselné spracovanie údajov. Sú generované s cieľom vytvoriť podmienky čo najjednoduchšej práce s databázovým systémom, aj za cenu nevyužitia všetkých možností, ktoré systém riadenia bázy dát poskytuje. Časť DML určená pre výber údajov z databázy sa nazýva dopytovací jazyk (query language).
Môžeme teda konštatovať, že databázový systém v sebe zahŕňa:
- technické prostriedky – spolu s ďalšími faktormi a požiadavkami užívateľa limitujú možnú zložitosť architektúry informačného systému. Komerčné databázové systémy pokrývajú širokú škálu možností s rôznym stupňom úplnosti a efektivity splnenia požiadaviek, kladených na systém riadenia bázy dát výkonom, cenou, charakterom aplikácie atď. Stretávame sa s jednoduchšími súborovými systémami (napr. dBASE, FoxPro, Microsoft Access) na jednej strane, až po komplexné (a nákladné) systémy (DB2, Oracle, Microsoft SQL server) na strane druhej;
- bázu dát – prostriedok, v ktorom sú uložené samotné dáta;
- programové vybavenie – systém riadenia bázy dát, vývojové nástroje;
- používateľov databázových systémov – môžeme ich klasifikovať podľa rôznych kritérií – napr. podľa oprávnení k operáciám, podľa znalosti a úrovne riadenia databázového systému a aplikácie do typových skupín, teda:
- správca (administrátor) databázy – koordinuje všetky aktivity v databázovom systéme, zakladá, modifikuje užívateľov, rozhoduje o tom, ktoré dáta a ako budú v báze dát uložené – definuje schému v databáze a integritné obmedzenia, určuje schému uložení dát a metódy prístupu k dátam, pokiaľ je to nutné, realizuje požadované zmeny, modifikuje štruktúry dát, prideľuje prístupové práva k dátam i operáciám, sleduje výkon a správanie sa databázového severu, zálohuje, rekonštruuje databázu v prípade jej poškodenia;
- aplikačný programátor (tvorca aplikácií) – programuje aplikačné programy nad definovanými dátovými štruktúrami, zložitejšie dopyty a transakcie použitím DML v hostiteľskom jazyku alebo jazyky štvrtej generácie;
- príležitostný užívateľ – dokáže prostredníctvom dopytovacieho jazyka formulovať vlastný špecifický dopyt alebo inak manipuluje s dátami;
- naivný užívateľ – (najčastejšie neprogramátor), ktorý prostredníctvom aplikačných programov pracuje s databázou a používa databázu ako informačný systém pre ukladanie, spracovanie a vyhľadávanie informácií.
Štruktúra databázového systému
Vychádzajúc už z uvedeného, môžeme teda skonštatovať, že databázový systém je komplex podsystémov (jednotlivé časti viď. ďalej), ktoré sa spoločne podieľajú na spracovaní a ukladaní informácií, ako aj zabezpečovaní možností manipulácie s nimi.
Ako je možné vidieť na obrázku 1.5, štruktúra databázového systému sa skladá z programových modulov, z ktorých najdôležitejšie sú:
- prekladač jazyka DML – prekladá príkazy jazyka DML uvedené v hostiteľskom jazyku (aplikačné programy) do volania procedúr v tomto jazyku;
- prekladač jazyka DDL – spracováva definície a zmeny schémy databázy a ukladá ich do katalógu dát (data dictionary);
- prekladač dopytovacieho jazyka – prekladač dopytu interpretuje alebo prekladá dopyt definovaný v dopytovacom jazyku do optimalizovanej podoby a odovzdá ho na vyhodnotenie, ktorému rozumie manažér databázy;
- manažér databázy – sprostredkuje dopyty preložené z jazyka DML alebo z dopytovacieho jazyka; dopyty prevedie na postupnosť príkazov pre prácu so súbormi, ktoré vykoná tzv. manažér súborov;
- manažér súborov – manažér dát spolupracuje s operačným systémom, prípadne s podsystémami vnútornej a vyrovnávacej pamäte a riadi disky na ukladanie a prenos dát;
- najnižšiu úroveň tvorí subsystém pre ovládanie súborov. Zahŕňa fyzickú organizáciu dátových súborov, zabezpečuje uloženie dát na vonkajšie médium a realizuje prenosy dát s pamäťou prostredníctvom príslušných manažérov. Na disku sú uložené informácie štyroch kategórií:
- dáta v dátových súboroch (súbory dát) – obsah vlastnej databázy,
- metadáta v slovníku dát – opis schémy databázy a integritných obmedzení,
- štatistické dáta – informácie o vlastnostiach uložených dát, ako je veľkosť, charakter hodnôt, vzájomné väzby,
- indexy – podpora efektívneho prístupu k dátam.
Obrázok: Štruktúra databázového systému
Databázové systémy môžu byt’ založené na rôznych modeloch, a tak vychádzať z rôznych princípov. Avšak bez ohľadu na ne musia byť údaje v každom databázovom systéme (presnejšie v báze dát) nevyhnutne perzistentné (perzistencia – trvanie, stálosť), t.j. musia v ňom pretrvávať aj vtedy, keď s nimi nepracuje žiadny program alebo iný používateľ. Životnosť dát teda nie je ohraničená časom vykonávania programu – t.j. dáta existujú aj po ukončení programu, ktorý s nimi manipuluje. Dáta sa môžu spracovávať opätovným vykonaním daného programu, resp. iným programom. Uchovávajú sa preto v externých (sekundárnych) pamätiach: disky, magnetické pásky a iné dátové nosiče.
Dáta v databázovom systéme musia byť taktiež spoľahlivé, čiže modifikované môžu byť len na výzvu oprávneného používateľa. Keďže uchovávané dáta bývajú často veľmi dôležité, nesmie dôjsť k ich strate alebo poškodeniu pri zlyhaní hardvéru alebo softvéru. Ochrana pred zlyhaním hardvéru sa zabezpečuje predovšetkým hardvérovými prostriedkami. Databázový systém ju podporuje iba čiastočne – prostriedkami na zálohovanie dát do záložnej externej pamäte. Výraznejšiu ochranu poskytuje pred zlyhaním softvéru. Zahŕňa predovšetkým transakčný mechanizmus, umožňujúci zachovanie konzistentnosti databázy. Transakciu tvorí skupina príkazov, definovaná používateľom, a vykoná sa buď celá alebo sa nevykoná vôbec. V prípade chyby počas vykonávania transakcie systém automaticky zabezpečí návrat do konzistentného stavu pred jej začiatkom.
Okrem týchto úplne prirodzených a skôr technických podmienok však každý databázový systém hoden svojho mena musí spĺňať ešte jeden dôležitý princíp – neduplicitu dát, teda zásadu, aby sa totožná informácia v žiadnom prípade neopakovala na viacerých miestach.
Databázový systém by mal dokonca rešpektovať ešte silnejšiu požiadavku – neredundantnosť dát, keď nie sú prípustné ani údaje, ktoré možno odvodiť z iných.
Táto vlastnosť je však občas v rozpore s ďalším princípom – rýchlosťou prístupu k dátam. Väčšina dát sa uchováva v externých pamätiach. Ak chce program aktualizovať niektoré údaje, musí ich najprv načítať z externej do operačnej pamäte, tam ich spracovať a potom opätovne zapísať do externej pamäte. Operácie na sprístupňovanie externej pamäte trvajú rádovo dlhšie ako operácie vykonávané v operačnej pamäti. Databázový systém musí preto poskytovať prostriedky na zefektívnenie práce s externou pamäťou.
Tvorca databázového systému by mal dobre zvážiť, ktorú z týchto zásad poruší. Cenou za rýchly prístup je totiž nákladnejšia starostlivosť o konzistenciu prvotných a odvodených dát. Pre databázu to znamená použiť zložitejšie prvky (tzv. triggery), v opačnom prípade by táto úloha ostávala na často nedisciplinovaných klientských programoch.