Baze podataka bez magle

Baza i DBMS: tko je za što zadužen

9 min
What you'll learn
  • razlikovati bazu podataka (organizirano spremište) od -a — programa koji izvršava SQL upite i upravlja podacima
  • objasniti put upita „SQL → DBMS → rezultat” i zašto Excel datoteke ne podnose tisuće istodobnih korisnika
  • nabrojati što ti DBMS daje povrh „običnih datoteka”: transakcije, dnevnik za oporavak (), prava pristupa (GRANT), provjere cjelovitosti

1. poglavlje — „Karta arhiva”

Snimka Kotomarketa više nije signal iz mrtvog sektora — leži u karantenskom odjeljku Vault-9, a ispod posljednjeg retka njezina ispisa stoji onaj isti potpis: „K.”. Jutros ti na holoploči zasvijetli novi zapis: „Pristup odobren: popis arhiva. Izdao: modul S.Q.L.” Vrata spremišta odmiču u stranu; iza njih, u jantarnom svjetlu, ravnomjerno bruje poslužiteljski ormari.

QUERY: Prije nego što pročitaš tuđe pamćenje, shvati kako je ustrojeno. Krenimo od onog najvažnijeg: što je ovdje spremište, a tko čuvar.

Baza podataka i DBMS

Baza podataka (BP) organizirano je spremište. U snimci Kotomarketa leže kupci, proizvodi, narudžbe i događaji: ne razasuti po datotekama, nego u jasnoj strukturi — zato ih je moguće čitati i nakon sto šezdeset godina.

No samo spremište ne odgovara na pitanja. Treba ti program koji zna stvarati tablice, zapisivati nove narudžbe, čitati podatke i paziti da se veze ne pokvare. To je (sustav za upravljanje bazama podataka). Primjeri: PostgreSQL, MySQL, ClickHouse. Naša je snimka PostgreSQL baza i govori isti onaj SQL koji je govorila i dok je trgovina bila živa.

Ti napišeš upit u SQL-u → pošalješ ga DBMS-u → DBMS dohvati tražene podatke i vrati rezultat. Excel je dobar za osobnu tablicu, ali ne i za trgovinu u kojoj tisuće korisnika istodobno razgledaju proizvode, oblikuju narudžbe i ostavljaju događaje u sustavu.

Kadet pred ulazom u spremište: između njega i polica pamćenja stoji holografski čuvar-posrednik — DBMS
Arhiv čuva pamćenje, ali na pitanja odgovara samo čuvar: upit ide DBMS-u, i jedino on dodiruje podatke.

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
Svi putovi do podataka vode kroz DBMS: on prima SQL, izvršava ga i čuva cjelovitost baze.

Što DBMS zna, a „obične datoteke” ne mogu

Čini se da bi trgovina mogla živjeti i bez -a: zapisivati narudžbe u CSV ili Excel. Na razini osobne bilježnice tako se i radi — sve dok ne stignu zadaci zbog kojih je DBMS uopće smišljen.

  • Istodobni pristup. U živom Kotomarketu kupci su oblikovali narudžbe istodobno. Dva procesa koja pišu u istu datoteku brišu jedan drugome izmjene; DBMS izvršava izmjene kao transakcije i sam razmrsi usporedne operacije. PostgreSQL to radi mehanizmom : čitatelji ne blokiraju pisce, ni obratno.
  • Oporavak nakon pada. Napajanje je trepnulo usred zapisivanja — datoteka se pokvarila i ne zna se koja se polovica narudžbe stigla spremiti. DBMS najprije zabilježi izmjenu u dnevnik (u PostgreSQL-u — , write-ahead log) i nakon pada je doigra: narudžba je ili zapisana u cijelosti ili nije zapisana uopće.
  • Prava pristupa. Datoteka je otvorena ili u cijelosti ili nikako. U DBMS-u su prava granularna — sve do pojedine tablice:
-- Analitičaru — samo čitanje narudžbi, bez prava na izmjenu
GRANT SELECT ON orders TO analyst;
  • Cjelovitost. DBMS neće primiti narudžbu s cijenom kao tekstom ili s referencom na nepostojećeg kupca: tipovi stupaca i ograničenja provjeravaju se pri svakom zapisivanju. Datoteci je svejedno što u njoj leži.
  • Deklarativna pitanja. „Pokaži narudžbe skuplje od 5000” — jedan redak SQL-a. S datotekom isti posao obavlja program koji netko mora napisati i pritom ne pogriješiti.

je radni posrednik između tebe i podataka: prima SQL upite, izvršava ih i ne da bazi da se pretvori u kaos. U tečaju učimo na PostgreSQL-u — njega često očekuju na analitičkim i backend natječajima. S čuvarom si se sada upoznao. No prije nego što otvori popis naše snimke, QUERY te vodi do susjedne sekcije: registra drugih arhiva stare Zemlje — da shvatiš zašto je baš naš preživio u cijelosti.

Interview question

Pitanje s razgovora za posao: po čemu se baza podataka razlikuje od -a? Zašto aplikacija ne bi pohranjivala podatke jednostavno u datotekama?

Snažan odgovor: baza podataka su organizirani podaci, DBMS je program koji njima upravlja (PostgreSQL, MySQL, ClickHouse). Datoteke ne nude istodobni pristup (usporedna zapisivanja brišu jedno drugo), oporavak nakon pada (DBMS vodi dnevnik i doigra nedovršene izmjene), granularna prava ni provjere cjelovitosti. I najvažnije — DBMS odgovara na deklarativne SQL upite, a datoteku bi trebalo raščlanjivati vlastitim kodom.

Check yourself
Tko je za što zadužen: baza podataka i DBMS?