Databáze a DBMS: kdo za co odpovídá
What you'll learn
- rozlišovat databázi (organizované úložiště) od — programu, který provádí SQL dotazy a spravuje data
- vysvětlit cestu dotazu «SQL → DBMS → výsledek» a proč soubory v Excelu neunesou tisíce souběžných uživatelů
- vyjmenovat, co DBMS dává navíc oproti «pouhým souborům»: transakce, žurnál pro obnovu (), přístupová práva (
GRANT), kontroly integrity
Kapitola 1 — «Mapa archivu»
Snímek «Kotomarketu» už není signálem z mrtvého sektoru — leží v karanténním boxu «Archivu-9» a pod posledním řádkem jeho výpisu je pořád tentýž podpis: «K.». Ráno se ti na holopanelu rozsvítí nový záznam: «Přístup povolen: soupis archivu. Vydal: modul S.Q.L.» Dveře archivu se odsouvají stranou; za nimi v jantarovém přísvitu rovnoměrně hučí serverové skříně.
QUERY: Než začneš číst cizí paměť, pochop, jak je postavená. Začneme od základu: co je tady úložiště a kdo je správce.
Databáze a DBMS
Databáze (DB) je organizované úložiště. Ve snímku «Kotomarketu» leží zákazníci, zboží, objednávky a události: ne rozsypané v souborech, ale ve srozumitelné struktuře — proto je lze číst i po sto šedesáti letech.
Samotné úložiště ale na otázky neodpovídá. Je potřeba program, který umí vytvářet tabulky, zapisovat nové objednávky, číst data a hlídat, aby se vazby neporušily. Tomu se říká (systém řízení báze dat). Příklady: PostgreSQL, MySQL, ClickHouse. Náš snímek je databáze PostgreSQL a mluví stejným SQL jako za života obchodu.
Napíšeš dotaz v SQL → pošleš ho do DBMS → DBMS vytáhne potřebná data a vrátí výsledek. Excel je dobrý na osobní tabulku, ale ne na obchod, kde si tisíce uživatelů zároveň prohlížejí zboží, zadávají objednávky a zanechávají v systému události.

Database and DBMS
A database is an organized store. The Kotomarket holds buyers, products, orders, and events — not scattered across files, but in a clear structure. That’s exactly why it can still be read a hundred and sixty years later.
But the store itself doesn’t answer questions. You need a program that can create tables, record new orders, read data, and make sure the links never break. That’s a (database management system). Examples: PostgreSQL, MySQL, ClickHouse. Our snapshot is a PostgreSQL database, and it still speaks the same SQL it did when the shop was alive.
You write a query in SQL → send it to the DBMS → the DBMS fetches the data you asked for and returns the result. Excel is fine for a personal spreadsheet, but not for a shop where thousands of users browse products, place orders, and leave events in the system all at once.
Co DBMS umí a «pouhé soubory» ne
Zdá se, že obchod by mohl fungovat i bez : zapisovat objednávky do CSV nebo Excelu. V měřítku osobního zápisníku se to tak i dělá — dokud nepřijdou úlohy, kvůli kterým DBMS vůbec vznikla.
- Souběžný přístup. V živém «Kotomarketu» zadávali zákazníci objednávky současně. Dva procesy zapisující do jednoho souboru si navzájem přepisují změny; DBMS provádí změny jako transakce a paralelní operace si sama rozplete. PostgreSQL to dělá pomocí mechanismu : čtenáři neblokují zapisující a naopak.
- Obnova po havárii. Napájení blikne uprostřed zápisu — soubor se poškodí a není jasné, která polovina objednávky se stihla uložit. DBMS nejprve zaznamená změnu do žurnálu (v PostgreSQL je to , write-ahead log) a po havárii ji dohraje: objednávka je buď zapsaná celá, nebo vůbec.
- Přístupová práva. Soubor je otevřený buď celý, nebo vůbec. V DBMS jsou práva jemně členěná — až na úroveň jednotlivé tabulky:
-- Analytikovi — jen čtení objednávek, bez práva je měnit
GRANT SELECT ON orders TO analyst;
- Integrita. DBMS nepřijme objednávku s cenou v podobě textu ani s odkazem na neexistujícího zákazníka: typy sloupců a omezení se kontrolují při každém zápisu. Souboru je jedno, co v něm leží.
- Deklarativní otázky. «Ukaž objednávky dražší než 5000» — jeden řádek SQL. Se souborem stejnou práci dělá program, který musí někdo napsat a nesplést se.
je pracovní prostředník mezi tebou a daty: přijímá SQL dotazy, provádí je a nedovolí, aby se z databáze stal chaos. V kurzu se učíme na PostgreSQL — ten se v analytických a backendových pozicích často očekává. Se správcem už ses seznámil. Než ale otevřeme soupis našeho snímku, QUERY tě vede k sousední sekci: do rejstříku jiných archivů staré Země — abys pochopil, proč přežil celý právě ten náš.
Interview question
Otázka z pohovoru: čím se liší databáze od ? Proč by aplikace neměla ukládat data prostě do souborů?
Silná odpověď: databáze jsou organizovaná data, DBMS je program, který je spravuje (PostgreSQL, MySQL, ClickHouse). Soubory neumožňují souběžný přístup (paralelní zápisy si přepisují data), obnovu po havárii (DBMS vede žurnál a dohraje nedokončené změny), jemná práva ani kontroly integrity. A hlavně — DBMS odpovídá na deklarativní SQL dotazy, kdežto soubor by bylo nutné rozebírat vlastním kódem.