Databázy bez hmly

Databáza a DBMS: kto je za čo zodpovedný

9 min
What you'll learn
  • rozlíšiť databázu (organizované úložisko) od — programu, ktorý vykonáva SQL dotazy a spravuje dáta
  • vysvetliť cestu dotazu «SQL → DBMS → výsledok» a prečo hromada excelovských súborov neunesie tisíce súčasných používateľov
  • vymenovať, čo DBMS dáva navyše oproti «obyčajným súborom»: transakcie, obnovovací žurnál (), prístupové práva (GRANT), kontroly integrity

Kapitola 1 — «Mapa archívu»

Snímka «Kotomarketu» už nie je signál z mŕtveho sektora — leží v karanténnom boxe «Vault-9» a pod posledným riadkom jeho výpisu sa skvie stále tá istá značka: «K.». Ráno sa ti na holopaneli rozsvieti nový záznam: «Prístup: súpis archívu. Vydal: modul S.Q.L.» Dvere úložiska sa odsúvajú nabok; za nimi v jantárovom svetle rovnomerne hučia serverové skrine.

QUERY: Skôr než budeš čítať cudziu pamäť, pochop, ako je usporiadaná. Začnime tým hlavným: čo je tu úložisko a kto je strážca.

Databáza a DBMS

Databáza (DB) je organizované úložisko. V snímke «Kotomarketu» ležia zákazníci, tovary, objednávky a udalosti: nie rozsypané v súboroch, ale v zrozumiteľnej štruktúre — práve preto sa dajú čítať aj po stošesťdesiatich rokoch.

Lenže samotné úložisko na otázky neodpovedá. Treba program, ktorý vie vytvárať tabuľky, zapisovať nové objednávky, čítať dáta a dohliadať, aby sa väzby nelámali. To je (systém riadenia bázy dát). Príklady: PostgreSQL, MySQL, ClickHouse. Naša snímka je databáza PostgreSQL a hovorí tým istým jazykom SQL ako za života obchodu.

Napíšeš dotaz v SQL → pošleš ho do DBMS → DBMS vytiahne potrebné dáta a vráti výsledok. Excel je skvelý na osobnú tabuľku, ale nie na obchod, kde tisíce používateľov naraz prezerajú tovary, vytvárajú objednávky a zanechávajú v systéme udalosti.

Kadet pri vchode do úložiska: medzi ním a regálmi pamäti stojí holografický strážca-sprostredkovateľ — DBMS
Archív uchováva pamäť, ale na otázky odpovedá len strážca: dotaz ide k DBMS a len ona sa dotýka dát.

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šetky cesty k dátam vedú cez DBMS: prijíma SQL, vykonáva ho a stráži integritu databázy.

Čo DBMS dokáže a «obyčajné súbory» nie

Zdá sa, že obchod by mohol žiť aj bez : zapisovať objednávky do CSV alebo Excelu. V rozsahu osobného zápisníka sa to tak aj robí — kým neprídu úlohy, kvôli ktorým DBMS vôbec vymysleli.

  • Súbežný prístup. V živom «Kotomarkete» zákazníci vytvárali objednávky naraz. Dva procesy zapisujúce do jedného súboru si navzájom prepisujú zmeny; DBMS vykonáva zmeny ako transakcie a paralelné operácie si rozradí sama. PostgreSQL to robí cez mechanizmus : čítajúci neblokujú zapisujúcich a naopak.
  • Obnova po havárii. Napájanie zablikalo uprostred zápisu — súbor sa poškodil a nevedno, ktorá polovica objednávky sa stihla uložiť. DBMS najprv zaznamená zmenu do žurnálu (v PostgreSQL — , write-ahead log) a po havárii ju dohrá: objednávka je buď zapísaná celá, alebo vôbec nie.
  • Prístupové práva. Súbor je otvorený buď celý, alebo nijako. V DBMS sú práva granulárne — až po jednotlivú tabuľku:
-- Analytikovi — len čítanie objednávok, bez práva ich meniť
GRANT SELECT ON orders TO analyst;
  • Integrita. DBMS neprijme objednávku s cenou v podobe textu ani s odkazom na neexistujúceho zákazníka: typy stĺpcov a obmedzenia sa kontrolujú pri každom zápise. Súboru je jedno, čo v ňom leží.
  • Deklaratívne otázky. «Ukáž objednávky drahšie ako 5000» — jeden riadok SQL. Pri súbore tú istú prácu robí program, ktorý musí niekto napísať a nepomýliť sa.

je pracovitý sprostredkovateľ medzi tebou a dátami: prijíma SQL dotazy, vykonáva ich a nedovolí, aby sa databáza premenila na chaos. V kurze sa učíme na PostgreSQL — často ho čakajú v analytických a backendových pozíciách. So strážcom si sa už zoznámil. No skôr než otvoríme súpis našej snímky, QUERY ťa vedie k susednej sekcii: registru iných archívov starej Zeme — aby si pochopil, prečo prežil celý práve ten náš.

Interview question

Otázka z pohovoru: čím sa líši databáza od ? Prečo by aplikácia nemala ukladať dáta len do súborov?

Silná odpoveď: databáza sú organizované dáta, DBMS je program, ktorý ich spravuje (PostgreSQL, MySQL, ClickHouse). Súbory neumožňujú súbežný prístup (paralelné zápisy si navzájom prepisujú zmeny), obnovu po havárii (DBMS vedie žurnál a dohrá nedokončené zmeny), granulárne práva ani kontroly integrity. A hlavne — DBMS odpovedá na deklaratívne SQL dotazy, kým súbor by si musel rozoberať vlastným kódom.

Check yourself
Kto čo robí: databáza a DBMS?