Uvod u motore baza podataka
Svaki sustav za upravljanje bazama podataka (SUBP) sastoji se od nekoliko slojeva, a jedan od najvažnijih je motor baze podataka. Na hrvatskom se često koristi izraz pogon baze podataka ili mehanizam za pohranu, no u tehničkoj literaturi najčešće se zadržava engleski naziv storage engine. Motor baze podataka je softverska komponenta koja izravno upravlja fizičkim zapisom, čitanjem, ažuriranjem i brisanjem podataka na disku. Bez motora, korisnički upiti ne bi mogli doći do podatkovnih datoteka, a sve operacije koje izvodimo putem SQL naredbi ili API poziva oslanjaju se na njegove mogućnosti.
Važno je razumjeti da motor nije isto što i cijeli sustav za upravljanje bazama podataka. SUBP je kompletan ekosustav koji uključuje jezik za upite, alate za administraciju, sigurnosne mehanizme i sučelje prema korisniku. Motor je, s druge strane, podsustav koji se bavi isključivo niskorazinskim upravljanjem podacima. Primjerice, MySQL kao SUBP podržava više različitih motora poput InnoDB i MyISAM, a korisnik prilikom kreiranja tablice može odabrati koji će motor koristiti. Ovaj izbor izravno utječe na performanse, pouzdanost i funkcionalnosti koje su dostupne za tu tablicu.
Glavne funkcije motora baza podataka
Motori baza podataka obavljaju niz ključnih zadataka koji omogućuju stabilan i učinkovit rad baze. Prva i najočitija funkcija jest fizičko pohranjivanje podataka na medij za trajno čuvanje. To uključuje organizaciju podataka u strukture poput tablica, indeksa ili dokumenata, ovisno o modelu podataka. Druga važna uloga je upravljanje transakcijama. Transakcije osiguravaju da se skup operacija izvrši u potpunosti ili da se u slučaju pogreške vrati u početno stanje. To je ključno za održavanje integriteta podataka, posebno u sustavima s više istodobnih korisnika.

Osim toga, motori brinu o kontroli istodobnog pristupa. Kada više korisnika istovremeno čita ili mijenja iste podatke, motor mora spriječiti neželjene kolizije i osigurati dosljednost. To se postiže mehanizmima zaključavanja i verzioniranja. Nadalje, motori implementiraju postupke oporavka nakon pada sustava, čime jamče da podaci neće biti izgubljeni ili oštećeni. Također vode brigu o održavanju kataloga sustava – metapodataka koji opisuju strukturu baze, tablice, stupce i relacije.
U nastavku su sažete glavne funkcije koje svaki motori baza podataka obavlja:
- Fizička pohrana podataka na disk ili drugi medij.
- Upravljanje transakcijama s podrškom za potpunost i vraćanje.
- Kontrola istodobnog pristupa više korisnika (zaključavanje redaka ili tablica).
- Oporavak nakon pada sustava i sigurnosne kopije.
- Održavanje indeksa za ubrzano pretraživanje podataka.
- Vođenje evidencije o metapodacima i shemi baze.
Ove funkcije čine motore nezamjenjivim dijelom svakog ozbiljnog sustava za upravljanje podacima. Bez njih, baze podataka ne bi mogle pružiti pouzdanost i brzinu koju očekujemo u modernim aplikacijama.

Vrste motora baza podataka
Motore baza podataka možemo podijeliti prema modelu podataka koji koriste. Dvije osnovne kategorije su relacijski i nerelacijski motori. Relacijski motori temelje se na tablicama s redovima i stupcima te koriste SQL za upite. Primjeri su InnoDB i MyISAM u MySQL okruženju, PostgreSQL vlastiti motor ili Microsoft SQL Server motor. Ovi motori obično podržavaju stroge sheme, ACID transakcije i složene operacije spajanja tablica.
Nerelacijski motori (NoSQL) koriste druge modele poput dokumenata, parova ključ–vrijednost, grafova ili stupčanih obitelji. Primjerice, MongoDB koristi vlastiti motor za pohranu dokumenata u JSON-sličnom formatu, dok Cassandra ima posebno dizajniran motor za distribuirano zapisivanje podataka. Ovi motori često su prilagođeni za velike količine podataka, brzi upis i horizontalno skaliranje. Važno je napomenuti da neki SUBP-ovi podržavaju više motora istovremeno, što daje fleksibilnost pri dizajnu baze.
Unutar relacijske kategorije postoje i specijalizirani motori poput onih za ugrađene sustave (SQLite) ili za analitička opterećenja (Amazon Aurora). Odabir pravog motora ovisi o prirodi aplikacije: trebaju li nam česti upisi i čitanja, visoka pouzdanost ili brza analiza golemih skupova podataka.

Razlika između SUBP i motora baze podataka
Mnogi korisnici brkaju pojmove sustav za upravljanje bazama podataka (SUBP) i motor baze podataka, ali oni nisu sinonimi. SUBP je cjelokupni softverski paket koji omogućuje definiranje, kreiranje, održavanje i upravljanje bazama podataka. On nudi sučelje za korisnike i aplikacije, uključuje jezik za upite (npr. SQL), brine se o sigurnosti, korisničkim dozvolama i mrežnom pristupu. Motor je samo jedan od njegovih unutarnjih modula koji je zadužen za stvarno rukovanje podacima na disku.
Da bismo pojasnili: kada u MySQL-u izvršimo naredbu SELECT, SUBP prima upit, parsira ga, optimizira plan izvođenja i zatim prosljeđuje zahtjev motoru. Motor tada pretražuje indekse, čita podatkovne blokove i vraća rezultat. Dakle, SUBP koordinira cijeli proces, dok motor obavlja fizički posao. Ova podjela omogućuje da isti SUBP koristi različite motore ovisno o potrebama. Na primjer, MySQL omogućuje miješanje tablica s InnoDB i MyISAM motorom unutar iste baze. Detaljniji opis mehanizma za pohranu možete pronaći na Wikipediji.
Razumijevanje ove razlike pomaže pri odabiru tehnologije. Ako aplikacija zahtijeva složene upite i transakcijsku sigurnost, bit će važno odabrati SUBP koji nudi motore s bogatom podrškom za te značajke. S druge strane, za jednostavne aplikacije s malo podataka dovoljan je lagani motor poput SQLite, koji je ugrađen direktno u aplikaciju.

Usporedba popularnih motora
Kako bismo lakše shvatili praktične razlike, pogledajmo dvije najpoznatije opcije u MySQL svijetu: InnoDB i MyISAM. Tablica u nastavku prikazuje ključne karakteristike.
| Svojstvo | InnoDB | MyISAM |
|---|---|---|
| Podrška za transakcije (ACID) | Da | Ne |
| Zaključavanje | Razina retka | Razina tablice |
| Strani ključevi | Da | Ne |
| Pohrana podataka | U tabličnim prostorima | U zasebnim datotekama |
| Brzina upita čitanja | Dobra, ali slabija kod jednostavnih upita | Vrlo dobra za samo čitanje |
| Oporavak od pada | Napredan (redo logovi) | Osnovan (provjera tablica) |
Iz tablice je vidljivo da InnoDB nudi napredne značajke poput transakcija i zaključavanja na razini retka, što ga čini prikladnim za aplikacije s puno istodobnih promjena. MyISAM je brži za čitanje i koristi jednostavniju strukturu, ali ne podnosi dobro istovremene upise i nema podršku za transakcije. Danas se MyISAM smatra zastarjelim i preporučuje se koristiti InnoDB ili novije motore poput MyRocks i Aria u MariaDB.
Utjecaj odabira motora na performanse i integritet podataka
Odabir motora izravno utječe na brzinu izvođenja operacija, potrošnju memorije i sigurnost podataka. Ako aplikacija zahtijeva dosljednost i mogućnost vraćanja promjena (npr. bankovni sustavi), motor mora podržavati ACID transakcije. S druge strane, za sustave koji generiraju ogromne količine podataka s niskim zahtjevima za integritetom (poput logova ili senzorskih očitanja) mogu se koristiti motori koji optimiziraju brzinu upisa, čak i po cijenu manje pouzdanosti.

Važno je napomenuti da neki motori nude i specijalizirane načine kompresije podataka ili pohranu u stupčanom formatu, što ubrzava analitičke upite. Primjerice, motori poput Apache Parquet (u Hadoop ekosustavu) ili Amazon Redshift motor koriste stupčanu pohranu za brže pretraživanje velikih skupova podataka. U relacijskom svijetu, MariaDB nudi motore poput ColumnStore za analitička opterećenja.
Kada birate motor, obratite pozornost i na to kako motor upravlja indeksima. Većina motora podržava B-stabla, ali postoje i druge strukture poput hash indeksa (u Memory motoru) ili prostornih indeksa (u MyISAM i InnoDB). Pravilna upotreba indeksa može dramatično ubrzati upite, ali također povećava vrijeme upisa i zauzima dodatni prostor.
Kako odabrati pravi motor za svoju bazu podataka
Ne postoji jedinstveni motor koji je najbolji za sve scenarije. Prilikom odabira potrebno je uzeti u obzir nekoliko čimbenika. Prvi je model podataka: relacijski ili nerelacijski. Ako su podaci strogo strukturirani i zahtijevaju složene upite, relacijski motori su prirodan izbor. Ako je shema fleksibilna ili se često mijenja, dokumentni motori poput MongoDB mogu biti povoljniji.
Drugi čimbenik je opterećenje: čita li se više nego što se upisuje, ili obrnuto? Za aplikacije s puno upisa (npr. IoT prikupljanje podataka) preporučuju se motori optimizirani za brzi upis, poput Cassandra ili InnoDB s podešenim postavkama. Za aplikacije s puno čitanja i rijetkim promjenama (npr. katalozi proizvoda) mogu poslužiti motori koji su brži pri čitanju, poput MyISAM u prošlosti, ili danas neki od NoSQL motora s ugrađenom memorijskom pohranom.
Treći čimbenik je potreba za transakcijskom sigurnošću i dosljednošću. U financijskim, zdravstvenim ili logističkim sustavima transakcije su obavezne. U društvenim mrežama ili blogovima eventualna dosljednost može biti prihvatljiva. Stoga odabir motora mora biti usklađen s očekivanom razinom pouzdanosti.
Više o funkcijama i vrstama motora baza podataka možete pročitati u AppMaster glosaru. Preporuka je da uvijek testirate motor s vlastitim podacima i opterećenjem prije nego što ga uvedete u produkciju.
Budućnost motora baza podataka
Razvoj motora baza podataka neprestano napreduje. Sve je veći naglasak na skalabilnosti, brzini i podršci za hibridna opterećenja (HTAP - miješanje transakcijskog i analitičkog rada). Motori poput





