DB ir DBVS: kas už ką atsako
What you'll learn
- atskirti duomenų bazę (sutvarkytą saugyklą) nuo DBVS — programos, kuri vykdo SQL užklausas ir valdo duomenis
- paaiškinti užklausos kelią „SQL → DBVS → rezultatas“ ir kodėl „Excel“ failai neatlaiko tūkstančių vienu metu dirbančių naudotojų
- išvardyti, ką DBVS suteikia papildomai prie „tiesiog failų“: transakcijas, atkūrimo žurnalą (), prieigos teises (
GRANT), vientisumo patikras
1 skyrius — „Archyvo žemėlapis“
„Kotomarket“ momentinė kopija jau nebėra signalas iš mirusio sektoriaus — ji guli Vault-9 karantino skyriuje, o po paskutine jos išklotinės eilute vis dar matosi tas pats parašas: „K.“. Rytą tavo holopanelėje sušvyti naujas įrašas: „Leidimas: archyvo aprašas. Išdavė: modulis S.Q.L.“ Saugyklos durys atsislenka į šoną; už jų gintaro spalvos apšvietime tolygiai gaudžia serverių stovai.
QUERY: Prieš skaitydamas svetimą atmintį, suprask, kaip ji sutvarkyta. Pradėkime nuo svarbiausio: kas čia saugykla, o kas saugotojas.
Duomenų bazė ir DBVS
Duomenų bazė (DB) — tai sutvarkyta saugykla. „Kotomarket“ kopijoje guli pirkėjai, prekės, užsakymai ir įvykiai: ne išmėtyti po failus, o aiškia struktūra — todėl juos galima perskaityti net po šimto šešiasdešimties metų.
Bet pati saugykla į klausimus neatsako. Reikia programos, kuri moka kurti lenteles, įrašyti naujus užsakymus, skaityti duomenis ir prižiūrėti, kad ryšiai nesugriūtų. Tai DBVS (duomenų bazių valdymo sistema). Pavyzdžiai: PostgreSQL, MySQL, ClickHouse. Mūsų kopija — PostgreSQL bazė, ir ji kalba ta pačia SQL kalba kaip ir parduotuvei gyvuojant.
Tu rašai užklausą SQL kalba → siunti ją DBVS → DBVS ištraukia reikalingus duomenis ir grąžina rezultatą. „Excel“ tinka asmeninei lentelei, bet ne parduotuvei, kurioje tūkstančiai naudotojų vienu metu žiūri prekes, pateikia užsakymus ir palieka įvykius sistemoje.

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.
Ką DBVS moka tokio, ko negali „tiesiog failai“
Atrodo, parduotuvė galėtų gyvuoti ir be DBVS: rašyti užsakymus į CSV ar „Excel“. Asmeninio bloknoto mastu taip ir daroma — kol neateina užduotys, dėl kurių DBVS ir buvo sugalvota.
- Konkurentinė prieiga. Gyvame „Kotomarket“ pirkėjai pateikdavo užsakymus vienu metu. Du procesai, rašantys į vieną failą, vienas kitam užtrina pakeitimus; DBVS vykdo pakeitimus kaip transakcijas ir pati išskirsto lygiagrečias operacijas. PostgreSQL tai daro per mechanizmą: skaitantieji neblokuoja rašančiųjų, ir atvirkščiai.
- Atkūrimas po gedimo. Maitinimas blykstelėjo įrašymo viduryje — failas sugedo, ir neaišku, kuri užsakymo pusė spėjo išsisaugoti. DBVS pirmiausia užfiksuoja pakeitimą žurnale (PostgreSQL atveju — , write-ahead log) ir po gedimo jį pratęsia: užsakymas arba įrašytas visas, arba neįrašytas visai.
- Prieigos teisės. Failas atviras arba visas, arba niekaip. DBVS teisės yra smulkios — netgi atskiros lentelės lygiu:
-- Analitikui — tik užsakymų skaitymas, be teisės juos keisti
GRANT SELECT ON orders TO analyst;
- Vientisumas. DBVS nepriims užsakymo su kaina-eilute ar su nuoroda į neegzistuojantį pirkėją: stulpelių tipai ir apribojimai tikrinami kiekvieno įrašymo metu. Failui nesvarbu, kas jame guli.
- Deklaratyvūs klausimai. „Parodyk užsakymus brangesnius nei 5000“ — viena SQL eilutė. Su failu tą patį darbą atlieka programa, kurią kažkas turi parašyti ir nesuklysti.
DBVS — darbinis tarpininkas tarp tavęs ir duomenų: priima SQL užklausas, jas vykdo ir neleidžia bazei pavirsti chaosu. Kurse mokomės su PostgreSQL — jo dažnai laukiama analitikos ir backend pozicijose. Su saugotoju jau susipažinai. Bet prieš atverdamas mūsų kopijos aprašą, QUERY veda tave į gretimą skyrių: kitų senosios Žemės archyvų registrą — kad suprastum, kodėl visas išliko būtent mūsiškis.
Interview question
Klausimas iš pokalbio: kuo duomenų bazė skiriasi nuo DBVS? Kodėl programai neverta saugoti duomenų tiesiog failuose?
Stiprus atsakymas: duomenų bazė — sutvarkyti duomenys, DBVS — programa, kuri juos valdo (PostgreSQL, MySQL, ClickHouse). Failai neteikia konkurentinės prieigos (lygiagretūs įrašymai užtrina vienas kitą), atkūrimo po gedimo (DBVS veda žurnalą ir pratęsia nebaigtus pakeitimus), smulkių teisių ir vientisumo patikrų. Ir svarbiausia — DBVS atsako į deklaratyvias SQL užklausas, o failą tektų išnarstyti savo paties kodu.