Kas yra duomenų bazė ir kaip ji veikia?
Autorius: Domeny.ForSale redakcija Paskelbta
Trumpai: Duomenų bazė – tai sutvarkytas informacijos rinkinys, kuriame galima ieškoti duomenų, juos papildyti ir atnaujinti. Internetinės parduotuvės, bankai ir rezervavimo sistemos duomenų bazėse saugo informaciją apie klientus, produktus ar operacijas. Bazę paprastai valdo speciali programinė įranga, kuri taip pat kontroliuoja prieigos teises ir užtikrina, kad operacijos būtų atliekamos tinkamai.
Duomenų bazė ir jos valdymo programa
Duomenų bazę galima palyginti su gerai sutvarkyta kartoteka. Kiekviena informacija turi apibrėžtą vietą ir formą, todėl norint rasti reikiamą įrašą nereikia peržiūrėti viso rinkinio. Kitaip nei popierinėje kartotekoje, bazėje taip pat galima greitai susieti informaciją, pavyzdžiui, parodyti visus pasirinkto kliento užsakymus.
Pati bazė nėra tas pats, kas duomenų bazių valdymo sistema – programa, skirta duomenims įrašyti, skaityti ir kontroliuoti. Tokių sistemų pavyzdžiai – PostgreSQL, MySQL ir SQLite. Kasdienėje kalboje „duomenų baze“ dažnai vadinamas tiek informacijos rinkinys, tiek jį valdanti programinė įranga, tačiau techniškai tai du skirtingi elementai.
Parduotuvės ar programėlės naudotojas paprastai tiesiogiai su baze nedirba. Jis užpildo formą arba paspaudžia mygtuką, o programa perduoda atitinkamą komandą duomenų bazių valdymo sistemai.
Kaip duomenys tvarkomi ir ieškomi
Reliacinėje duomenų bazėje informacija saugoma lentelėse, kurias galima susieti tarpusavyje. Eilutė, dar vadinama įrašu, apibūdina vieną objektą, pavyzdžiui, produktą. Stulpeliuose nurodomos jo savybės: pavadinimas, kaina ar turimų vienetų skaičius.
Supaprastinta produktų lentelė gali atrodyti taip:
| Produkto identifikatorius | Pavadinimas | Kaina | Turimų vienetų skaičius |
|---|---|---|---|
| 101 | Baltas puodelis | 29 zł | 18 |
| 102 | Tamsiai mėlynas puodelis | 32 zł | 7 |
Pirminis raktas – tai laukas arba laukų rinkinys, leidžiantis vienareikšmiškai atpažinti įrašą. Šiame pavyzdyje tai produkto identifikatorius. Net jei dviejų produktų pavadinimai vienodi, identifikatoriai leidžia juos atskirti.
Atskiroje lentelėje gali būti saugomi užsakymai, o dar kitoje – tų užsakymų eilutės su produktų identifikatoriais ir užsakytais kiekiais. Tokie ryšiai sumažina nereikalingą informacijos dubliavimą. Tačiau tai nereiškia, kad duomenų kopijuoti negalima: užsakymo eilutėje paprastai įrašoma pirkimo metu galiojusi kaina, nes vėlesnis kainoraščio pakeitimas neturėtų pakeisti pardavimo istorijos.
Dirbant su reliacinėmis bazėmis dažnai naudojama SQL – komandų kalba, skirta duomenims skaityti ir keisti. Pavyzdžiui, užklausa gali atrinkti produktus, kurių liko mažiau nei dešimt vienetų. Paiešką gali paspartinti indeksai – papildomos struktūros, veikiančios panašiai kaip knygos dalykinė rodyklė. Tačiau jie užima vietos ir didina duomenų atnaujinimo sąnaudas, todėl jų nekuriama be apribojimų.
Kas vyksta bazėje perkant
Įsivaizduokite parduotuvę, kurioje liko paskutinis produkto vienetas. Du žmonės bando jį nusipirkti beveik vienu metu. Vien parodyti svetainėje skaičių „1“ nepakanka: sistema turi nustatyti, kurią operaciją galima sėkmingai užbaigti.
Tai padeda atlikti transakcija – operacijų grupė, laikoma viena visuma. Užsakymą sukurti ir atsargų likutį sumažinti galima taip, kad būtų patvirtinti abu pakeitimai arba nebūtų įrašytas nė vienas. Tinkamai suprojektuotas transakcijų ir vienalaikės prieigos valdymas leidžia išvengti situacijos, kai tas pats paskutinis vienetas parduodamas dviem žmonėms.
Vis dėlto bazė savaime neužtikrina, kad visa parduotuvė veiks tinkamai. Programuotojas turi teisingai apibrėžti taisykles, pavyzdžiui, neleisti, kad atsargų likutis taptų neigiamas. Mokėjimams išorinėje sistemoje reikia papildomai apdoroti klaidas ir patvirtinimus – mokėjimas netampa vietinės transakcijos dalimi vien dėl to, kad yra susijęs su tuo pačiu pirkimu.
Kuo duomenų bazė skiriasi nuo skaičiuoklės
Skaičiuoklė puikiai tinka rankiniu būdu rengti suvestines, skaičiuoti ir analizuoti duomenis. Jei vienas žmogus tvarko nedidelį biuro įrangos sąrašą, skaičiuoklė gali būti paprastesnis sprendimas nei atskira programa su duomenų baze.
Duomenų bazė ypač praverčia, kai:
- daug žmonių ar programų vienu metu keičia informaciją;
- duomenys turi daug tarpusavio ryšių, pavyzdžiui, klientai, sutartys ir mokėjimai;
- reikia nuosekliai užtikrinti taisyklių laikymąsi, pavyzdžiui, užsakymo numerio unikalumą;
- programa turi automatiškai ir reguliariai skaityti bei įrašyti duomenis.
Pasirinkimą lemia ne vien eilučių skaičius. Net nedidelei rezervavimo sistemai gali reikėti duomenų bazės, nes ji turi neleisti skirti to paties laiko keliems žmonėms. O didelę vienkartinę suvestinę vis dar gali būti patogu analizuoti skaičiuoklėje.
Kaip pasirinkti bazės tipą ir pasirūpinti duomenimis
Ne visose bazėse naudojamos susietos lentelės. NoSQL duomenų bazės – bendras įvairių sprendimų pavadinimas. Jis apima, be kita ko, dokumentines bazes, kurios saugo informaciją apibrėžtos struktūros dokumentuose, ir rakto bei reikšmės bazes, kuriose unikaliam raktui priskiriama reikšmė. Jos savaime nėra greitesnės ar geresnės už reliacines bazes – pasirinkimas priklauso nuo to, kaip informacija bus įrašoma ir skaitoma.
Įprastai programai, skirtai klientams, užsakymams ir atsiskaitymams valdyti, reliacinė bazė dažnai yra tinkamas pradinis pasirinkimas. Jei diegiate paruoštą turinio valdymo sistemą ar parduotuvę, pirmiausia patikrinkite jos gamintojo reikalavimus. Būtent pasirinkta programinė įranga paprastai lemia, kokias duomenų bazių sistemas ir jų versijas galima naudoti.
Nepriklausomai nuo technologijos, būtina riboti prieigos teises, diegti atnaujinimus ir daryti atsargines kopijas. Atsarginė kopija leidžia atkurti duomenis po gedimo ar klaidos, tačiau jos tinkamumą reikia patikrinti atliekant bandomąjį atkūrimą. Vien teiginys, kad kopija „daroma kasdien“, nepatvirtina, jog iš jos pavyks atkurti veikiančią bazę.
Prieš rinkdamiesi įrankį surašykite, kokią informaciją norite saugoti, kas ją keis ir kokių klaidų sistema turi neleisti padaryti. Toks trumpas aprašymas padės įvertinti, ar pakaks skaičiuoklės, paruoštos programos, ar reikės savo sprendimo su duomenų baze.
