Databáze bez mlhy

Databáze a DBMS: kdo za co odpovídá

9 min
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.

Kadet u vchodu do archivu: mezi ním a regály paměti stojí holografický strážce-prostředník — DBMS
Archiv uchovává paměť, ale na otázky odpovídá jen správce: dotaz jde do DBMS a jedině ona se dotýká dat.

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.

clientDBMSparserplannerexecutordata filesSQL queryresultdatathe client talks to the DBMS, not the files directly
Všechny cesty k datům vedou přes DBMS: přijímá SQL, provádí ho a střeží integritu databáze.

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.

Check yourself
Kdo se čím zabývá: databáze a DBMS?