Čo je databáza? Definícia, typy a základy databázových systémov
Čo je databáza? Jasný prehľad o definícii, typoch, relačnom modeli a základoch databázových systémov – pre začiatočníkov aj profíkov.
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ť.
Použitie pre databázové systémy
- neviem, čo povedať
Zmena údajov
V databázach sa niektoré údaje občas menia. Pri zmene údajov môžu nastať problémy, môže dôjsť k chybe. Chyba môže spôsobiť, že údaje budú nepoužiteľné. Databázový systém sa pozerá na údaje, musia spĺňať určité požiadavky. Robí to pomocou transakcie. V databáze sú dva časové body, čas pred zmenou údajov a čas po zmene údajov. Ak sa pri zmene údajov niečo pokazí, databázový systém jednoducho uvedie databázu do stavu pred uskutočnením zmeny. Tento postup sa nazýva rollback. Po úspešnom vykonaní všetkých zmien sa tieto zmeny odovzdajú. To znamená, že údaje majú opäť zmysel; commitované zmeny sa už nedajú vrátiť späť.
Aby to bolo možné, databázy dodržiavajú princíp ACID:
- Všetky. Buď sú všetky úlohy danej množiny (nazývanej transakcia) hotové, alebo nie je hotová žiadna z nich. Známa ako atomicita
- Dokončite. Údaje v databáze majú vždy zmysel. Neexistujú žiadne polovičné (neplatné) údaje. Známa ako konzistentnosť
- Nezávislá. Ak veľa ľudí pracuje na rovnakých údajoch, navzájom sa nevidia (ani neovplyvňujú). Každý z nich má svoj vlastný pohľad na databázu, ktorý je nezávislý od ostatných. Známa ako izolácia
- Hotovo. Transakcie sa musia odovzdať, keď sú hotové. Po ich odovzdaní ich už nie je možné vrátiť späť. Známe ako trvanlivosť.
Model databázy
Údaje sa dajú reprezentovať rôznymi spôsobmi.
- Jednoduché súbory (tzv. ploché súbory): Je to najjednoduchšia forma databázového systému. Všetky údaje sú uložené v súbore v podobe obyčajného textu. Každá informácia môže byť oddelená novým riadkom alebo čiarkou atď.
- Hierarchický model: Údaje sú usporiadané ako stromová štruktúra. Zaujímavé údaje sa nachádzajú v listoch stromu. Vzťahy medzi dátovými položkami sú také, že niektoré položky sú priamo závislé od iných položiek.
- Sieťový model: Na ukladanie údajov sa používajú záznamy a množiny. Podobný hierarchickému modelu, ale má oveľa zložitejšiu štruktúru.
- Vzťahový model: Tento model využíva teóriu množín a predikátovú logiku. Je široko používaný. Údaje vyzerajú ako usporiadané v tabuľkách. Tieto tabuľky sa potom dajú spájať, takže sa z nich dajú vyberať jednoduché dotazy.
- Objektovo orientovaný model: Údaje sú reprezentované vo forme objektov, ako sa používa v objektovo orientovanom programovaní. Môžu priamo komunikovať s používaným jazykom OOP, pretože oba majú rovnakú vnútornú reprezentáciu údajov.
- Objektový relačný model: Je to hybrid objektovo orientovaného modelu a relačného modelu.
- Model NoSQL: Ide o nový druh databázového modelu, ktorý sa v priemysle čoraz viac využíva v oblasti veľkých dát a webových aplikácií v reálnom čase. Údaje v tomto modeli sú uložené ako páry kľúč-hodnota bez prísnej hierarchie ako v iných modeloch. Systémy NoSQL sa označujú aj ako "nielen SQL", pretože neumožňujú používať dotazovacie jazyky podobné štruktúrovanému dotazovaciemu jazyku.
Spôsoby usporiadania údajov
Podobne ako v reálnom živote sa na tie isté údaje možno pozerať z rôznych uhlov pohľadu a možno ich organizovať rôznymi spôsobmi. Pri organizovaní údajov je potrebné zvážiť rôzne veci:
- Každá položka údajov by sa mala ukladať čo najmenej krát. Predstavte si, že slobodná žena je zapísaná v okresných záznamoch, na štátnom oddelení motorových vozidiel, na federálnom oddelení sociálneho zabezpečenia a na oddelení medzinárodných pasov. Ak sa vydá a rozhodne sa zmeniť svoje meno, je potrebné informovať všetky tieto oddelenia. Ak by boli všetky oddelenia prepojené a jej meno by bolo uložené len na jednom mieste, aktualizácia by bola jednoduchá.
- Ak sú údaje uložené vo viacerých rôznych databázach, môžu si protirečiť.
- Tento problém spomaľuje vyhľadávanie údajov. Ak je údajov veľa, tento problém ukladania jedného údaju na mnohých miestach zaberie veľa miesta. V našom príklade boli pre jednu osobu 4 databázy. To bude 8 vykonaných zmien, ak má druhá osoba presne rovnaký problém.
- Ak máte tento problém, na jeho riešenie bola vyvinutá metóda nazvaná normalizácia databázy. V súčasnosti existuje 5 normalizačných foriem. Sú to spôsoby, ako zrýchliť databázu a dosiahnuť, aby údaje zaberali menej miesta.
Súvisiace stránky
Otázky a odpovede
Otázka: Čo je to databáza?
Odpoveď: Databáza je systém na ukladanie a starostlivosť o údaje (akýkoľvek druh informácií). Môže sa používať na triedenie, zmenu alebo obsluhu informácií v nej uložených.
Otázka: Ako ľudia uchovávali údaje pred digitálnymi počítačmi?
Odpoveď: Pred digitálnymi počítačmi sa na ukladanie údajov používali kartotéky, tlačené knihy a iné metódy.
Otázka: Čo je databázový systém?
Odpoveď: Databázový systém je počítačový program na správu elektronických databáz. Môže sa používať na určitú organizáciu údajov.
Otázka: Ako vyzerá "karta" v staromódnej kartotéke?
Odpoveď: V staromódnej kartotéke bola zvyčajne pre každého zamestnanca jedna karta s informáciami, ako je dátum narodenia alebo meno.
Otázka: Ako vyzerá moderný ekvivalent tejto "karty"?
Odpoveď: Moderný ekvivalent tejto "karty" sa zobrazuje skôr na obrazovke než vo fyzickej podobe.
Otázka: Čo je to databázový model?
Odpoveď: Databázový model sa vzťahuje na rôzne spôsoby, akými môže počítač uchovávať informácie na "karte". Najčastejšie používaný model sa nazýva relačný model databázy, ktorý na ukladanie údajov používa vzťahy a množiny.
Otázka: Ako sa bežní používatelia odvolávajú na tieto modely, keď o nich hovoria? Odpoveď: Bežní používatelia budú tieto modely zvyčajne označovať ako "databázové tabuľky", namiesto toho, aby pri diskusii o nich používali technické výrazy, ako sú vzťahy alebo množiny.
Prehľadať