Перейти до змісту
Головна " IT ir technologijos " Duomenų bazių technologijos

Duomenų bazių technologijos

Kas iš tikrųjų yra duomenų bazė ir kam jos reikia

Įsivaizduokite biblioteką, kurioje knygos sumestos į krūvą be jokios tvarkos. Norėdami rasti reikiamą informaciją, turėtumėte perversti šimtus ar net tūkstančius knygų. Būtent tokia būtų mūsų skaitmeninė realybė be duomenų bazių. Duomenų bazė – tai organizuota informacijos saugykla, kur kiekvienas duomuo turi savo vietą ir gali būti greitai surastas.

Paprasčiausiu atveju duomenų bazė primena gerai sutvarkytą Excel lentelę. Tačiau tikrosios duomenų bazės yra nepalyginamai galingesnės – jos gali vienu metu apdoroti milijonus užklausų, saugoti petabaitus informacijos ir užtikrinti, kad jūsų banko sąskaitos likutis visada būtų tikslus, net jei tūkstančiai žmonių tuo pačiu metu naudojasi sistema.

Kiekviena programa, kurią naudojate – nuo Facebook iki internetinės parduotuvės, nuo ligoninės registratūros iki oro uosto skrydžių valdymo sistemos – savo širdyje turi duomenų bazę. Be jų šiuolaikinis pasaulis tiesiog sustotų.

Kaip atsirado duomenų bazių technologijos

Prieš kompiuterinę erą duomenys buvo saugomi popieriuose, kortelėse ir bylose. 1960-aisiais, kai kompiuteriai pradėjo plisti, atsirado poreikis sistemingai saugoti informaciją magnetinėse juostose ir diskuose. Pirmosios duomenų bazės buvo hierarchinės – duomenys buvo organizuoti kaip medžio šakos. Tai veikė, bet buvo labai nelanksčios sistemos.

Tikroji revoliucija įvyko 1970 metais, kai IBM mokslininkas Edgar Codd paskelbė straipsnį apie reliacinį duomenų bazių modelį. Jo idėja buvo paprasta, bet geniali – organizuoti duomenis lentelėse, kur kiekviena eilutė yra įrašas, o stulpeliai – savybės. Svarbiausia, kad šias lenteles galima susieti tarpusavyje per specialius raktus.

Pirmoji komercinė reliacinė duomenų bazė Oracle pasirodė 1979 metais. Netrukus atsirado ir kiti žaidėjai – IBM DB2, Microsoft SQL Server, MySQL. Šios sistemos dominavo rinkoje kelis dešimtmečius ir tebėra labai populiarios.

XXI amžiaus pradžioje, kai interneto kompanijos pradėjo kaupti milžiniškus duomenų kiekius, tradicinės reliacinės duomenų bazės pasiekė savo ribas. Taip atsirado NoSQL judėjimas – naujos duomenų bazių technologijos, skirtos darbui su didžiuliais duomenų srautais ir paskirstytomis sistemomis.

Reliacinės duomenų bazės – klasika, kuri nesensta

Reliacinės duomenų bazės veikia pagal gana aiškų principą. Tarkime, kuriate internetinę parduotuvę. Jums reikia saugoti informaciją apie klientus, produktus ir užsakymus. Vietoj vienos chaotiškos lentelės, kuriate tris atskiras:

Klientai: ID, vardas, pavardė, el. paštas, adresas
Produktai: ID, pavadinimas, kaina, likutis
Užsakymai: ID, kliento_ID, produkto_ID, kiekis, data

Matote tuos ID laukus? Tai ir yra tie “raktai”, kurie leidžia susieti lenteles. Kai klientas užsako produktą, sistema sukuria naują įrašą užsakymų lentelėje, kuris nurodo į konkretų klientą ir konkretų produktą. Jei vėliau reikia pakeisti kliento adresą, keičiate tik vienoje vietoje – klientų lentelėje.

Duomenims valdyti naudojama SQL (Structured Query Language) kalba. Tai standartizuota kalba, kuri leidžia kurti, skaityti, atnaujinti ir trinti duomenis. Pavyzdžiui, norėdami gauti visus užsakymus, kurių suma viršija 100 eurų, parašytumėte:

SELECT * FROM Užsakymai WHERE suma > 100

Reliacinių duomenų bazių stiprybė – ACID principai (Atomicity, Consistency, Isolation, Durability). Tai garantuoja, kad jūsų duomenys visada bus korektiški. Pavyzdžiui, kai pervedate pinigus iš vienos sąskaitos į kitą, arba abi operacijos įvyksta sėkmingai, arba nė viena. Negali būti situacijos, kai pinigai nurašyti, bet nepridėti gavėjui.

NoSQL – kai reikia greičio ir lankstumo

Apie 2000-uosius metais kompanijos kaip Google, Amazon ir Facebook susidūrė su problema – tradicinės duomenų bazės negalėjo apdoroti milijardų užklausų per dieną. Reikėjo naujo požiūrio.

NoSQL duomenų bazės atsisakė kai kurių reliacinių bazių principų mainais už greitį ir mastelio galimybes. Yra keletas pagrindinių NoSQL tipų:

Dokumentų bazės (MongoDB, CouchDB) saugo duomenis kaip JSON tipo dokumentus. Vietoj griežtos lentelių struktūros, kiekvienas įrašas gali turėti skirtingus laukus. Tai puikiai tinka turiniui, kuris dažnai keičiasi – pvz., produktų katalogams, kur skirtingi produktai turi skirtingas savybes.

Raktas-reikšmė bazės (Redis, DynamoDB) veikia kaip milžiniška hash lentelė. Labai greitai randa duomenis pagal raktą, todėl idealiai tinka spartinančiajai atmintinei (cache) ir sesijų valdymui.

Stulpelinės bazės (Cassandra, HBase) optimizuotos didelių duomenų kiekių analizei. Vietoj eilučių skaitymo, jos skaito stulpelius, kas leidžia žaibiškai suskaičiuoti, pvz., visų klientų vidutinį amžių iš milijonų įrašų.

Grafų bazės (Neo4j, ArangoDB) specializuojasi ryšių tarp duomenų saugojime. Puikiai tinka socialiniams tinklams, rekomendacijų sistemoms ar logistikos optimizavimui.

NoSQL bazės dažniausiai aukoja ACID garantijas mainais už greitį ir galimybę lengvai plėstis horizontaliai – pridedant daugiau serverių vietoj galingesnio vieno serverio.

Kaip duomenų bazė iš tikrųjų veikia viduje

Kai siunčiate užklausą į duomenų bazę, vyksta daug procesų, kurių paprastai nematote. Pirmiausia užklausa patenka į užklausų analizatorių, kuris patikrina, ar sintaksė teisinga ir ar turite teisę vykdyti šią operaciją.

Toliau užklausa patenka į optimizatorių – tai tarsi GPS navigacija duomenims. Yra daugybė būdų, kaip gauti tą pačią informaciją, bet kai kurie yra daug greitesni. Optimizatorius analizuoja statistiką apie duomenis ir pasirenka efektyviausią kelią.

Pats duomenų saugojimas vyksta saugojimo variklyje. Duomenys fiziškai guli diske specialiose struktūrose, vadinamose B-medžiais arba LSM-medžiais. Tai ne atsitiktinė krūva failų – duomenys organizuoti taip, kad būtų galima greitai rasti bet kokią informaciją.

Indeksai – tai kaip knygos turinys. Vietoj to, kad skaitytumėte visą knygą ieškodami konkretaus žodžio, pažiūrite į rodyklę gale. Duomenų bazėje indeksas – tai papildoma struktūra, kuri nurodo, kur tiksliai yra reikalingi duomenys. Indeksai labai paspartina paiešką, bet užima papildomą vietą ir lėtina įrašymo operacijas.

Transakcijų valdiklis užtikrina, kad vienu metu vykstančios operacijos nesupainioja duomenų. Tai sudėtinga problema – įsivaizduokite, kad du žmonės vienu metu bando nusipirkti paskutinį bilieto į koncertą. Sistema turi užtikrinti, kad jį gautų tik vienas.

Praktiniai patarimai pasirenkant duomenų bazę

Daugelis pradedančiųjų klausia: “Kurią duomenų bazę turėčiau naudoti savo projektui?” Atsakymas, kaip ir dažnai technologijose – priklauso.

Jei kuriate tradicinę verslo programą – apskaitos sistemą, CRM, ERP ar bet ką, kur svarbūs tikslūs duomenys ir sudėtingi ryšiai tarp jų, rinkitės reliacinę duomenų bazę. PostgreSQL yra puikus nemokamas pasirinkimas su galingomis galimybėmis. MySQL/MariaDB – taip pat patikimi ir plačiai naudojami. Jei jau naudojate Microsoft ekosistemą, SQL Server integruosis sklandžiai.

Kai kuriate turinio valdymo sistemą, katalogą ar programą, kur duomenų struktūra dažnai keičiasi, MongoDB bus lankstesnis pasirinkimas. Dokumentų bazės leidžia greitai keisti duomenų modelį be sudėtingų migracijų.

Jei jums reikia spartinančiosios atmintinės arba sesijų saugojimo, Redis yra beveik standartinis pasirinkimas. Jis dirba iš operatyviosios atminties, todėl yra neįtikėtinai greitas.

Dideliems projektams su milijonais vartotojų gali prireikti Cassandra ar DynamoDB, kurios lengvai plečiasi iki šimtų serverių. Tačiau jos sudėtingesnės valdyti, todėl pradėkite nuo jų tik jei tikrai reikia tokio masto.

Svarbu suprasti, kad nebūtina naudoti tik vieną duomenų bazę. Daugelis šiuolaikinių sistemų naudoja kelias – reliacinę pagrindiniam turiniui, Redis spartinančiajai atmintinei, Elasticsearch paieškai. Tai vadinama poliglot persistence.

Duomenų bazių saugumas ir atsarginės kopijos

Duomenys yra vienas vertingiausių bet kurios organizacijos turto. Jų praradimas gali reikšti verslo žlugimą. Todėl saugumas ir atsarginės kopijos nėra pasirenkama funkcija – tai būtinybė.

Pirmiausia, niekada nesaugokite slaptažodžių tiesiogiai. Naudokite hash funkcijas kaip bcrypt ar Argon2. Net jei kažkas gautų prieigą prie duomenų bazės, negalėtų perskaityti slaptažodžių.

Ribokite prieigą. Ne kiekviena programa ar vartotojas turėtų turėti pilnas teises į duomenų bazę. Sukurkite atskirus vartotojus su minimaliomis reikalingomis teisėmis. Jei programai reikia tik skaityti duomenis, neduokite jai teisės trinti ar keisti.

Šifruokite jautrius duomenis. Asmens duomenys, mokėjimo informacija, sveikatos įrašai – visa tai turėtų būti šifruota tiek saugojimo, tiek perdavimo metu.

Dėl atsarginių kopijų – turėkite bent tris: vieną tame pačiame serveryje (greitam atkūrimui), vieną kitame serveryje (jei sugenda diskas), ir vieną visai kitoje vietoje, idealiu atveju kitame mieste ar šalyje (jei įvyktų gaisras ar kita katastrofa).

Reguliariai testuokite atkūrimą. Atsarginė kopija, kurios negalite atkurti, yra bevertė. Kas kelis mėnesius praktikuokitės atkurdami duomenis iš atsarginių kopijų.

Ateities tendencijos ir kas laukia priekyje

Duomenų bazių pasaulis niekada nesustoja. Pastaraisiais metais matome kelias įdomias tendencijas.

Debesų duomenų bazės tampa vis populiaresnės. Vietoj to, kad patys valdytumėte serverius, galite naudoti AWS RDS, Google Cloud SQL ar Azure Database. Jie automatiškai tvarko atsargines kopijas, atnaujinimus ir mastelio keitimą. Tai ypač patogu mažoms komandoms, kurios neturi dedikuotų duomenų bazių administratorių.

Serverless duomenų bazės eina dar toliau – mokate tik už tai, ką naudojate. Kai niekas nenaudoja jūsų programos, nemokate nieko. Kai staiga ateina didelis srautas, sistema automatiškai plečiasi. AWS Aurora Serverless ir Azure Cosmos DB yra šios kategorijos pavyzdžiai.

Dirbtinis intelektas pradeda padėti optimizuoti duomenų bazes. Kai kurios sistemos automatiškai kuria indeksus, nustato problemas ir net prognozuoja, kada reikės daugiau resursų.

Laiko eilučių duomenų bazės (InfluxDB, TimescaleDB) tampa svarbios IoT ir monitoringo srityse. Jos optimizuotos duomenims, kurie ateina su laiko žymomis – temperatūros matavimai, serverių metrika, akcijų kainos.

Blockchain ir paskirstytos duomenų bazės žada decentralizuotą duomenų saugojimą, kur nė viena organizacija nekontroliuoja visų duomenų. Nors technologija dar bręsta, ji gali pakeisti kai kurias sritis, ypač ten, kur svarbus pasitikėjimas ir skaidrumas.

Įdomu tai, kad nepaisant visų naujovių, reliacinės duomenų bazės, kurių pagrindai sukurti prieš 50 metų, vis dar dominuoja daugelį sričių. Kartais senos, gerai išbandytos technologijos yra geriausias pasirinkimas. Naujovės papildo, bet nevisada pakeičia tai, kas veikia.

Duomenų bazių technologijos toliau vystosi, prisitaikydamos prie didėjančių duomenų kiekių, spartėjančių reikalavimų ir naujų panaudojimo atvejų. Nesvarbu, ar kuriate mažą asmeninį projektą, ar didelę korporacinę sistemą – suprasti, kaip veikia duomenų bazės, padės priimti geresnius sprendimus ir sukurti patikimesnes programas.