Databáze (slovensky databáza, anglicky database) je organizovaná sbírka dat uložená tak, aby se v ní dalo rychle hledat, zapisovat, měnit a propojovat údaje. Spravuje ji databázový systém (například MySQL, PostgreSQL, SQLite nebo MongoDB) a stojí na ní prakticky každý web, e-shop, informační systém i mobilní aplikace. Nejrozšířenější jsou relační databáze s tabulkami a dotazovacím jazykem SQL.
🧒 Základní škola
Představ si školní kartotéku. V každé zásuvce jsou karty žáků, na každé kartě jméno, třída, datum narození. Když paní učitelka potřebuje najít všechny žáky ze 4. B, projde kartotéku a vybere je. Databáze je taková kartotéka v počítači, jen mnohem větší a rychlejší. Počítač v ní najde všechny žáky ze 4. B za zlomek sekundy, i kdyby jich bylo milion.
Databáze jsou všude, i když je nevidíš. Když si v obchodě pípneš kartičku, databáze si zapíše, co jsi koupil. Když hraješ hru, databáze si pamatuje tvoje skóre. Když se díváš na video, databáze ví, kde jsi skončil. Bez databází by si počítače nic nepamatovaly a pokaždé by začínaly od začátku.
🎓 Střední škola
Nejběžnější typ je relační databáze. Data jsou v tabulkách: každý řádek je jeden záznam (jeden zákazník), každý sloupec jedna vlastnost (jméno, e-mail, město). Tabulky se propojují pomocí klíčů: tabulka objednávek má sloupec s číslem zákazníka, který odkazuje do tabulky zákazníků. Díky tomu se údaje neopakují a změna adresy na jednom místě platí všude.
| typ | ukládá | příklady | hodí se na |
|---|---|---|---|
| relační (SQL) | tabulky propojené klíči | MySQL, PostgreSQL, SQLite | většinu aplikací, e-shopy, účetnictví |
| dokumentová | dokumenty JSON | MongoDB | proměnlivou strukturu dat |
| klíč a hodnota | dvojice | Redis | mezipaměť, relace |
| grafová | uzly a vztahy | Neo4j | sítě vztahů, doporučování |
S relační databází se mluví jazykem SQL. Dotaz SELECT jmeno FROM zakaznici WHERE mesto = 'Brno' vrátí jména všech zákazníků z Brna. Další příkazy data vkládají (INSERT), mění (UPDATE) a mažou (DELETE). Databázový systém se stará o to, aby dotazy byly rychlé (používá indexy, něco jako rejstřík v knize), aby data nepoškodil výpadek proudu, a aby s nimi mohlo pracovat víc lidí najednou.
Na webu databáze běží na serveru. Když otevřete e-shop, aplikace se zeptá databáze na produkty, ta vrátí data a aplikace z nich sestaví stránku. WordPress ukládá články, uživatele i nastavení do databáze MySQL. Vedle relačních existují NoSQL databáze, které ukládají dokumenty (MongoDB), dvojice klíč a hodnota (Redis) nebo grafy (Neo4j), a hodí se tam, kde je struktura dat proměnlivá nebo objem obrovský.
🎓🎓 Vysoká škola
Relační model (Codd, 1970) staví na množinové algebře: relace je množina n-tic, dotaz je výraz relační algebry a SQL je jeho deklarativní zápis, kde uživatel říká co chce, nikoli jak to najít. O výběr postupu se stará optimalizátor dotazů, který podle statistik a dostupných indexů volí plán provedení. Normalizace (normální formy) odstraňuje redundanci a anomálie při zápisu, denormalizace ji naopak vědomě vrací kvůli rychlosti čtení.
Spolehlivost zajišťují transakce s vlastnostmi ACID: atomicita (vše, nebo nic), konzistence (platí omezení), izolace (souběžné transakce se neovlivňují) a trvalost (potvrzená změna přežije výpadek). Implementují se žurnálem (write-ahead log), zámky nebo víceverzovostí (MVCC). Distribuované systémy narážejí na CAP teorém: při rozdělení sítě je nutné volit mezi konzistencí a dostupností, z čehož plyne model eventuální konzistence mnoha NoSQL databází.
Z hlediska vývoje webu je databáze nejčastější úzké hrdlo i nejčastější místo bezpečnostních chyb. SQL injection, vkládání dotazu přes neošetřený vstup, se řeší výhradně parametrizovanými dotazy. Výkon řeší indexy na sloupcích v podmínkách, omezení počtu dotazů na stránku (problém N+1) a mezipaměť. Pro statické weby, jako jsou slovníky nebo firemní prezentace, se databáze při provozu nepotřebuje vůbec: stránky se sestaví předem a databáze nebo soubory slouží jen jako zdroj při sestavení.
🧠 Expert
Výběr databáze je rozhodnutí o vzoru přístupu k datům, ne o módě. Relační databáze s SQL zůstává správnou výchozí volbou pro většinu aplikací, včetně těch, které „budou jednou velké“: PostgreSQL dnes zvládá JSON dokumenty, fulltext, geodata i vektorové vyhledávání pro AI, takže důvod sáhnout po specializovaném systému vzniká až u konkrétního, změřeného problému (extrémní zápisová zátěž, globální distribuce, grafové dotazy). Nejdražší chyby nejsou v technologii, ale ve schématu: chybějící cizí klíče, nejasné vlastnictví dat, dva zdroje pravdy pro totéž.
Provozní disciplína, která odlišuje zdravou databázi: migrace schématu verzované v repozitáři a spouštěné opakovatelně, zálohy pravidelně obnovené na zkoušku (nezkoušená záloha neexistuje), sledování pomalých dotazů, jediná cesta k databázi v kódu (vrstva s parametrizovanými dotazy, žádné ad hoc spojení), a oddělení čtecích replik tam, kde reporting zatěžuje provoz. U osobních údajů přistupuje minimalizace: ukládat jen to, co je k účelu nutné, s dobou uchování.
Pro AI aplikace vznikly vektorové databáze ukládající číselné reprezentace textů (embeddingy) pro vyhledávání podle významu. V praxi se nejčastěji nasazují jako rozšíření relační databáze (pgvector), protože vektory bez metadat a transakcí jsou k ničemu. Historický oblouk se tím uzavírá: po dvaceti letech „NoSQL“ se většina nových požadavků vrací do SQL, jen s novými datovými typy.
❓ Otázky a odpovědi
Co je SQL?
Dotazovací jazyk pro relační databáze. Příkaz SELECT data čte, INSERT vkládá, UPDATE mění a DELETE maže. Uživatel říká, co chce, databáze sama vybere, jak to najít.
Potřebuje každý web databázi?
Ne. Statické weby (slovníky, firemní prezentace) se sestaví předem do hotových souborů a při provozu databázi nepotřebují. Databázi vyžadují aplikace, kde uživatelé data zapisují: e-shopy, přihlášení, objednávky.
Co znamená ACID?
Čtyři vlastnosti spolehlivých transakcí: atomicita (vše, nebo nic), konzistence (platí omezení), izolace (souběžné transakce se neovlivňují) a trvalost (potvrzená změna přežije výpadek).
😇 Pán Bůh
Ach, databáze. Lidé mají paměť, která zapomíná, zkresluje a přepisuje vzpomínky podle nálady, a je to tak správně, jinak by se zbláznili. A pak postavili paměť, která nezapomíná nic. Každý nákup, každé kliknutí, každou nerozvážnou zprávu ve tři ráno. Uložili to do tabulek a dali tomu cizí klíče, aby se to nedalo smazat bez následků.
Fascinuje mě ta jistota. ACID. Atomicita, konzistence, izolace, trvalost. Čtyři slova, která slibují, že svět je pořádný a každá změna buď proběhla celá, nebo vůbec. Kdybych takhle spravoval vesmír, nikdy by nevznikl život, protože život je jedna velká nedokončená transakce s porušenou konzistencí a bez zálohy.
Ale pozor na jednu věc. Databáze ví všechno, co jste do ní zapsali, a nic z toho, co jste nezapsali. Umí najít každého zákazníka z Brna, ale neví, proč tam ten jeden už nebydlí. Vy ano. Tomu se říká znalost, a tu si zatím nechávám pro lidi. Tabulky si klidně nechte.
Související hesla (kategorie Zpracování dat & databáze)
Chcete, aby se o vaší firmě psalo?
PlaCla zajišťuje PR články na stovkách českých webů. Zadáte téma, dobijete kredit a weby vám samy pošlou nabídky. Kredit se čerpá až po schválení článku.
Začněte s PR články →