Databázový systém

**Databázový systém** (iné názvy: **[[banka údajov|databanka, banka údajov, banka dát]]**) je programový systém na efektívne ukladanie, modifikáciu a výber veľkého množstva perzistentných údajov (dát). Skladá sa z týchto dvoch častí:
* databáza (s definíciou)
* systém riadenia bázy údajov (DBMS)

## Definícia a charakteristika
Aby mohol byť nejaký programový systém označený za DBMS, musí
# byť schopný riadiť perzistentné dáta,
# byť schopný pristupovať efektívne k veľkému množstvu dát.
Obidve podmienky sú nutné (napr. bez druhej by definíciu spĺňal aj ktorýkoľvek súborový systém).
V súčasnosti používané databázové systémy majú aj mnoho ďalších charakteristických vlastností, ako
* podporu pre aspoň jeden dátový model (napr. relačný, logický), ktorým oddeľujú konceptuálnu (logickú) úroveň od fyzickej,
* správu transakcií,
* využitie niektorého jazyka vyššej úrovne pre manipuláciu a definíciu dát (napr. SQL, QBE, datalog),
* autentifikáciu používateľov a autorizáciu operácií nad dátami,
* robustnosť a zotaviteľnosť po chybách bez straty dát.

## Dejiny
Prvé komerčné databázové systémy boli vyvinuté začiatkom 60. 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ádal tzv. navigačné databázové systémy, ktoré využívali sieťový dátový model alebo hierarchický dátový model. Začiatkom 70. rokov po publikovaní článku "A Relational Model of Data for Large Shared Data Banks"  doktorom Edgarom Coddom vznikli prvé databázy s podporou relačného dátového modelu (tzv. relačné databázové systémy, skrátene RSRBD alebo RDBMS), ktoré rýchlo vytlačili z trhu nepohodlné a ťažkopádne navigačné systémy. V 80. rokoch 20. storočia sa začal robiť intenzívny výskum v oblasti objektovo-orientovaných databázových systémoch, avšak na tomto poli ešte nemáme dostatočné znalosti, aby sme ich vedeli implenentovať dostatočne efektívne. Začiatkom 90. rokov sa prvýkrát objavuje pojem tzv. znalostne orientovaného systému riadenia, čo je DBMS založený na logickom dátovom modeli, ktorý poskytuje ako jazyk pre manipuláciu (DML) a definíciu (DDL) dát niektorý z deklaratívnych programovacích jazykov, napr. datalog. Tieto systémy sú v súčasnosti predmetom intenzívneho výskumu a očakáva sa, že v strednodobej budúcnosti budú mať veľký význam.

V súčasnosti sú takmer všetky používané databázové systémy založené na relačnom dátovom modeli. Podľa výkonu a možností, ktoré poskytujú, ich môžeme zhruba rozdeliť na „high-end“ (Oracle Database, Microsoft SQL Server, IBM DB/2) a „low-end“ (MySQL, MiniSQL, ...) a systémy medzi nimi (PostgreSQL, ...). Okrem nich existujú aj tzv. desktopové relačné databázové systémy, ktoré na rozdiel od „plných“ systémov neposkytujú na vysokej úrovni alebo vôbec pokročilé funkcie, ako napr. transakčné spracovanie, autorizáciu, robustnosť a zotaviteľnosť, viac-používateľský prístup a distribuovanosť; na druhej strane sú oveľa lacnejšie (Microsoft Access, dBase, Microsoft FoxPro, Firebird, Interbase, ...).

## Architektúra
thumb|Všeobecná architektúra SRBD

Hoci existujú rozmanité databázové systémy s podporou rôznych dátových modelov, ich architektúra aspoň v tej najvšeobecnejšej forme je rovnaká a skladá sa z troch podsystémov: procesoru jazykov DML a DDL, správcu databáz a správcu súborov.

### Procesor jazykov DML a DDL
Táto časť, označovaná aj ako procesor „dotazov“, je zodpovedná za spracovanie používateľského vstupu zadaného väčšinou prostredníctvom jazykov z tried DML a DDL, ktoré systém podporuje (napr. SQL). Okrem toho slúži aj ako rozhranie medzi aplikačnými programami využívajúce systém, ktoré môže byť implementované ako knižnica používateľských funkcií alebo ako preprocesor špeciálnych príkazov v hostiteľskom jazyku. Úlohou procesora je potom riadne spracovať a optimalizovať požiadavky kladené na databázu zvonka a ohlásiť prípadné chyby v nich. Svoj výstup (napr. optimalizovaný strom dotazu) posiela ďalej na spracovanie správcovi databáz.

### Správca databáz
Správca databáz má za úlohu riadenie systému (spravuje systémové tabuľky, načítava jednotlivé moduly a pod.) a poskytuje aj výkonné služby medzi procesorom dotazov a správcom súborov. Po obdržaní vstupu od procesora dotazov môže urobiť ďalšie optimalizácie, keďže má znalosti, ktoré procesor nemá (náročnosť výpočtu jednotlivých funkcií, vzťahy medzi reláciami a pod.) a pripraví tzv. logický plán. Logický plán pretransformuje a zoptimalizuje na základe ďalších znalostí (existencia indexov, distribúcia súborov a pod.) na tzv. fyzický plán, čo je postupnosť krokov na nižšej úrovni, ktorá často okrem iného obsahuje rôzne analógie operátorov relačnej algebry (napr. načítaj tabuľku zo súboru, utrieď podľa atribútu, vykonaj karteziánsky súčin a pod.). Fyzický plán sa transformuje do postupnosti nízko-úrovňových krokov pre správcu súborov (napr. načítaj prvých 100 blokov z tohto súboru, zapíš do tohto súboru obsah tejto pamäťovej bunky). Správca databáz má na starosti takisto správu transakcií, autentifikáciu a autorizáciu a mnohé iné.

### Správca súborov
Správca súborov riadi prístup k fyzickým súborom a vykonáva operácie, ktoré mu zadá správca databáz. Túto funkciu pri jednoduchých databázových systémoch môže vykonávať správca súborov z operačného systému, často sa však kombinuje s vlastným modulom, ktorý má napr. zaznačené zámky na jednotlivé bloky súboru. Pri systémoch, kde je výkon na prvom mieste, môže byť celý správca súborov dodávaný s databázou, ktorá si spravuje samostatnú partíciu na disku či dokonca celý disk, čo umožňuje robiť optimalizácie na veľmi nízkej úrovni (napr. často vyžadované údaje uložiť na spoločný cylinder).