Bazy danych bez tajemnic

Baza danych i DBMS: kto za co odpowiada

9 min
What you'll learn
  • odróżniać bazę danych (uporządkowany magazyn) od — programu, który wykonuje zapytania SQL i zarządza danymi
  • wyjaśniać drogę zapytania „SQL → DBMS → wynik” oraz to, dlaczego pliki Excela nie wytrzymują tysięcy jednoczesnych użytkowników
  • wymieniać, co DBMS daje ponad „zwykłe pliki”: transakcje, dziennik odzyskiwania (), prawa dostępu (GRANT), kontrolę spójności

Rozdział 1 — „Mapa archiwum”

Migawka „Kotomarketu” nie jest już sygnałem z martwego sektora — leży w komorze kwarantanny Vault-9, a pod ostatnią linijką jej zrzutu wciąż widnieje ten sam podpis: „K.”. Rano na twoim holopanelu zapala się nowy wpis: „Dostęp przyznany: inwentarz archiwum. Wydał: moduł S.Q.L.” Drzwi magazynu odsuwają się na bok; za nimi, w bursztynowym świetle, równo szumią serwerowe szafy.

QUERY: Zanim zaczniesz czytać cudzą pamięć, zrozum, jak jest zbudowana. Zacznijmy od najważniejszego: co jest magazynem, a kto strażnikiem.

Baza danych i DBMS

Baza danych to uporządkowany magazyn. W migawce „Kotomarketu” są kupujący, towary, zamówienia i zdarzenia: nie luzem w plikach, lecz w czytelnej strukturze — dlatego można je odczytać nawet po stu sześćdziesięciu latach.

Sam magazyn nie odpowiada jednak na pytania. Potrzebny jest program, który potrafi tworzyć tabele, zapisywać nowe zamówienia, czytać dane i pilnować, żeby powiązania się nie zerwały. To (system zarządzania bazami danych). Przykłady: PostgreSQL, MySQL, ClickHouse. Nasza migawka to baza PostgreSQL i używa tego samego SQL-a, którym sklep posługiwał się za życia.

Piszesz zapytanie w SQL → wysyłasz je do DBMS → DBMS wydobywa potrzebne dane i zwraca wynik. Excel sprawdza się jako osobisty arkusz, ale nie jako silnik sklepu, w którym tysiące użytkowników jednocześnie oglądają towary, składają zamówienia i zostawiają po sobie zdarzenia w systemie.

Kursant przy wejściu do magazynu: między nim a regałami pamięci stoi holograficzny strażnik-pośrednik — DBMS
Archiwum przechowuje pamięć, ale na pytania odpowiada strażnik: zapytanie trafia do DBMS i dopiero on dotyka danych.

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
Wszystkie drogi do danych prowadzą przez DBMS: przyjmuje SQL, wykonuje go i pilnuje spójności bazy.

Co DBMS potrafi, czego nie potrafią „zwykłe pliki”

Może się wydawać, że sklep mógłby działać bez : zapisywać zamówienia do CSV albo Excela. W skali osobistego notesu to działa — dopóki nie pojawią się zadania, dla których DBMS-y w ogóle powstały.

  • Dostęp współbieżny. W żywym „Kotomarkecie” kupujący składali zamówienia jednocześnie. Dwa procesy zapisujące do jednego pliku potrafią nadpisać sobie nawzajem zmiany; DBMS wykonuje zmiany jako transakcje i sam porządkuje operacje równoległe. PostgreSQL robi to za pomocą mechanizmu : czytający nie blokują piszących i odwrotnie.
  • Odzyskiwanie po awarii. Zasilanie mignęło w połowie zapisu — plik się uszkodził i nie wiadomo, która część zamówienia zdążyła się zapisać. DBMS najpierw utrwala zmianę w dzienniku (w PostgreSQL — , write-ahead log), a po awarii ją odtwarza: zamówienie jest zapisane w całości albo nie ma go wcale.
  • Prawa dostępu. Plik jest dostępny w całości albo wcale. W DBMS prawa są szczegółowe — aż do pojedynczej tabeli:
-- Analitykowi — tylko odczyt zamówień, bez prawa ich zmieniać
GRANT SELECT ON orders TO analyst;
  • Spójność. DBMS nie przyjmie zamówienia z ceną zapisaną jako tekst ani z odwołaniem do nieistniejącego kupującego: typy kolumn i ograniczenia są sprawdzane przy każdym zapisie. Plikowi jest obojętne, co w nim leży.
  • Deklaratywne pytania. „Pokaż zamówienia droższe niż 5000” — jedna linijka SQL. Przy plikach tę samą pracę musiałby wykonać program, który ktoś musi napisać i którego ktoś musi nie zepsuć.

to roboczy pośrednik między tobą a danymi: przyjmuje zapytania SQL, wykonuje je i nie pozwala bazie zamienić się w chaos. W kursie uczymy się na PostgreSQL — często pojawia się w wymaganiach dla analityków i backendowców. Ze strażnikiem już się poznałeś. Zanim jednak otworzymy inwentarz naszej migawki, QUERY prowadzi cię do sąsiedniej sekcji: rejestru innych archiwów starej Ziemi — żeby było jasne, dlaczego w całości ocalało właśnie nasze.

Interview question

Pytanie z rozmowy kwalifikacyjnej: czym baza danych różni się od ? Dlaczego aplikacja nie powinna przechowywać danych po prostu w plikach?

Mocna odpowiedź: baza danych to uporządkowane dane, a DBMS to program, który nimi zarządza (PostgreSQL, MySQL, ClickHouse). Pliki nie zapewniają dostępu współbieżnego (równoległe zapisy nadpisują się nawzajem), odzyskiwania po awarii (DBMS prowadzi dziennik i odtwarza niedokończone zmiany), szczegółowych praw ani kontroli spójności. Co równie ważne, DBMS odpowiada na deklaratywne zapytania SQL, podczas gdy plik trzeba by parsować własnym kodem.

Check yourself
Kto czym się zajmuje: baza danych i DBMS?