Databáza je systém na ukladanie a starostlivosť o údaje (akýkoľvek druh informácií).
Databázový stroj môže informácie v databáze triediť, meniť alebo obsluhovať. Samotné informácie môžu byť uložené rôznymi spôsobmi - pred digitálnymi počítačmi sa používali kartotéky, tlačené knihy a iné metódy. Teraz sa väčšina údajov uchováva v počítačových súboroch.
Databázový systém je počítačový program na správu elektronických databáz. Veľmi jednoduchým príkladom databázového systému je elektronický adresár.
Údaje v databáze sú určitým spôsobom usporiadané. Pred vznikom počítačov sa údaje o zamestnancoch často uchovávali v kartotékach. Pre každého zamestnanca bola zvyčajne jedna karta. Na karte sa dali nájsť informácie, ako napríklad dátum narodenia alebo meno zamestnanca. Takéto "karty" má aj databáza. Pre používateľa bude karta vyzerať rovnako ako za starých čias, len tentoraz bude na obrazovke. Pre počítač môžu byť informácie na karte uložené rôznymi spôsobmi. Každý z týchto spôsobov sa nazýva databázový model. Najčastejšie používaný model databázy sa nazýva relačný model databázy. Na ukladanie údajov sa v ňom používajú vzťahy a množiny. Bežní používatelia, ktorí hovoria o databázovom modeli, nebudú hovoriť o vzťahoch, ale o databázových tabuľkách.
Základné pojmy a operácie
- Záznam (riadok) – analóg „karty“: predstavuje jedno položkové meranie alebo entitu (napr. jeden zamestnanec).
- Polia (stĺpce) – jednotlivé vlastnosti záznamu (meno, dátum narodenia, adresa).
- Tabuľka – súbor záznamov rovnakého typu.
- CRUD operácie – Create (vytvoriť), Read (čítať), Update (aktualizovať), Delete (mazať) sú základné činnosti s údajmi.
Typy databázových systémov
Okrem relačných databáz existujú aj iné prístupy, ktoré sa nazývajú často NoSQL. Hlavné typy:
- Relačné databázy – údaje sú organizované do tabuliek so stĺpcami a riadkami; používa sa jazyk SQL na dotazovanie (príklady: MySQL, PostgreSQL, SQLite, Oracle).
- Dokumentovo orientované databázy – údaje sa ukladajú ako dokumenty (napr. JSON); vhodné pre neštruktúrované alebo polostruktúrované dáta (napr. MongoDB).
- Key–Value (kľúč–hodnota) – veľmi jednoduchý model, kde sa kľúč priradí jednej hodnote; používa sa pri cache a rýchlom uložení (napr. Redis).
- Stĺpcovo orientované databázy – optimalizované pre analytické dotazy nad veľkými množinami dát (napr. Cassandra, HBase).
- Grafové databázy – model pre prepojené údaje, kde sú uzly a hrany; vhodné pre sociálne siete, odporúčania (napr. Neo4j).
Transakcie a vlastnosti ACID
Väčšina databázových systémov podporuje transakcie – skupinu operácií, ktoré sa vykonajú atomicky. Dôležité vlastnosti transakcií sú známe ako ACID:
- Atomicita – transakcia sa vykoná celá alebo vôbec.
- Konzekventnosť (Consistency) – po transakcii zostáva databáza v platnom stave podľa definovaných pravidiel.
- Izolácia – súbežné transakcie sa navzájom neovplyvňujú.
- Trvalosť (Durability) – po potvrdení transakcie sú zmeny trvalo uložené (aj pri výpadku).
Indexy, normalizácia a výkon
Indexy sú pomocné štruktúry, ktoré zrýchľujú vyhľadávanie (podobne ako index v knihe). Pri ich používaní je však nutné zvažovať dopad na rýchlosť zápisu a využitie miesta na disku.
Normalizácia je proces usporiadania údajov tak, aby sa znížila redundancia a zabezpečila konzistencia. Pre veľmi rýchle čítanie alebo špecifické použitia sa však často robí denormalizácia (duplicitné uloženie údajov) kvôli výkonu.
Záloha, replikácia a škálovanie
- Zálohovanie (backup) – pravidelné ukladanie kópií databázy je kľúčové pre obnovu pri strate údajov.
- Replikácia – kópie databázy sú distribuované na viacero serverov; slúži pre dostupnosť a čítacie škálovanie.
- Škálovanie – horizontálne (pridávanie ďalších serverov) alebo vertikálne (silnejší server). Rôzne databázové typy podporujú škálovanie rôznymi spôsobmi.
Bezpečnosť a správa prístupu
Databázy často obsahujú citlivé údaje, preto je dôležité zabezpečiť prístup pomocou autentifikácie, autorizácie, šifrovania v pokoji aj pri prenose a auditovania prístupu. Správna konfigurácia práv, pravidelné aktualizácie a monitorovanie sú základné bezpečnostné opatrenia.
Výber databázy a bežné použitia
Pri výbere databázového systému zvážte charakter dát a požiadavky aplikácie:
- Relačné DB sú vhodné pre transakčné aplikácie, kde je dôležitá konzistencia a komplexné dotazy.
- NoSQL riešenia často lepšie zvládajú veľké objemy neštruktúrovaných dát, vysokú škálovateľnosť alebo flexibilitu schémy.
- Grafové DB sú vhodné, keď sú dôležité vzťahy medzi entitami (napr. sieť kontaktov, odporúčania).
Príklady systémov a jazyky
Najbežnejšie relačné systémy: MySQL, PostgreSQL, SQLite, Oracle DB, Microsoft SQL Server. Medzi NoSQL riešenia patrí MongoDB (dokumenty), Redis (kľúč–hodnota), Cassandra (stĺpcové), Neo4j (grafové).
Pre relačné databázy sa štandardne používa jazyk SQL na definovanie štruktúr (CREATE TABLE), dotazy (SELECT), vklady (INSERT), aktualizácie (UPDATE) a mazanie (DELETE).
Zhrnutie
Databáza je štruktúrovaný spôsob ukladania informácií, ktorý používateľom a aplikáciám umožňuje efektívne vyhľadávať, upravovať a spravovať dáta. Existuje viac databázových modelov (relačné, dokumentové, kľúč–hodnota, stĺpcové, grafové), každý so svojimi výhodami a kompromismi. Pri návrhu riešenia je potrebné zvážiť konzistenciu, výkon, škálovateľnosť, dostupnosť a bezpečnosť.