Ako časopis VIDI čitate već određeni broj godina, onda ste u njemu svakako primijetili veći broj tekstova ovog istog autora o različitim bazama podataka. Najčešće su to baze podataka sa samog vrha popisa najkorištenijih proizvoda takve vrste softvera. Baza podataka koja do sada nije imala priliku biti popraćena posebnim tekstom u časopisu je MariaDB. Što svakako predstavlja svojevrsnu nepravdu, jer se ne radi o tamo nekom nepoznatom i egzotičnom proizvodu čija je budućnost potpuno neizvjesna. MariaDB je već duže vrijeme u različitim analizama popularnosti pozicionirana kao dvanaesta na rang listi najpopularnijih i najkorištenijih baza podataka na svijetu.
Kad se piše o nekoj bazi podataka i njezinim značajkama, često se neka njezina posebnost uspoređuje s mogućnostima drugih, konkurentskih proizvoda, jer je oni nemaju ili imaju riješeno drugačije. U ovom slučaju tijekom cijelog teksta će se provlačiti usporedba sa samo jednim proizvodom, a to je starija i poznatija baza podataka MySQL. Nakon sljedećih nekoliko rečenica bit će mnogo jasnije zašto je takva usporedba logična i bitna.
Kratka povijest obje baze
Relacijski orijentirana baza podataka MySQL (kao starija sestra u ovoj priči) u svojoj prvoj komercijalnoj verziji objavljena je sada već prilično davne 1995. godine. Glavni autor u njezinom stvaranju bio je Michael Widenius, tako da je sama baza dobila naziv prema njegovoj kćeri My. U narednom periodu intenzivnog razvoja i širenja među korisnicima, od prve verzije se stiglo do verzije 5.x. Tijekom 2008. godine bazu podataka je otkupio u to vrijeme vrlo jak igrač na IT području – tvrtka Sun Microsystems. Budući da je 2010. godine spomenuto poduzeće preuzeo još veći softverski gigant Oracle, baza je ponovo promijenila svojeg vlasnika.
Datum preuzimanja MySQL-a od strane Oraclea (27.01.2010.) je izuzetno važan u priči o mlađoj sestri MariaDB. Tog istog dana je glavni autor MySQL-a (već spomenuti Michael Widenius) s grupom programera započeo razvoj alternativne baze. Kao i u slučaju MySQL-a, nova baza ponovo je dobila ime po autorovoj kćeri (ovaj put Maria). Takav scenarij bio je posljedica zabrinutosti da bi Oracle (tvrtka i sama nastala na vlastitoj bazi podataka kao osnovnom proizvodu) mogla utjecati na budućnost razvoja i korištenja MySQL-a. U tom trenutku već prilično popularne među korisnicima širom svijeta. Zato nije ni čudo da su na samom početku razvoja obje baze bile praktično jednake, te da bi se tijekom vremena počele pojavljivati i određene razlike među njima. U praksi se MariaDB „trudi“ da bude što kompatibilnija s bazom MySQL, ali da uz to ponudi i nešto više za svoje korisnike.
https://pypl.github.io/DB.html: Prema ovom (a i drugim sličnim izvorima) MariaDB zauzima mjesto blizu prvih 10 vodećih baza podataka
Trenutno stanje
Od verzije 5.x kad je započelo razdvajanje baza, do danas se u slučaju baze MariaDB već stiglo do verzije 11.1.2. Uz napomenu da verzija 11.2.1 čeka službenu objavu. Osim besplatne Community varijante za koju se garantira da će uvijek biti besplatna, korisnicima je na raspolaganju i Enterprise verzija. Njezina cijena može se saznati na upit ovisno o vlastitim zahtjevima za konkretnu konfiguraciju. U odnosu na besplatnu verziju, ova verzija trebala bi biti pogodna za korištenje u praktično svim mogućim situacijama iz prakse. To znači za korištenje u OLTP ili OLAP scenarijima, kao i različitim cloud okruženjima (privatnim, javnim ili hibridnim).
Kao i svaki drugi proizvođač, istoimena tvrtka MariaDB voli se pohvaliti svojim korisnicima. Osim tvrtki kao što su Bandwidth, DigiCert, InfoArmor, Oppenheimer, Samsung i SelectQuote, u korisnike baze mogu se ubrojiti i giganti kao što su Amazon, Microsoft i Google. Prije svega, zato što svojim korisnicima u vlastitim cloud servisima kao bazu podataka nude također korištenje baze MariaDB.
Spomenimo na ovom mjestu da sama tvrtka osim glavnog i najpoznatijeg proizvoda, nudi još nekoliko dodatnih proizvoda kao što su SkySQL ili Xpand, prije svega namijenjenih za korištenje u distribuiranim i cloud okruženjima. O njima možda nešto više nekom drugom prilikom.
Usporedba s MySQL
Jedna od posebnosti baze MySQL, a samim tim i baze MariaDB kao mlađe sestre, je u tome što čitav sustav za upravljanje bazom podataka nije tako „monolitan“ kao kod nekih drugih proizvođača baza podataka. To se jasno može vidjeti i na pratećoj slici uz tekst. Posebno je zanimljiv dio označen kao „storage engines“. Riječ je o sistemskim modulima koji predstavljaju vezu između hardvera i ostalih sistemskih modula sustava za upravljanje bazom podataka, sa zaduženjem da brinu o samom zapisivanju, odnosno čitanju podataka. Međusobno se ovi moduli mogu razlikovati po brzini rada, ugrađenoj podršci za korištenje transakcija ili njezinim izostankom, različitim vrstama podržanih indeksa te još nekim dodatnim karakteristikama. Ako korisnik točno zna što mu je potrebno u određenoj situaciji, može znatno unaprijediti brzinu rada cjelokupnog sustava ili povećati sigurnost zapisa odabirom optimalnog modula.
U trenutnim verzijama u dijelu mogućnosti MariaDB nadmašuje MySQL, što uvijek može biti dvosjekli mač. Korištenjem takvih naprednih mogućnosti možda ćete pojednostaviti, ubrzati ili učiniti neko rješenje sigurnijim, ali se može pojaviti problem ako se takvo rješenje ipak mora koristiti na nekom drugom mjestu gdje jednostavno nema alternative za MySQL. A to onda nije izvedivo, ili nije izvedivo bez poprilično uloženog truda (vremena i financija) za prilagodbu.
Naravno, moguće su i situacije gdje se u bazi MySQL naknadno pojavi neka mogućnost koju prvo uvede MariaDB, pa se onda takva mogućnost može koristiti u oba sustava. Zato treba pratiti kad je nešto postalo dostupno u nekoj verziji baze. Na primjer, takozvane nevidljive kolone prvo su postale dostupne u MariaDB, ali su kasnije uvedene i u MySQL, pa više nisu specifičnost koja se ne može koristiti na oba mjesta.
Kad smo ih već spomenuli, da odmah i objasnimo o čemu je riječ, ako do sada niste koristili takvu mogućnost. Kad neku tablicu kreirate pomoću sljedeće naredbe:
CREATE TABLE t (x INT, y INT INVISIBLE, z INT INVISIBLE NOT NULL DEFAULT 4);
Prema: www.infoclutch.com ovo su najveći korisnici baze podataka MariaDB i korisnici baze podataka MariaDB
Arhitektura baze: u velikoj mjeri nalik je na MySQL
Tada nevidljive kolone neće biti dostupne kod čitanja podataka pomoću najjednostavnijeg oblika naredbe SELECT uz korištenje zvjezdice. Takve kolone baš treba svjesno navesti kod pisanja SQL naredbi. Drugim riječima, za nekakve izmišljene podatke u ranije pripremljenoj tablici, sljedeće SQL naredbe prikazale bi nešto slično kao:
SELECT * FROM t;
+----+
| x |
+----+
| 1 |
| 2 |
| 3 |
+----+
SELECT x, y, z FROM t;
+---+------+---+
| x | y | z |
+---+------+---+
| 1 | NULL | 4 |
| 2 | NULL | 4 |
| 3 | 33 | 4 |
+---+------+---+
Gdje bi nešto takvo moglo biti korisno? Odgovor se nameće sam po sebi – za skrivanje slučajnog pristupa osjetljivim podacima kao što su zarade članova uprave i slično.
Popis razlika između pojedinih verzija može biti popriličan, ali je srećom dobro dokumentiran na web stranicama tvrtke MariaDB. Evo jednog takvog primjera usporedbe u tom trenutku aktualnih verzija baza: https://mariadb.com/kb/en/incompatibilities-and-feature-differences-between-mariadb-10-7-and-mysql-8-/ .
Zanimljivo je pogledati kako nezavisan izvor kao što je Amazon AWS uspoređuje obje baze i njihove mogućnosti. Budući da u takvoj situaciji nema previše razloga za navijanje za jednu ili drugu stranu, uspoređivanje bi trebalo biti prilično objektivno (izvor: https://aws.amazon.com/compare/the-difference-between-mariadb-vs-mysql/).
Prema Amazonu, MariaDB brže izvodi upite, što je čini pogodnijom za korištenje kod jako velike količine podataka u bazi. Također, podržava neke od dodatnih mogućnosti (kao što su virtualne kolone) koje nisu dostupne u MySQL. Popis podržanih strojeva za spremanje podataka (storage engines) veći je kod MariaDB (XtraDB, Aria, InnoDB, MariaDB ColumnStore, Memory, Cassandra, Connect) nego kod MySQL (InnoDB, CSV, Federated, MyISAM, Merge, Federated). U vezi s ovim, bitno je spomenuti da obje baze podržavaju jedan od najčešćih odabira korisnika po tom pitanju, a to je InnoDB.
Podaci u JSON formatu - kao praktično nezaobilaznom formatu spremanja podataka u današnjem IT svijetu - u MySQL se čuvaju u binarnom formatu, dok su u MariaDB to zapravo i dalje stringovi. Drugim riječima, u ovom slučaju je tip podatka JSON samo zamjena LONGTEXT, iako postoje dodatne funkcije za rukovanje takvom vrstom podataka.
U slučaju da u vlastitoj tvrtki već koristite baš Oracle baze, onda je dugo vremena odabir MySQL baze za međusobnu integraciju bio logičnije i bolje rješenje nego MariaDB. Međutim, od verzije 10.3 i MariaDB nudi dodatne mogućnosti u integraciji baze s drugim Oracle bazama.
Usporedba s MySQL: Preklapanje i razlike između ove dvije baze podataka
Što se tiče ukupne brzine rada, u zadnjim verzijama obje baze MariaDB ima bolje rezultate, dok je u starijim verzijama veću brzinu rada imao MySQL. U slučaju da iz nekog razloga (na primjer, zato što to diktira korišteni operativni sustav ili slično) morate koristiti starije verzije baza, onda je MySQL bolje rješenje.
MariaDB je u pogledu licence u potpunosti u domeni GPL (GNU General Public License) odrednica, dok kod MySQL postoje dvije verzije baza – GPL i Enterprise Edition. Neke od mogućnosti su u MySQL dostupne samo u Enterprise obliku, o čemu treba voditi računa kod odabira baze. Na primjer, takva je mogućnost takozvani thread pooling (iskorištavanje postojećih dretvi za stvaranje novih veza prema bazi podataka) zbog čega MariaDB prilično nadmašuje GPL verziju MySQL u tom pogledu, a u konačnici i u brzini rada, odnosno istovremenom broju korisnika koji se mogu povezati na bazu podataka.
Izvorni kod
Izvorni kod baze MariaDB dostupan je svim zainteresiranim programerima preko web adrese https://mariadb.com/kb/en/getting-the-mariadb-source-code/. Osim najnovije verzije uvijek je dostupno i nekoliko prethodnih verzija. Na istoj adresi može se pronaći i izvorni kod različitih vrsta takozvanih „konektora“ namijenjenih korištenju baze u kombinaciji s različitim programskim jezicima (C, Python, itd.).
Zanimljivo je da se tu osim programskog koda baze mogu pronaći različite dodatne skripte za konfiguriranje baze, mjerenje brzine rada u različitim situacijama i slično. Tako da kao potencijalni administrator baze podataka možete puno toga naučiti o optimalnim načinima izvođenja sličnih operacija na bazi podataka. Mali problem bi mogao biti tek u tome što je veliki dio skripti napisan u nešto starijem i danas sve manje korištenom programskom jeziku Perl. Što znači da postoji velika vjerojatnost da ga do sada baš i niste nešto previše koristili. Dobra je vijest to da ako „govorite“ neki slični C-oliki programski jezik, onda ne biste trebali imati previše problema ni s praćenjem Perl skripti.
Proučavanje izvornog koda baze podataka također može biti prilično korisno, čak i ako ne mislite razvijati nekakvu svoju osobnu ili posebno prilagođenu verziju baze podataka. S vremena na vrijeme, kad tvrtka nije u financijskim problemima (o tome malo kasnije), na portalima za zapošljavanje mogu se pronaći oglasi za posao u tvrtki. Ponekad čak i s partnerskim odnosom, što svakako ne zvuči loše.
MariaDB izvorni kod: dostupan je korisnicima za analizu, korištenje i eventualne izmjene
Primjer izvornog koda: Iz njega se može i naučiti mnogo toga u pisanju takve vrste softvera
Financijski problemi, oporavak i zaključak
Tijekom tekuće 2023. godine tvrtka se našla u popriličnim financijskim problemima, što je između ostalog u jednom trenutku dovelo do otpuštanja 26 radnika. To je bio popriličan broj u odnosu na ukupan broj u tom trenutku zaposlenih radnika - 340. A to je rezultiralo dosta velikom zabrinutošću kod tvrtki koje u poslovanju koriste MariaDB. Dok MariaDB nudi pojednostavljeni prelazak u korištenju postojećim korisnicima MySQL baze, u suprotnom smjeru to baš i ne mora biti tako bezbolno, pa bi propast tvrtke mogla imati dalekosežne posljedice.
Srećom, kao što to pokazuje prateća slika uz tekst (izvor: Yahoo Finance) u zadnje vrijeme dolazi do financijskog oporavka tvrtke, što uostalom možete i sami kontinuirano pratiti na spomenutom servisu.
Netko tko već nekoliko godina koristi upravo MariaDB u profesionalnom razvoju aplikacija (kao autor ovog teksta) može iz prve ruke potvrditi da se MariaDB može bez ikakvih problema koristiti u praksi za izradu najrazličitijih vrsta IT rješenja. Drugim riječima, osim ako se ponovo ne pojave nekakvi ozbiljniji financijski problemi, MariaDB ne predstavlja lošu alternativu za MySQL bazu podataka ili za razvoj IT rješenja ispočetka.