Andmebaasid ilma uduta

Andmebaas ja DBMS: kes mille eest vastutab

9 min
What you'll learn
  • eristama andmebaasi (korrastatud hoidla) -ist — programmist, mis täidab SQL-päringuid ja haldab andmeid
  • selgitama päringu teekonda „SQL → DBMS → tulemus“ ja seda, miks Exceli failid ei pea vastu tuhandetele samaaegsetele kasutajatele
  • loetlema, mida DBMS annab lisaks „lihtsalt failidele“: tehingud, taastelogi (), ligipääsuõigused (GRANT), terviklikkuse kontrollid

1. peatükk — „Arhiivi kaart“

„Kotomarketi“ tõmmis pole enam signaal surnud sektorist — see lebab Vault-9 karantiiniosakonnas ja selle väljavõtte viimase rea all on ikka seesama allkiri: „K.“. Hommikul süttib su holopaneelil uus kanne: „Luba: arhiivi inventuur. Väljastas: moodul S.Q.L.“ Hoidla uks libiseb kõrvale; selle taga sumisevad merevaigukollases valguses ühtlaselt serveririiulid.

QUERY: Enne kui hakkad lugema kellegi teise mälu, saa aru, kuidas see on üles ehitatud. Alustame kõige tähtsamast: mis on siin hoidla ja kes on hoidja.

Andmebaas ja DBMS

Andmebaas (AB) on korrastatud hoidla. „Kotomarketi“ tõmmises on ostjad, kaubad, tellimused ja sündmused: mitte pillatuna failidesse, vaid arusaadavas struktuuris — seepärast saab neid lugeda isegi sada kuuskümmend aastat hiljem.

Kuid hoidla ise küsimustele ei vasta. Vaja on programmi, mis oskab luua tabeleid, kirja panna uusi tellimusi, lugeda andmeid ja jälgida, et seosed ei katkeks. See on (andmebaasi haldussüsteem). Näited: PostgreSQL, MySQL, ClickHouse. Meie tõmmis on PostgreSQL-i andmebaas ja see räägib sedasama SQL-i nagu poe eluajal.

Sa kirjutad päringu SQL-is → saadad selle DBMS-ile → DBMS võtab välja vajalikud andmed ja tagastab tulemuse. Excel on hea isikliku tabeli jaoks, aga mitte poe jaoks, kus tuhanded kasutajad vaatavad korraga kaupu, vormistavad tellimusi ja jätavad süsteemi sündmusi.

Kursant hoidla sissepääsu juures: tema ja mälusahtlite vahel seisab holograafiline väravavaht-vahendaja — DBMS
Arhiiv hoiab mälu, kuid küsimustele vastab ainult hoidja: päring läheb DBMS-ile ja ainult tema puudutab andmeid.

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
Kõik teed andmeteni viivad läbi DBMS-i: see võtab vastu SQL-i, täidab selle ja kaitseb andmebaasi terviklikkust.

Mida DBMS oskab sellist, mida „lihtsalt failid“ ei suuda

Võib tunduda, et pood saaks hakkama ka ilma -ita: kirjutaks tellimused CSV-sse või Excelisse. Isikliku märkmiku mastaabis nii tehaksegi — kuni tulevad ülesanded, mille jaoks DBMS üldse välja mõeldi.

  • Samaaegne ligipääs. Elavas „Kotomarketis“ vormistasid ostjad tellimusi üheaegselt. Kaks protsessi, mis kirjutavad ühte faili, kustutavad teineteise muudatused üle; DBMS täidab muudatusi tehingutena ja lahutab paralleelsed operatsioonid ise. PostgreSQL teeb seda mehhanismi kaudu: lugejad ei blokeeri kirjutajaid ega vastupidi.
  • Taastumine pärast tõrget. Toide vilkus keset kirjutamist — fail läks katki ja pole teada, kumb pool tellimusest jõudis salvestuda. DBMS fikseerib muudatuse esmalt logis (PostgreSQL-is , write-ahead log) ja pärast tõrget mängib selle lõpuni: tellimus on kas tervikuna kirja pandud või pole üldse kirja pandud.
  • Ligipääsuõigused. Fail on avatud kas täielikult või mitte kuidagi. DBMS-is on õigused granuleeritud — kuni üksiku tabelini välja:
-- Analüütikule — ainult tellimuste lugemine, ilma õiguseta neid muuta
GRANT SELECT ON orders TO analyst;
  • Terviklikkus. DBMS ei võta vastu tellimust, mille hind on tekst, ega viidet olematule ostjale: veergude tüüpe ja piiranguid kontrollitakse igal kirjutamisel. Failil on ükskõik, mis tema sees on.
  • Deklaratiivsed küsimused. „Näita tellimusi, mis kallimad kui 5000“ — üks rida SQL-i. Failiga teeb sama töö programm, mille keegi peab kirjutama ja mitte eksima.

on töökas vahendaja sinu ja andmete vahel: võtab vastu SQL-päringuid, täidab need ega lase andmebaasil kaoseks muutuda. Selles kursuses õpime PostgreSQL-i peal — seda oodatakse sageli analüütika- ja backend-vakantsides. Hoidjaga oled nüüd tuttav. Kuid enne kui avada meie tõmmise inventuur, viib QUERY su naabersektsiooni: vana Maa teiste arhiivide registrini — et mõistaksid, miks just meie oma jäi tervikuna alles.

Interview question

Küsimus vestlusel: mille poolest erineb andmebaas -ist? Miks ei peaks rakendus hoidma andmeid lihtsalt failides?

Tugev vastus: andmebaas on korrastatud andmed, DBMS on programm, mis neid haldab (PostgreSQL, MySQL, ClickHouse). Failid ei anna samaaegset ligipääsu (paralleelsed kirjutamised kustutavad teineteist üle), taastumist pärast tõrget (DBMS peab logi ja mängib lõpetamata muudatused lõpuni), granuleeritud õigusi ega terviklikkuse kontrolle. Ja kõige tähtsam — DBMS vastab deklaratiivsetele SQL-päringutele, faili tuleks aga lahti võtta omaenda koodiga.

Check yourself
Kes mida teeb: andmebaas ja DBMS?