MQL
Kôd baza dokumenata SQL jezika nije pogodan za izravno korištenje, pa su se zato pojavili alternativni pristupi. MongoDB baza podataka, kao najpoznatiji i najrašireniji predstavnik baza dokumenata, koristi posebno razvijeni jezik upita od samog proizvođača baze podataka pod nazivom MQL (MongoDB’s Query Language). O čemu je riječ?
Budući da se dokumenti u MongoDB bazi čuvaju u JSON formatu (ili točnije u BSON – Binary JSON formatu zbog optimalnog zauzeća prostora i veće brzine obrade podataka), onda je nekako i logično da se upiti postavljaju u nečemu što također nalikuje JSON sintaksi.
Kako izgledaju MQL upiti najlakše je razumjeti na dva primjera prevođenja SQL upita u MQL sintaksu:
SQL:
----
SELECT COUNT(*) AS count
FROM person
SELECT band_name,
SUM(price) AS total
FROM albums
GROUP BY band_name
ORDER BY total
MQL:
----
db.person.aggregate( [
{
$group: {
_id: null,
count: { $sum: 1 }
}
}
] );
db.albums.aggregate( [
{
$group: {
_id: “$band_name”,
total: { $sum: “$price” }
}
},
{ $sort: { total: 1 } }
] );
Ako pogledate prateću sliku uz tekst s prikazom baze dokumenata o filmova nešto starijeg datuma, lako ćete primijetiti da je dio podataka (koji bi se u relacijskim bazama spremao u posebne tablice) u ovom slučaju jednostavno umetnut u osnovnu kolekciju dokumenata o filmovima. Naprimjer, žanrovi filmova, glumačka ekipa, scenaristi, osvojene nagrade i slično. Baza podataka o filmovima temeljena na dokumentima omogućava da u jednoj kolekciji budu obuhvaćeni svi mogući podaci o pojedinim filmovima, iako su neki od njih dostupni samo za dio filmova – npr. osvojene nagrade ili recenzije kritičara.
MongoDB Atlas: Primjer kako izgledaju podaci u cloud verziji baze dokumenata MongoDB.
Spomenimo usput da ovi podaci predstavljaju dio kolekcije demo podataka posebne cloud verzije baze podataka MongoDB. Korištenje cloud verzije ujedno predstavlja jedan od najjednostavnijih načina za upoznavanje s MongoDB bazom dokumenata, jer je veliki dio mogućnosti slobodno dostupan na web adresi: https://www.mongodb.com/atlas/database.
Budući da se u slučaju baza dokumenata velika većina međusobno povezanih podataka nalazi u okviru iste kolekcije dokumenata, a međusobno povezivanje različitih kolekcija u cilju dobivanja rezultata češće je izuzetak nego pravilo, za MQL upite vrijedi sljedeće:
MQL upite je jednostavnije pisati zato što ne trebate brinuti o međusobnom povezivanju velikog broja objekata da biste dobili željene podatke. Iako pri tome ipak morate znati sve atribute pojedine kolekcije dokumenata.
MongoDB Atlas: Usporedba mogućnosti besplatne verzije baze s verzijama koje se naplaćuju.
Istovremeno je teže pisati MQL upite zato što se u njima pojavljuje veliki broj različitih vrsta zagrada (čega nema ni izbliza toliko puno u SQL upitima), pa je to mjesto gdje je najlakše napraviti greške kod pripreme upita. Ipak se čovjek vremenom navikne na sve, pa tako i na zagrade, naročito uz pomoć odgovarajućih alata za pisanje upita.
Kao i kod SQL upita, treba točno napisati što se sve želi dobiti i na koji način.
Iako MongoDB ne zahtijeva kreiranje objekata poput kolekcija dokumenata prije njihova korištenja, postoji i dio naredbi koje odgovaraju SQL DDL naredbama (ako ništa drugo, potrebne su za uklanjanje postojećih kolekcija dokumenata).
Rezultati MQL upita vraćaju se također u sveprisutnom JSON obliku, što je pogodno za sve alate ili aplikacije koje prirodno razumiju takav format podataka. Naprimjer, različite mobilne aplikacije.
Spomenimo na ovom mjestu kako se za pristup bazama dokumenata mogu koristiti i drugi jezici upita (npr. unQL), ali je to već tema za neku drugu priliku.