Põhitõdesid andmebaasidest

Allikas: Lambda

Andmebaasisüsteemid on valmis-programmeeritud abivahendid programmeerimiseks. Tuntumad suured kommertssüsteemid on Oracle, IBM-i DB2, Microsofti SQL-server ja Access. Tuntumad vabavarasüsteemid on PostgreSQL, MySQL, BSDDB.


Kas ja milleks andmebaasisüsteem?

Valmistehtud andmebaasisüsteemi kasutamine ei ole ühegi programmi valmistegemise juures otseselt hädavajalik, kuid tihtipeale aitab selline süsteem programmi palju kiiremini teha ja kokkuvõttes tuleb tulemus parem, kui kõik ise programmeerides.

Tüüpilise andmebaasisüsteemi põhi-idee on pakkuda programmeerijale teek (st. valmisprogrammeeritud funktsioonid) ja enamasti ka spetsiaalne keel (enamlevinud keel on SQL) suure hulga andmete (stringid, numbrid jne) salvestamiseks kettale ja nende kiireks otsimiseks kettalt.

Üks lihtsamaid viise on hoida andmeid lihtsalt failides, tulpade kaupa. Umbes nii hoiab andmeid näiteks MySQL. Selleks, et andmeid rutem failidest leida ja uusi andmeid lihtsamalt sisestada, koostavad ja kasutavad süsteemid hulga lisa-andmestruktuure, nagu näiteks indeksid (sisaldavad infot sorteerimise kohta, nii et pidevalt poleks vaja kõike üle sorteerida) jne.

Praktikas ei ole nö "tõsist" andmebaasisüsteemi alati vaja, sest andmete hulk on enamuses süsteemides väike ja süsteemil kasutajaid vähe.

Sel juhul saab andmeid sisestada ja otsida väga edukalt ka käsitsi, näiteks tekstiredaktori või MS Exceli abil. Samuti, kui on oodata, et andmeid on vähe, saab andmeid edukalt otsida ka nii, et:

  • kõigepealt loeme kettalt kõik andmed mällu
  • siis otsime ja sorteerime andmeid ilma ketta poole pöördumata.

Mälus (reeglina massiivis) olevaid andmeid saab sorteerida ja otsida päris kiirelt: mälu on tuhandeid kordi kiirem, kui ketas.


Suured andmebaasisüsteemid

"Suurte" süsteemide peamine fookus on nimelt olukorral, kus andmeid on palju ja nad kõik ei mahu korraga mällu ära. Sel juhul tuleb paratamatult korraga hoida mälus vaid väike osa andmetest, ning siis läheb kõik tegevus keerukaks, sest süsteem püüab automaatselt otsustada, mida ja kui palju oleks korraga mõttekas mälus hoida, kuidas pidevaid kettalt lugemisi/kirjutamisi optimeerida jne jne.

Teine oluline "suurte" süsteemide idee on võimaldada andmehulka kettal korraga kasutada paljudel programmidel (mõni kirjutab, teine samal ajal otsib jne), nii et selle juures kõik segi ei läheks.

Andmebaasisüsteemide sisemised teegid (näiteks bsddb teegid) ja keel (näiteks SQL) võimaldavad reeglina teha kolme tüüpi operatsioone:

  • Andmete kirjeldamine:

Tabelite ja failide loomine, lisainfo andmine nende kohta (mitu tulpa, mis nimed, tüübid, kuidas teha indekseid jne)
SQL-is: create table ...

  • Andmete lisamine ja muutmine:

Ridade lisamine, valitud ridade kustutamine, osade väljade sisu muutmine.
SQL-is: insert into ...

  • Andmete küsimine:

Andmete otsimine näidatud tabelitest eri tingimuste alusel. Keerukamad otsingud otsivad korraga mitmest tabelist ja kombineerivad tulemuse uueks tabeliks (nn join). Tulemus tihtipeale sorteeritakse.
SQL-is: select ....


Lihtsad andmebaasisüsteemid

Peale suurte, keeruliste ja võimsate süsteemide ehitatakse ka väiksemaid ja lihtsamaid. Praktikumiülesande sisuks ongi taolise lihtsama süsteemi paari eripäringu (mis on nö traditsioonilise select lause lihtsamad erijuhud) programmeerimine.

Hea näide väga kvaliteetsest ja kiirest lihtsast sql-põhisest andmebaasisüsteemist on sqlite. Sqlite'l puuduvad võimalused paralleeltööks mitme kasutaja poolt jne. Ta sobib hästi juhul, kui soovime andmebaasisüsteemi otse oma rakendusse sisse ehitada, ning me ei vaja/soovi eraldi andmebaasiserveri installeerimist ja kasutamist.

Teine lihtsa andmebaasisüsteemi näide on bsddb ehk Berkeley db: selles süsteemis ei ole isegi sql keelt realiseeritud.


Lisainfot

Head materjalid lisalugemiseks andmebaasindusest: