Predstavljen je izdaj dokumentno-orientirane DBMS MongoDB 5.0, ki se nahaja med hitrimi in razširljivimi sistemi, ki obravnavajo podatke v formatu ključ/vrednost, in relacijskimi DBMS, ki so funkcionalni in enostavni za oblikovanje poizvedb. Koda MongoDB je napisana v jeziku C++ in se distribuira pod licenco SSPL, ki temelji na licenci AGPLv3, vendar ni odprtokodna, saj vsebuje diskriminatorno zahtevo, da je pod licenco SSPL treba izdati ne le kodo same aplikacije, ampak tudi izvorne kode vseh komponent, vključenih v zagotavljanje oblačne storitve.
MongoDB podpira shranjevanje dokumentov v JSON-podobnem formatu, ima dovolj fleksibilen jezik za oblikovanje poizvedb, lahko ustvari indekse za različne shranjene atribute, učinkovito zagotavlja shranjevanje velikih binarnih objektov, podpira zapisovanje operacij pri spreminjanju in dodajanju podatkov v BDP, lahko deluje v skladu s paradigmo Map/Reduce, podpira replikacijo in gradnjo odpornim konfiguracijam.
V MongoDB so vgrajena sredstva za zagotavljanje segmentacije (porazdelitev niza podatkov po strežnikih na podlagi določenega ključa), skupaj z replikacijo omogočajo zgraditi horizontalno razširljiv skladiščni grozd, v katerem ni enotne točke napake (okvara kateregakoli vozlišča ne vpliva na delovanje BDP), podpirajo samodejno okrevanje po napaki in prenos obremenitve z okvarjenega vozlišča. Razširitev grozd ali pretvorba enega strežnika v grozd se izvede brez prekinitve delovanja BDP, preprosto z dodajanjem novih naprav.
Karakteristike novog izdanja:
- Dodane so zbirke podatkov v obliki časovnih vrst (time series collections), optimizirane za shranjevanje rezov vrednosti parametrov, zapisovanih v določenih časovnih presledkih (čas in niz vrednosti, povezanih s tem časom). Potreba po shranjevanju takih podatkov se pojavi v sistemih za spremljanje, finančnih platformah in sistemih za anketiranje stanja senzorjev. Delo s podatki časovnih vrst poteka kot z navadnimi zbirkami dokumentov, vendar so indeksi in metoda shranjevanja zanje optimizirani glede na časovno vez, kar omogoča znatno zmanjšanje porabe prostora na disku, zmanjšanje zakasnitev pri izvajanju poizvedb in omogoča analizo podatkov v realnem času.
MongoDB obravnava takšne zbirke kot pisljive nematerializirane predstave, ustvarjene na podlagi notranjih zbirk, ki ob vstavljanju samodejno skupinijo podatke časovnih vrst v optimiziran format shranjevanja. Pri tem se vsaka časovno vezana vnosna zapisa pri poizvedbi obravnava kot ločen dokument. Podatki so samodejno razvrščeni in indeksirani po času (ni potrebe po izrecnem ustvarjanju indeksov po času).
- Dodana je podpora za okenske operatorje (analitične funkcije), ki omogočajo izvajanje dejanj z določenim naborom dokumentov v zbirki. V nasprotju z agregatnimi funkcijami okenske funkcije ne strnejo skupine, temveč izvajajo agregacijo na osnovi vsebine "okna", ki vključuje enega ali več dokumentov iz rezultatnega nabora. Za manipulacijo s podmnožico dokumentov je bila predstavljena nova faza $setWindowFields, s pomočjo katere lahko na primer določimo razlike med dvema dokumentoma v zbirki, izračunamo oceno prodaje in analiziramo informacije v kompleksnih časovnih vrstah.
- Dodana je podpora za različice API, ki omogoča vezavo aplikacije na določen trenutek API in izključitev tveganja, povezanega z morebitnim kršenjem povratne združljivosti pri prehodu na nove izdaje DBMS. Različice API ločijo življenjski cikel aplikacije od življenjskega cikla DBMS in omogočajo razvijalcem, da izvajajo spremembe v aplikaciji takrat, ko nastane potreba po aktivaciji novih funkcij, ne pa takrat, ko se izvede prehod na novo različico DBMS.
- Dodana je podpora za mehanizem Live Resharding, ki omogoča spremembo ključev za delitev (shard key) v teku brez ustavitve DBMS.
- Razširjene so možnosti za šifriranje polj na strani odjemalca (Client-Side Field Level Encryption). Pojavila se je možnost ponastavitve filtrov revizije in rotacije certifikatov x509 brez prekinitve delovanja DBMS. Dodana je podpora za nastavitev niza šifriranja za TLS 1.3.
- Predlagana je nova lupina za ukazno vrstico MongoDB Shell (mongosh), ki se razvija kot ločen projekt, napisan v JavaScriptu z uporabo platforme Node.js, in se distribuira pod licenco Apache 2.0. MongoDB Shell omogoča povezovanje z DBMS, spreminjanje nastavitev in pošiljanje poizvedb. Podprto je pametno samodejno dopolnjevanje vnosov metod, ukazov in izrazov MQL, poudarjanje sintakse, kontekstna pomoč, razčlenitev sporočil o napakah in možnost razširitve funkcionalnosti preko dodatkov. Stara CLI-lupina „mongo“ je razglašena za zastarelo in bo odstranjena v prihodnji različici.

- Dodani so novi operatorji: $count, $dateAdd, $dateDiff, $dateSubtract, $sampleRate in $rand.
- Zagotovljeno je izvajanje indeksov ob uporabi operatorjev $eq, $lt, $lte, $gt in $gte znotraj izraza $expr.
- V ukazih aggregate, find, findAndModify, update, delete in metodah db.collection.aggregate(), db.collection.findAndModify(), db.collection.update() in db.collection.remove() je bila implementirana podpora za opcijo „let“ za določitev seznama spremenljivk, ki naredijo ukaze bolj berljive z ločevanjem spremenljivk od besedila poizvedbe.
- Operacije find, count, distinct, aggregate, mapReduce, listCollections in listIndexes zdaj niso blokirane, če poteka hkrati operacija, ki postavlja ekskluzivno zaklepanje na kolekcijo dokumentov.
- V okviru pobude za odpravo nepolitično korektnih izrazov je ekipa isMaster in metoda db.isMaster() preimenovana v hello in db.hello().
- Spremenjena je bila shema numeracije izdaj in prešel je na predvidljiv urnik oblikovanja izdaj. Enkrat na leto bo oblikovana pomembna izdaja (5.0, 6.0, 7.0), enkrat na tri mesece pa medizdaje z novimi funkcionalnostmi (5.1, 5.2, 5.3) in po potrebi korektivna posodobitev za odpravljanje napak in ranljivosti (5.1.1, 5.1.2, 5.1.3). V medizdajah bo oblikovana funkcionalnost za naslednjo pomembno izdajo, t.j. v MongoDB 5.1, 5.2 in 5.3 bodo oblikovane nove možnosti za izdajo MongoDB 6.0.
Izvor: opennet.ru

