Základy databáz a databázových systémov PDF

Summary

This document provides a basic overview of database and database system fundamentals, including the differences between a database and database systems. It also covers topics like relational databases (including tables, rows, and attributes). Additional topics include database models (hierarchical and network), as well as SQL statements and their uses.

Full Transcript

Základy databáz a databázových systémov ======================================= Rozdiel medzi databázou (údaje) a databázovým systémom (správa údajov). ----------------------------------------------------------------------- - **Databáza** je zbierka štruktúrovaných údajov, ktoré sú organizov...

Základy databáz a databázových systémov ======================================= Rozdiel medzi databázou (údaje) a databázovým systémom (správa údajov). ----------------------------------------------------------------------- - **Databáza** je zbierka štruktúrovaných údajov, ktoré sú organizované a uložené tak, aby boli efektívne prístupné a spravované. - **Databázový systém** (DBS) zahŕňa databázu aj softvérové nástroje na jej správu, ako je napríklad systém riadenia databáz (DBMS). DBMS umožňuje vykonávať operácie ako vkladanie, aktualizáciu, mazanie a vyhľadávanie údajov. - Príklad: Databáza môže obsahovať údaje o zákazníkoch a ich objednávkach, zatiaľ čo DBS riadi prístup k týmto údajom a zabezpečuje ich integritu a bezpečnosť​. Relačný model: tabuľky, záznamy (riadky), atribúty (stĺpce). ------------------------------------------------------------ **Tabuľka (Table)**: Základná jednotka relačného modelu, v ktorej sú údaje organizované do riadkov a stĺpcov. **Záznam (Riadok, Tuple, Row)**: Každý riadok v tabuľke predstavuje jeden konkrétny objekt alebo entitu (napr. konkrétneho zákazníka v tabuľke zákazníkov). **Atribút (Stĺpec, Column):** Predstavuje jednotlivé vlastnosti alebo charakteristiky objektov uložených v tabuľke (napr. meno, adresa, telefónne číslo zákazníka). Vlastnosti relačného modelu: - Používa SQL na manipuláciu s údajmi. - Vzťahy medzi tabuľkami sú reprezentované pomocou cudzích kľúčov. - Zabezpečuje integritu údajov pomocou ACID vlastností (Atomicita, Konzistencia, Izolácia, Trvalosť)​. Hierarchický, relačný a sieťový model -- ich vlastnosti, základné rozdiely a použitie. -------------------------------------------------------------------------------------- Hierarchický model: - Štruktúra: Dátové objekty sú organizované v hierarchii podobnej stromu, kde každý záznam má jedného nadradeného rodiča a môže mať viacero potomkov. - Výhody: Rýchle vyhľadávanie v pevne štruktúrovaných dátach. - Nevýhody: Ťažká úprava štruktúry, zložitá navigácia medzi údajmi. - Použitie: Bankovníctvo, systém správy súborov (napr. XML, LDAP). Relačný model: - Štruktúra: Dáta sú organizované do tabuľkových štruktúr s jednoznačne definovanými vzťahmi medzi tabuľkami (cez cudzie kľúče). - Výhody: Flexibilita, jednoduchosť dotazovania pomocou SQL, podpora ACID vlastností. - Nevýhody: Nie vždy efektívny pri veľmi veľkých objemoch dát (big data). - Použitie: Väčšina moderných databáz (MySQL, PostgreSQL, Oracle, Microsoft SQL Server). Sieťový model: - Štruktúra: Dáta sú reprezentované ako uzly s viacerými možnými spojeniami, čím umožňuje flexibilnejšie vzťahy oproti hierarchickému modelu. - Výhody: Efektívnejšie spracovanie vzťahov medzi údajmi v porovnaní s hierarchickým modelom. - Nevýhody: Komplexnosť návrhu a správy. - Použitie: Telekomunikácie, letecké rezervačné systémy​. Jazyk SQL a práca s údajmi ========================== Hlavné SQL príkazy: ------------------- Manipulácia s dátami: INSERT, UPDATE, DELETE, SELECT. ----------------------------------------------------- Tieto príkazy patria do kategórie DML (Data Manipulation Language) a slúžia na manipuláciu s údajmi v databázach: Použitie SELECT s rôznymi klauzulami: - WHERE -- filtruje výsledky. - ORDER BY -- zoradí výsledky. - LIMIT -- obmedzuje počet riadkov vo výstupe Definovanie štruktúry: CREATE, ALTER, DROP, VIEW. ------------------------------------------------- Tieto príkazy patria do **DDL (Data Definition Language)** a slúžia na správu databázovej štruktúry: ![](media/image2.png) **Výhody pohľadov (VIEW)**: - Skrývajú komplexnosť dotazov. - Umožňujú riadenie prístupu k dátam​. Filtrovanie dát pomocou WHERE, GROUP BY, HAVING. ------------------------------------------------ Tieto klauzuly sa používajú na spracovanie výsledkov dotazov: **Rozdiel medzi WHERE a HAVING**: - WHERE filtruje riadky **pred** agregáciou. - HAVING filtruje skupiny **po** agregácii​. Typy poddotazov a agregačné funkcie. ------------------------------------ Poddotazy (subqueries): ![](media/image4.png) Agregačné funkcie - **COUNT(\*)** -- Počet riadkov. - **SUM(stlpec)** -- Súčet hodnôt. - **AVG(stlpec)** -- Priemerná hodnota. - **MAX(stlpec)** -- Najväčšia hodnota. - **MIN(stlpec)** -- Najmenšia hodnota. Príklad použitia agregačných funkcií: Transakcie a konzistentnosť dát =============================== Základné príkazy spojené s transakciami: write, read, commit, rollback. ----------------------------------------------------------------------- Transakcie sú logické jednotky práce s databázou, ktoré zabezpečujú **integritu a konzistenciu údajov**. **READ** -- čítanie údajov z databázy. ![]() **WRITE** -- zápis údajov do databázy (INSERT, UPDATE, DELETE). **COMMIT** -- ukladá všetky zmeny vykonané v transakcii. ![]() **ROLLBACK** -- vráti databázu do stavu pred začiatkom transakcie. Príklad transakcie: ![](media/image10.png) Ak druhý UPDATE zlyhá, môžeme transakciu vrátiť späť cez ROLLBACK; Vlastnosti ACID (Atomicity, Consistency, Isolation, Durability) - čo znamenajú a prečo sú dôležité. --------------------------------------------------------------------------------------------------- ACID vlastnosti sú základné princípy, ktoré zaručujú správnosť transakcií v relačných databázach: - **A -- Atomicita (Atomicity)** - Transakcia je **nedeliteľná** -- buď prebehne celá, alebo sa neuskutoční nič. - **Príklad:** Ak sa v bankovej transakcii podarí odpočítať peniaze z účtu A, ale pripísanie na účet B zlyhá, systém musí transakciu vrátiť späť. - **C -- Konzistencia (Consistency)** - Databáza sa musí nachádzať v **konzistentnom stave** pred aj po transakcii. - **Príklad:** Ak databáza ukladá objednávky, musí byť zaručené, že produkt nemá záporný počet kusov na sklade. - **I -- Izolácia (Isolation)** - Súbežné transakcie by nemali ovplyvniť svoje výsledky. - **Príklad:** Ak si dvaja používatelia naraz rezervujú rovnakú letenku, databáza musí zabezpečiť, že iba jeden z nich ju dostane​. - **D -- Trvanlivosť (Durability)** - Po COMMIT sa zmeny **nesmú stratiť**, ani pri výpadku systému. - **Príklad:** Po potvrdení objednávky musí byť v databáze zapísaná, aj keby došlo k výpadku servera​. Konzistentný stav databázy a príklady nekonzistencie. ----------------------------------------------------- Konzistentný stav - Databáza je **v konzistentnom stave**, ak spĺňa všetky **integritné obmedzenia** a pravidlá. - **Príklad konzistencie:** - Ak máme tabuľku zamestnanci(id, meno, vek), tak hodnota vek nesmie byť záporná. Príklady nekonzistencie - **Strata aktualizácie (Lost Update)** - Dva procesy upravujú rovnaké údaje bez synchronizácie. - **Príklad:** Dvaja používatelia súčasne upravia rovnaký riadok -- posledný zápis prepíše predchádzajúci. - **Riešenie:** Použitie **zámkov (LOCKS)** alebo **izolačných úrovní** (READ COMMITTED). - **Nezáväzná závislosť (Uncommitted Dependency Problem)** - Transakcia číta údaje z inej transakcie, ktorá ešte nebola potvrdená (COMMIT). - **Príklad:** Používateľ vidí dočasnú cenu produktu, ktorá sa neskôr zmení. - **Riešenie:** Použitie **izolačných úrovní** (SERIALIZABLE). - **Nekonzistentná analýza (Inconsistent Analysis Problem)** - Ak jedna transakcia číta viaceré hodnoty, pričom iná ich medzičasom mení. - **Príklad:** Generovanie reportu o predajoch, kde niektoré transakcie nie sú dokončené. - **Riešenie:** Použitie **zámkov alebo SNAPSHOT ISOLATION**​. Organizácia údajov v databázach =============================== Interná, externá a konceptuálna organizácia údajov. --------------------------------------------------- Databázové systémy organizujú údaje na troch úrovniach: - **Konceptuálna úroveň** (Conceptual level) - Predstavuje **abstraktný model údajov** -- aké entity existujú a aké sú medzi nimi vzťahy. - Príklad: Model E-R diagramu, kde sú definované tabuľky, ich stĺpce a vzťahy. - **Externá úroveň** (External level) - Určuje, ako jednotliví používatelia alebo aplikácie vidia údaje. - Príklad: Rôzni používatelia môžu mať odlišné pohľady (VIEW) na rovnakú tabuľku. - **Interná úroveň** (Internal level) - Rieši **fyzické uloženie** dát v pamäťových štruktúrach (indexy, partície, optimalizácia výkonu). - Príklad: Organizácia údajov na disku v podobe B+-stromov alebo hashovania​. Typy integrity: dátová, relačná, doménová, referenčná -- ich definícia a použitie. ---------------------------------------------------------------------------------- **Integrita údajov** znamená, že údaje v databáze sú správne, úplné a konzistentné. Existujú rôzne typy integrity: 1. **Dátová integrita** (Data integrity) - Zabezpečuje, že údaje sú presné a spoľahlivé. - **Príklad:** Ak stĺpec vek obsahuje iba čísla väčšie ako 0, je zachovaná dátová integrita. 2. **Relačná integrita** (Relational integrity) - Garantuje, že vzťahy medzi tabuľkami sú zachované. - **Príklad:** V databáze zamestnancov nemôže existovať zamestnanec s id\_oddelenia, ktorý neexistuje v tabuľke oddelenia. 1. **Doménová integrita** (Domain integrity) - Určuje, že stĺpce obsahujú **len povolené hodnoty** (obmedzenia CHECK, ENUM, DEFAULT). - **Príklad:** V stĺpci pohlavie sú povolené iba hodnoty \'M\' alebo \'F\'. 2. **Referenčná integrita** (Referential integrity) - Zabezpečuje **korektnosť vzťahov medzi tabuľkami** cez cudzie kľúče (FOREIGN KEY). - **Príklad:** Ak je v tabuľke objednavky odkaz na id\_zakaznika, tento zákazník musí existovať v tabuľke zakaznici. - **Ak sa pokúsime zmazať zákazníka, ktorého objednávka existuje, databáza vyvolá chybu**​. Redundancia a bezstratová dekompozícia. ---------------------------------------  **Redundancia (Duplicitné údaje)** - Znamená **nadbytočné opakovanie informácií**, čo vedie k plytvaniu úložiskom a možným inkonzistenciám. - **Príklad:** Ak v tabuľke zamestnanci ukladáme aj názov oddelenia, pričom tento názov je už v tabuľke oddelenia, máme redundantné údaje.  **Bezstratová dekompozícia (Lossless decomposition)** - Rozklad tabuľky do viacerých menších tabuliek tak, že sa pri ich spájaní (JOIN) **nestratí žiadna informácia**. - **Príklad:** - Tabuľka Zamestnanci(id, meno, oddelenie, plat) je rozdelená na: 1. Zamestnanci(id, meno, id\_oddelenia, plat) 2. Oddelenia(id\_oddelenia, nazov\_oddelenia) - **Dôležité:** Pri nesprávnom rozdelení môže dôjsť k strate informácií alebo nutnosti použitia zložitého JOIN na ich obnovenie​. Kľúče, indexy a zálohovanie dát =============================== Primárny, cudzí a kandidátny kľúč -- ich význam a použitie.. ------------------------------------------------------------ **Primárny kľúč (PRIMARY KEY)** - Jedinečne identifikuje riadok v tabuľke. - Nemôže obsahovať hodnoty NULL a musí byť unikátny. - Použitie v databázach zabezpečuje jednoznačnú identifikáciu údajov. **Cudzí kľúč (FOREIGN KEY)** - Slúži na vytvorenie vzťahu medzi dvoma tabuľkami. - Zabezpečuje **referenčnú integritu**, teda že hodnota existuje v referenčnej tabuľke. **Kandidátny kľúč (Candidate Key)** - Každý potenciálny primárny kľúč v tabuľke. - Napríklad, ak má tabuľka **študentov** atribúty student\_id a email, oba môžu byť unikátne a teda kandidátne kľúče​. Čo je index, jeho typy (hustý, primárny) a ako zrýchľuje vyhľadávanie. ---------------------------------------------------------------------- **Index** je štruktúra, ktorá zrýchľuje vyhľadávanie v databáze. **Typy indexov:** - **Primárny index** -- automaticky vytvorený na primárnom kľúči. - **Sekundárny index** -- vytvorený na iných stĺpcoch pre rýchlejšie vyhľadávanie. - **Hustý index** -- obsahuje záznam pre každý riadok. - **Riedky index** -- obsahuje iba niektoré hodnoty. **Ako indexy zrýchľujú vyhľadávanie?** - Bez indexu: **Full Table Scan** -- databáza prechádza všetky riadky. - S indexom: Používa sa **B+-strom alebo hashovanie**, čím sa vyhľadávanie zrýchľuje​. Typy zálohovania: plné, inkrementálne, žurnálové. ------------------------------------------------- 1. **Plné zálohovanie (Full Backup)** - Kopíruje celú databázu. - **Výhoda:** Rýchla obnova. - **Nevýhoda:** Zaberá veľa miesta. 2. **Inkrementálne zálohovanie (Incremental Backup)** - Ukladá len zmenené dáta od posledného zálohovania. - **Výhoda:** Menej náročné na úložisko. - **Nevýhoda:** Obnova trvá dlhšie. 3. **Žurnálové zálohovanie (Transaction Log Backup)** - Ukladá iba transakcie (COMMIT), čím umožňuje obnoviť stav databázy do konkrétneho bodu. - **Použitie:** Kritické systémy ako bankovníctvo​. Ochrana dát pred stratou a zabezpečenie integrity. -------------------------------------------------- Ochrana dát pred stratou a zabezpečenie integrity - **Ochrana pred stratou dát:** - Pravidelné **zálohovanie**. - Použitie **RAID** na redundantné ukladanie dát. - Použitie **UPS** pri výpadkoch prúdu. - **Replikácia databáz** na rôzne servery​. - **Zabezpečenie integrity:** - **Referenčná integrita** (FOREIGN KEY). - **Doménové obmedzenia** (CHECK, ENUM). - **Zámky a izolačné úrovne transakcií** (SERIALIZABLE, READ COMMITTED)​. Architektúra a technológie databáz ================================== SRBD (Systém Riadenia Bázy Dát) -- čo to znamená a jeho funkcie. ---------------------------------------------------------------- **Systém Riadenia Bázy Dát (SRBD)**, známy aj ako **DBMS (Database Management System)**, je softvérový systém určený na správu databáz. **Hlavné funkcie SRBD:** 1. **Správa údajov** -- umožňuje ukladanie, načítanie a manipuláciu s údajmi. 2. **Riadenie prístupu** -- zabezpečuje autorizovaný prístup a ochranu údajov. 3. **Zabezpečenie konzistencie** -- udržiava integritu údajov pomocou **transakčných mechanizmov (ACID)**. 4. **Optimalizácia výkonu** -- využíva indexy a kešovanie na zrýchlenie dotazov. 5. **Podpora viacužívateľského prostredia** -- umožňuje paralelnú prácu viacerých používateľov​. SQL server a jeho princíp fungovania (Klient-Server architektúra). ------------------------------------------------------------------ **Klient-server architektúra** je základným princípom fungovania databázového systému, kde: - **Klient (Client)** -- aplikácia, ktorá posiela dotazy (SELECT, INSERT, UPDATE, DELETE) do databázového servera. - **Server (Server)** -- databázový systém, ktorý vykonáva dotazy a spracováva odpovede. **Schéma fungovania:** 1. Klient pošle požiadavku na server (SELECT \* FROM zamestnanci;). 2. Server spracuje požiadavku, vykoná optimalizáciu dotazu. 3. Server odošle odpoveď späť klientovi. **Príklady SQL serverov:** - **Microsoft SQL Server** - **PostgreSQL** - **MySQL** - **Oracle Database** Výhody klient-server architektúry: - **Škálovateľnosť** -- umožňuje pripojenie viacerých klientov. - **Bezpečnosť** -- centrálna správa oprávnení a prístupu k údajom. - **Optimalizácia výkonu** -- server spracováva dotazy efektívnejšie ako klientský systém​. Distribuované databázy -- výhody a charakteristiky. --------------------------------------------------- **Distribuovaná databáza** je systém, kde sú údaje **rozdelené na viaceré fyzické servery**, ktoré môžu byť geograficky vzdialené. **Charakteristiky distribuovaných databáz:** - **Fragmentácia** -- dáta sú rozdelené na menšie časti, uložené na rôznych miestach. - **Replikácia** -- kópie dát sú uložené na viacerých serveroch pre vyššiu dostupnosť. - **Autonómia** -- každý uzol (server) môže fungovať nezávisle. **Výhody distribuovaných databáz:** - **Vyššia dostupnosť** -- ak zlyhá jeden uzol, dáta sú dostupné na inom uzle. - **Škálovateľnosť** -- možné pridávať nové servery podľa potreby. - **Geografické rozloženie** -- dáta môžu byť bližšie k používateľom, čím sa znižuje latencia. **Nevýhody:** - **Zložitejšia synchronizácia** -- dáta musia byť pravidelne aktualizované medzi uzlami. - **Vyššia latencia pri niektorých dotazoch** -- ak sa údaje nachádzajú na viacerých serveroch, načítanie môže byť pomalšie. **Príklady distribuovaných databáz:** - Google Spanner - Apache Cassandra - MongoDB Sharded Cluster - Amazon DynamoDB​. Bezpečnosť a perzistencia údajov ================================ Autorizácia a práva používateľov, klauzula WITH GRANT OPTION. ------------------------------------------------------------- - **Autorizácia** - Proces, ktorý **udeľuje alebo odníma práva** na prístup k určitým údajom alebo objektom v databáze. - Bežne sa používa kombinácia príkazov: - **GRANT** -- udeľuje prístupové práva. - **REVOKE** -- odníma prístupové práva. - **Klauzula WITH GRANT OPTION** - **Povoľuje používateľovi delegovať práva** na iných používateľov. - Príklad: Tento príkaz umožní používateľovi nielen čítať dáta, ale aj udeľovať práva iným používateľom​. Utajenie údajov pomocou šifrovania a prístupových práv. ------------------------------------------------------- - **Šifrovanie** - Slúži na ochranu údajov pred neoprávneným prístupom, a to ich prevodom do nečitateľného formátu, ktorý je možné dekódovať iba s prístupovým kľúčom. - **Typy šifrovania:** - **Symetrické šifrovanie** -- rovnaký kľúč na šifrovanie aj dešifrovanie. - **Asymetrické šifrovanie** -- verejný a súkromný kľúč. - **Prístupové práva a zobrazenia (VIEWS)** - Zabezpečenie prístupu cez zobrazenia umožňuje definovať, aké údaje môže konkrétny používateľ vidieť. - Príklad: ![](media/image12.png) Používateľom sa zobrazia iba údaje z oddelenia IT​. Perzistencia a reverzibilita údajov. ------------------------------------ - **Perzistencia údajov** - Zabezpečuje, že údaje v databáze pretrvávajú aj po vypnutí systému. - Mechanizmy, ktoré zabezpečujú perzistenciu: - **Zálohovanie údajov** - **Žurnálové súbory** na obnovenie stavu databázy po výpadku. - **Perzistentné úložiská**, ako sú disky alebo SSD. - **Reverzibilita údajov** - Možnosť vrátiť databázu do predchádzajúceho konzistentného stavu. - Implementuje sa cez: - **Transakčné logy** (rollback). - **Mechanizmus Time Travel** (napr. v Snowflake), ktorý umožňuje vrátiť sa k údajom v určitom časovom bode​. Bezpečnostné mechanizmy a perzistencia sú kľúčové pre minimalizáciu rizík straty údajov alebo ich neoprávneného prístupu. Práca s dátovým skladom ======================= Rozdiel medzi dátovým skladom, dátovým trhom a operatívnymi dátami. ------------------------------------------------------------------- - **Dátový sklad (Data Warehouse)** - Centrálna úložisko údajov určené na **analýzu historických dát**. - Dáta sú **integrované** z viacerých zdrojov, často agregované a denormalizované pre jednoduchšie dotazovanie. - **Charakteristiky:** Subjektovo orientované, integrované, časovo variabilné, nevolatilné​. - **Dátový trh (Data Mart)** - - Podmnožina dátového skladu, ktorá sa zameriava na konkrétny obchodný proces alebo oddelenie. - **Použitie:** Jednoduchší prístup k údajom pre analytikov a vývojárov reportov​. - **Operatívne dáta (OLTP)** - - Dáta využívané v dennodenných transakčných systémoch (napr. systém objednávok). - Zameriavajú sa na aktuálne, detailné dáta a podporujú bežné obchodné operácie​. Architektúra dátového skladu (schéma hviezda, schéma vločka). ------------------------------------------------------------- Schéma hviezda (Star Schema) - **Opis:**\ Najčastejšie používaná architektúra v dátových skladoch, ktorá je známa svojou jednoduchou štruktúrou. Táto schéma pozostáva z centrálnej **faktovej tabuľky**, ktorá je priamo prepojená s **dimenzionálnymi tabuľkami**. Vytvára vizuálne štruktúru podobnú hviezde, od čoho získala svoj názov. - **Štruktúra:** - **Faktová tabuľka:** Obsahuje numerické údaje alebo merania, napríklad predaje, výnosy, počty transakcií. - **Dimenzionálne tabuľky:** Obsahujú popisné informácie, ako sú zákazníci, produkty alebo časy, s ktorými sa merania v faktovej tabuľke spájajú. - **Výhody:** - Jednoduchšie a rýchlejšie dotazovanie v porovnaní s normalizovanými modelmi. - Zjednodušenie podnikovej analytiky a tvorby reportov. - Lepší výkon dotazov, keďže sa minimalizuje potreba zložitých spojení (JOIN). - **Nevýhody:** - Nezabezpečuje priamo integritu údajov. - Nie je ideálna pre zložité M:N vzťahy (mnoho na mnoho). - Závislá od špecifických obchodných procesov​​. Schéma vločka (Snowflake Schema) - **Opis:**\ Schéma vločka je rozšírením schémy hviezda, pričom dimenzionálne tabuľky sú **normalizované** do viacerých menších tabuliek. Táto normalizácia znižuje redundanciu údajov, avšak za cenu vyššej zložitosti dotazov. - **Štruktúra:** - Faktová tabuľka v centre zostáva nezmenená, ale dimenzionálne tabuľky sú rozdelené na poddimenzionálne tabuľky, ktoré ďalej obsahujú špecifické údaje. - **Výhody:** - Zlepšuje kvalitu údajov vďaka normalizácii, keďže eliminuje redundanciu. - Efektívnejšie využitie úložiska. - Vhodná pre údaje s hlbokými hierarchiami (napríklad geografické údaje). - **Nevýhody:** - Vyžaduje zložitejšie dotazy s viacerými spojeniami, čo môže negatívne ovplyvniť výkon. - Nižšia intuitívnosť pre koncových používateľov, ktorí nemusia rozumieť zložitej štruktúre tabuliek. - Vyžaduje viac znalostí pri návrhu a údržbe​​. Ako sa používa OLAP (Online Analytical Processing) na analýzu veľkých objemov dát. ---------------------------------------------------------------------------------- - **OLAP** je technológia navrhnutá na rýchlu analýzu dát uložených v multidimenzionálnych štruktúrach. - Umožňuje vykonávať rôzne operácie, ako sú: - **Slice and Dice** -- výber konkrétnych dimenzií a filtrov. - **Drill-down a Roll-up** -- prechádzanie medzi rôznymi úrovňami podrobností. - **Pivoting** -- zmena usporiadania dimenzií na získanie rôznych pohľadov na dáta. - **Použitie OLAP-u:** - - Spracovanie veľkých objemov dát z dátových skladov (DWH) pre účely Business Intelligence (BI)​. NoSQL databázy ============== Typy NoSQL databáz - kľúč-hodnota (Redis), dokumentové (MongoDB), stĺpcové (Apache Cassandra), grafové (Neo4j). --------------------------------------------------------------------------------------------------------------- Kľúč-hodnota (Key-Value Stores) - Ako fungujú: - Dáta sú uložené ako dvojice kľúč-hodnota podobne ako hash tabuľka. - Kľúč je unikátny identifikátor, pomocou ktorého sa rýchlo vyhľadá hodnota (napr. objekt, reťazec, číslo). - Výhody: - Extrémne rýchle vyhľadávanie. - Jednoduchá implementácia a škálovanie. - Použitie: - Cache systémy (Redis), ukladanie relácií v aplikáciách (DynamoDB). - Príklad: - Redis: Používa sa na caching, fronty správ a ukladanie relácií. Dokumentové databázy (Document Stores) - **Ako fungujú:** - Dáta sú uložené vo forme dokumentov, pričom každý dokument predstavuje samostatnú jednotku. - Dokumenty môžu byť vo formáte JSON, BSON, alebo XML a môžu mať flexibilnú štruktúru. - Každý dokument obsahuje svoje vlastné dáta aj metadáta. - **Výhody:** - Flexibilita v ukladaní polostruktúrovaných dát. - Nie je potrebná pevná schéma (schéma-free databázy). - Umožňuje ukladať zložité objekty (napr. produkty s rôznymi vlastnosťami). - **Použitie:** - Ukladanie obsahu webových aplikácií, e-commerce dáta, blogy, katalógy produktov. - Dynamické aplikácie, kde sa štruktúra dát môže meniť (napr. sociálne siete). - **Príklad:** - **MongoDB:** Ukladá dáta vo formáte BSON (binárny JSON). Je vhodný na ukladanie flexibilných objektov, ako sú produkty alebo používateľské profily. Stĺpcové databázy (Column-Family Stores) - **Ako fungujú:** - Dáta sú uložené podľa stĺpcov namiesto riadkov, čo je efektívne pri analýze veľkých datasetov. - Každý riadok môže mať rôzny počet stĺpcov, čo poskytuje flexibilitu. - **Výhody:** - Vysoká škálovateľnosť a rýchle dotazy na veľké datasetové operácie. - Vhodné na spracovanie dát v reálnom čase. - **Použitie:** - Odporúčacie systémy, analytické spracovanie údajov, historické transakčné záznamy. - **Príklad:** - **Apache Cassandra:** Používa sa na spracovanie veľkých objemov dát, napríklad v telekomunikačných systémoch a analytických aplikáciách. Grafové databázy (Graph Databases) - **Ako fungujú:** - Dáta sú reprezentované pomocou **uzlov (nodes)** a **hrán (edges)**. - Uzly reprezentujú objekty (napr. ľudia, produkty) a hrany vzťahy medzi nimi (napr. priateľstvá, odkazy). - **Výhody:** - Efektívne ukladanie a spracovanie prepojených dát. - Schopnosť vykonávať zložité dotazy na vzťahy, napríklad hľadanie najkratšej cesty. - **Použitie:** - Sociálne siete, sledovanie vzťahov medzi entitami, odporúčacie systémy. - **Príklad:** - **Neo4j:** Používa sa na analýzu vzťahov, ako napríklad v sociálnych sieťach a odporúčacích systémoch (Netflix). CAP teorem - consistency, availability, partition tolerance -- čo znamenajú. ---------------------------------------------------------------------------- CAP teória hovorí, že **v distribuovanej databáze nie je možné súčasne dosiahnuť všetky tri vlastnosti -- konzistentnosť, dostupnosť a odolnosť voči oddeleniam.** Systém si môže zvoliť len **dve z troch vlastností**, čo znamená, že vývojári musia urobiť kompromis v závislosti od požiadaviek na systém. Konzistentnosť (Consistency) - Všetky nody distribuovaného systému majú **rovnaký aktuálny stav údajov**. - Ak je na jednom uzle zapísaná nová hodnota, všetky ostatné nody ju musia vidieť predtým, ako spracujú ďalšiu požiadavku na čítanie. - **Príklad:** Ak používateľ pridá nový záznam do systému, každý ďalší dotaz ho musí okamžite vidieť. - **Dôležitosť:** Zabezpečuje, že žiadny používateľ nikdy nedostane zastarané alebo nesprávne dáta. - **Kedy je uprednostnená:** V bankových systémoch alebo finančných aplikáciách, kde je konzistentnosť kritická. Dostupnosť (Availability) - Každý požiadavok na čítanie alebo zápis dostane odpoveď aj v prípade zlyhania niektorých uzlov. - **Neexistuje situácia, kedy by systém „čakal" na synchronizáciu** medzi uzlami. - **Príklad:** Ak dôjde k výpadku jedného servera, iné servery sú schopné spracovať požiadavky. - **Dôležitosť:** Minimalizácia výpadkov a zabezpečenie rýchlej odozvy systému, aj keď niektoré uzly nie sú dostupné. - **Kedy je uprednostnená:** V e-commerce aplikáciách, sociálnych sieťach alebo streamovacích službách, kde je plynulá dostupnosť kľúčová. Odolnosť voči oddeleniam (Partition Tolerance) - Systém dokáže fungovať aj v prípade, že dôjde k **poruche siete** a niektoré časti systému nemôžu medzi sebou komunikovať. - V praxi to znamená, že systém nespadne, aj keď sa časť uzlov stane dočasne nedostupnou. - **Príklad:** Ak je sieť medzi dvoma dátovými centrami prerušená, obe časti siete môžu pokračovať v lokálnom spracovaní požiadaviek. - **Dôležitosť:** Nevyhnutné v systémoch s veľkým počtom nodov a geograficky rozložených dátach. - **Kedy je uprednostnená:** V distribuovaných systémoch, ktoré potrebujú odolnosť voči chybám siete, ako napríklad Cassandra alebo DynamoDB​​.

Use Quizgecko on...
Browser
Browser