Datubāzes bez miglas

DB un DBVS: kurš par ko atbild

9 min
What you'll learn
  • atšķirt datubāzi (organizētu glabātavu) no DBVS — programmas, kas izpilda SQL vaicājumus un pārvalda datus
  • izskaidrot vaicājuma ceļu „SQL → DBVS → rezultāts” un kāpēc Excel faili neiztur tūkstošiem vienlaicīgu lietotāju
  • uzskaitīt, ko DBVS dod papildus „vienkāršiem failiem”: transakcijas, atjaunošanas žurnālu (), piekļuves tiesības (GRANT), integritātes pārbaudes

1. nodaļa — „Arhīva karte”

„Kotomarket” momentuzņēmums vairs nav signāls no mirušā sektora — tas atrodas „Vault-9” karantīnas nodalījumā, un zem tā datu kopijas pēdējās rindas joprojām ir tas pats paraksts: „K.”. No rīta tavā holopanelī iedegas jauns ieraksts: „Piekļuve: arhīva apraksts. Izsniedza: modulis S.Q.L.” Glabātavas durvis atvirzās malā; aiz tām dzintarkrāsas izgaismojumā vienmērīgi dūc serveru statīvi.

QUERY: Pirms lasi svešu atmiņu, saproti, kā tā ir uzbūvēta. Sāksim ar galveno: kas šeit ir glabātava un kurš ir glabātājs.

Datubāze un DBVS

Datubāze (DB) ir organizēta glabātava. „Kotomarket” momentuzņēmumā atrodas pircēji, preces, pasūtījumi un notikumi: nevis izmētāti pa failiem, bet saprotamā struktūrā — tāpēc tos var izlasīt pat pēc simt sešdesmit gadiem.

Bet pati glabātava neatbild uz jautājumiem. Vajadzīga programma, kas prot izveidot tabulas, ierakstīt jaunus pasūtījumus, lasīt datus un sekot, lai saites nesabruktu. Tā ir DBVS (datubāzu vadības sistēma). Piemēri: PostgreSQL, MySQL, ClickHouse. Mūsu momentuzņēmums ir PostgreSQL datubāze, un tā runā tajā pašā SQL, ko izmantoja veikala dzīves laikā.

Tu raksti vaicājumu SQL valodā → nosūti to DBVS → DBVS izvelk vajadzīgos datus un atgriež rezultātu. Excel der personīgai tabulai, taču ne veikalam, kurā tūkstošiem lietotāju vienlaikus aplūko preces, noformē pasūtījumus un atstāj notikumus sistēmā.

Kursants pie glabātavas ieejas: starp viņu un atmiņas plauktiem stāv hologrāfisks sargs-starpnieks — DBVS
Arhīvs glabā atmiņu, bet uz jautājumiem atbild tikai glabātājs: vaicājums dodas uz DBVS, un vienīgi tā pieskaras datiem.

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
Visi ceļi pie datiem ved caur DBVS: tā pieņem SQL, izpilda to un sargā datubāzes integritāti.

Ko DBVS prot tādu, ko nespēj „vienkārši faili”

Var šķist, ka veikals varētu iztikt arī bez DBVS: rakstīt pasūtījumus CSV vai Excel failā. Personīga bloknota mērogā tā arī dara — līdz parādās uzdevumi, kuru dēļ DBVS vispār tika izgudrota.

  • Vienlaicīga piekļuve. Dzīvajā „Kotomarket” pircēji noformēja pasūtījumus vienlaikus. Divi procesi, kas raksta vienā failā, pārraksta cits cita izmaiņas; DBVS izpilda izmaiņas kā transakcijas un pati sakārto paralēlās operācijas. PostgreSQL to dara, izmantojot mehānismu: lasītāji nebloķē rakstītājus un otrādi.
  • Atjaunošana pēc avārijas. Barošana nomirgoja ieraksta vidū — fails sabojājies, un nav zināms, kura pasūtījuma puse paspēja saglabāties. DBVS vispirms fiksē izmaiņu žurnālā (PostgreSQL — , write-ahead log) un pēc avārijas to izspēlē līdz galam: pasūtījums vai nu ir ierakstīts pilnībā, vai nav ierakstīts vispār.
  • Piekļuves tiesības. Fails ir atvērts vai nu viss, vai nekā. DBVS tiesības ir granulāras — līdz pat atsevišķai tabulai:
-- Analītiķim — tikai pasūtījumu lasīšana, bez tiesībām tos mainīt
GRANT SELECT ON orders TO analyst;
  • Integritāte. DBVS nepieņems pasūtījumu ar cenu-tekstu vai ar atsauci uz neeksistējošu pircēju: kolonnu tipi un ierobežojumi tiek pārbaudīti pie katra ieraksta. Failam ir vienalga, kas tajā glabājas.
  • Deklaratīvi jautājumi. „Parādi pasūtījumus dārgākus par 5000” — viena SQL rinda. Ar failu to pašu darbu veic programma, kas kādam jāuzraksta un nedrīkst kļūdīties.

DBVS ir darba starpnieks starp tevi un datiem: pieņem SQL vaicājumus, izpilda tos un neļauj datubāzei pārvērsties haosā. Šajā kursā mēs mācāmies ar PostgreSQL — to bieži sagaida analītikas un backend vakancēs. Ar glabātāju tu nu esi iepazinies. Bet pirms atvērt mūsu momentuzņēmuma aprakstu, QUERY ved tevi uz blakus sekciju: vecās Zemes citu arhīvu reģistru — lai tu saprastu, kāpēc nesabojāts saglabājies tieši mūsējais.

Interview question

Jautājums no darba intervijas: ar ko datubāze atšķiras no DBVS? Kāpēc lietotnei nevajadzētu glabāt datus vienkārši failos?

Spēcīga atbilde: datubāze ir organizēti dati, DBVS ir programma, kas tos pārvalda (PostgreSQL, MySQL, ClickHouse). Faili nedod vienlaicīgu piekļuvi (paralēli ieraksti pārraksta cits citu), atjaunošanu pēc avārijas (DBVS uztur žurnālu un izspēlē līdz galam nepabeigtās izmaiņas), granulāras tiesības un integritātes pārbaudes. Un galvenais — DBVS atbild uz deklaratīviem SQL vaicājumiem, bet failu nāktos parsēt ar paša rakstītu kodu.

Check yourself
Kurš ar ko nodarbojas: datubāze un DBVS?