Toggle menu
Toggle preferences menu
Toggle personal menu
Neprihlásený/á
Your IP address will be publicly visible if you make any edits.

Primárny, cudzí a kandidátny kľúč, čo je to index, typy zálohovania, ochrana dát.


Kľúče v databázach

Kľúče sú základné koncepty v databázach, ktoré zabezpečujú jedinečnosť a integritu údajov.

Primárny kľúč (PRIMARY KEY)

Atribút alebo kombinácia atribútov, ktoré jednoznačne identifikujú každý riadok v tabuľke. Slúži ako hlavný identifikátor záznamov.

Vlastnosti:

  • Musí byť jedinečný pre každý riadok;
  • Nemôže mať hodnotu NULL;

Napríklad:

  • V tabuľke zakaznik môže byť zakaznik_id primárnym kľúčom;

Cudzí kľúč (FOREIGN KEY)

Atribút v jednej tabuľke, ktorý odkazuje na primárny kľúč inej tabuľky (na spojenie údajov z rôznych tabuliek).

Vlastnosti:

  • Umožňuje vytváranie vzťahov medzi tabuľkami;
  • Hodnota cudzieho kľúča musí existovať v primárnom kľúči prepojenej tabuľky (aby bola zachovaná referenčná integrita);

Napríklad:

  • zakaznik_id v tabuľke objednavka je cudzí kľúč odkazujúci na zakaznik_id v tabuľke zakaznik;

Kandidátny kľúč (candidate key)

Atribút alebo kombinácia atribútov, ktoré by mohli slúžiť ako primárny kľúč. Je to identifikácia potenciálnych kandidátov na primárny kľúč.

Je to iba časť z teórie - v databázových systémoch "fyzicky" (v schéme tabuľky) neexistuje.

Vlastnosti:

  • Musí byť jedinečný a nesmie obsahovať hodnoty NULL;
  • Z množiny kandidátnych kľúčov sa vyberá primárny kľúč;

Napríklad:

  • V tabuľke Zákazníci môžu byť ZákazníkID aj Email kandidátne kľúče;

Indexy v databázach

Indexy sú dátové štruktúry, ktoré zlepšujú rýchlosť vyhľadávania a manipulácie s údajmi.

Čo je to index?

Dátová štruktúra, ktorá umožňuje rýchlejší prístup k údajom bez nutnosti prehľadávať celú tabuľku.

Ako funguje?:

  • Vytvára mapu medzi hodnotami v stĺpci a ich umiestnením na disku;
  • Umožňuje priamy prístup k údajom namiesto sekvenčného prehľadávania;
def a():
  return a

Sekvenčné prehľadávanie môže byť napríklad:

hladaj = "bla bla"

for nieco in mnozina: # pre každý prvok v množine
  if nieco == hladaj      # kontrolujeme či je zhodný s tým, čo hľadáme
    return nieco            # ak áno, vrátime tento prvok

Výpočtová zložitosť je lineárna (maximálny čas, za ktorý nájdeme prvok sa mení podľa počtu prvkov v množine): O(n).

Typy indexov

Hustý index (dense index)

Obsahuje záznam pre každý riadok v tabuľke. Umožňuje priamy prístup k akémukoľvek riadku.

Napríklad:

  • Index pre stĺpec zakaznik_id, kde každá hodnota má ukazovateľ na príslušný riadok;

Primárny index (primary index)

Index na primárnom kľúči tabuľky. Je jedinečný a nemôže obsahovať hodnoty NULL. Zrýchľuje dotazy, ktoré hľadajú na základe primárneho kľúča (napríklad: zakaznik_id).

Sekundárny index (secondary index)

Index na stĺpcoch, ktoré nie sú primárnym kľúčom. Zrýchľuje dotazy na základe iných atribútov (napríklad: email).

Typy zálohovania

Zálohovanie slúži na ochranu údajov pred stratou. Používa sa pre periodické zálohy kritických systémov (teda, systémov ktoré musíme vedieť obnoviť čo najskôr, napríklad: Kataster nehnuteľností SR).

Plné zálohovanie (full backup)

Ukladá celú kópiu všetkých údajov a štruktúr databázy.

Výhody:

  • Kompletná kópia umožňuje rýchlu obnovu;

Nevýhody:

  • Veľké nároky na úložisko - preto sa môžu použiť alternatívne spôsoby zálohovania (pozri nižšie);

Inkrementálne zálohovanie (incremental backup)

Zálohuje iba zmeny vykonané od posledného zálohovania (na začiatku musí byť vždy plná záloha, pretože táto záloha je základom pre ďalšie inkrementálne zálohy). Používa sa pre časté zálohovanie veľkých databáz.

Dáta sa dajú obnoviť do určitého bodu v čase (point-in-time recovery). Pre obnovenie najskôr aplikujeme najnovšiu plnú zálohu a následne musíme aplikovať všetky inkrementálne zálohy ktoré sa vykonali od tejto plnej zálohy.

Výhody:

  • Menšie úložiskové nároky (keďže ďalšie zálohy uchovávajú iba zmeny, nie kompletné kópie);
  • Rýchlejšie vytváranie záloh;

Nevýhody:

  • Obnova vyžaduje kombináciu viacerých záloh;

Napríklad:

  • Počiatočná plná záloha bola vykonaná v nedeľu. V pondelok zrealizujeme inkrementálnu zálohu, ktorá skopíruje všetky údaje ktoré sa zmenili od nedele. Ak opäť vykonáme inkrementálnu zálohu v utorok, do zálohy sa zapíšu iba zmeny vykonané od času pondelkovej zálohy.

Diferenciálne zálohovanie (differential backup)

Ukladá všetky zmeny vykonané od posledného plného zálohovania. Pre obnovenie najskôr použijeme najnovšiu plnú zálohu a následne aplikujeme najnovšiu diferenciálnu zálohu.

Diferenciálne zálohovanie berie vždy za základ poslednú plnú zálohu (na rozdiel od inkrementálneho zálohovania, ktoré ukladá zmeny od poslednej zálohy - plnej alebo inkrementálnej).

Výhody:

  • Menšie úložiskové nároky (keďže ďalšie zálohy uchovávajú iba zmeny, nie kompletné kópie);
  • Rýchlejšie vytváranie záloh;
  • Menej záloh na aplikovanie (v porovnaní s inkrementálnym zálohovaním);

Nevýhody:

  • Náročnosť na úložisko (každá diferenciálna záloha obsahuje všetky zmeny od poslednej plnej zálohy, takže môže byť časom veľmi veľká);

Napríklad:

  • V nedeľu vykonáme plnú zálohu. V pondelok sa vykoná diferenciálna záloha, ktorá obsahuje iba zmeny vykonané od nedele. Ak opäť spravíme diferenciálnu zálohu v utorok, bude obsahovať všetky zmeny od nedele, vrátane pondelka (nie iba od pondelka).

Žurnálové zálohovanie (log-based backup)

Zálohuje transakčné žurnály, ktoré zaznamenávajú všetky zmeny v databáze. Používajú ho systémy vyžadujúce vysokú dostupnosť a detailnú obnovu.

Výhody:

  • Umožňuje obnovu do konkrétneho bodu v čase;

Nevýhody:

  • Vyžaduje spracovanie veľkého množstva logov pri obnove;

Napríklad:

  • InnoDB (databázový engine pre MySQL) používa predvolene takzvané "InnoDB log files" (čo je v podstate žurnálové zálohovanie).

Ochrana dát pred stratou

  1. Zálohovanie:
    • Pravidelné vytváranie záloh podľa vhodného typu (plné, inkrementálne, žurnálové).
  2. Redundantné systémy:
    • RAID na diskoch alebo replikácia databáz.
  3. "Failover" a vysoká dostupnosť:
    • Použitie klastrov a sekundárnych databáz.
  4. Monitoring a audit:
    • Sleduje stav systému a zaznamenáva chyby.

Zabezpečenie integrity dát

  1. Integritné pravidlá:
    • Primárne a cudzie kľúče, kontrola doménových obmedzení.
  2. Transakcie a ACID vlastnosti:
    • Zabezpečujú, že operácie sú konzistentné a izolované.
  3. Validácia údajov:
    • Overenie formátov a rozsahov pred uložením.
  4. Práva na prístup:
    • Obmedzenie prístupu k citlivým dátam.