După un an de dezvoltare, a fost lansată versiunea sistemului de gestionare a documentelor MongoDB 6.0, care ocupă un loc între sistemele rapide și scalabile ce operează cu date în format cheie/valoare și sistemele de gestionare a bazelor de date relaționale, care sunt funcționale și ușor de utilizat pentru formularea interogărilor. Codul MongoDB este scris în C++ și este distribuit sub licența SSPL, care se bazează pe licența AGPLv3, dar nu este o licență deschisă, având o cerință discriminatorie de livrare sub licența SSPL, nu doar a codului aplicației în sine, ci și a codului sursă pentru toate componentele implicate în furnizarea serviciului cloud.
MongoDB suportă stocarea documentelor în format similar JSON, dispune de un limbaj de interogare suficient de flexibil, poate crea indecși pentru diferitele atribute stocate, asigură eficient stocarea obiectelor binare mari, suportă jurnalizarea operațiunilor de modificare și adăugare a datelor în baza de date, poate funcționa conform paradigmei Map/Reduce, susține replicarea și construirea configurațiilor rezistente la defecțiuni.
MongoDB are instrumente integrate pentru asigurarea segmentării (distribuirea setului de date pe servere pe baza unei chei specifice), care, împreună cu replicarea, permit construirea unui cluster de stocare scalabil pe orizontală, în care nu există niciun punct unic de eșec (defecțiunea oricărui nod nu afectează funcționarea bazei de date), se suportă recuperarea automată după eșec și transferul sarcinii de la nodul defect. Extinderea clusterului sau conversia uneia server în cluster se realizează fără oprirea funcționării bazei de date prin simpla adăugare de noi mașini.
Caracteristicile principale ale noului release:
- A fost implementată posibilitatea de a efectua interogări care acoperă date stocate în format criptat (Queryable Encryption). Datele sunt decriptate la nivelul utilizatorului și rămân criptate pe parcursul procesării interogării (interogarea este efectuată pe date criptate, fără decriptarea prealabilă a acestora). În prezent, în interogări sunt acceptate doar expresii de comparație, dar este planificată adăugarea suportului pentru verificarea intervalelor, prefixelor, sufixelor, subșirurilor și altor operații.
- Au fost extinse capacitățile legate de stocarea datelor în formă de serii temporale (time series collections), optimizate pentru stocarea instantaneelor valorilor parametrilor înregistrate la intervale de timp specificate (timpul și setul de valori corespunzătoare acelui timp), de exemplu, necesitatea stocării acestor date apare în sistemele de monitorizare, platformele financiare, sistemele de sondare a stării senzorilor. În noul release, a fost introdus suportul pentru utilizarea indicilor secundari și compuși cu colecțiile de date în formă de serii temporale. A fost adăugat suportul pentru atașarea de date suplimentare, cum ar fi informația geografică pentru calcularea distanței și a locației. A fost îmbunătățită performanța citirii, executării interogărilor și sortării.
- Au fost adăugate noi instrumente pentru urmărirea modificărilor ("fluxuri de modificare", API Change Streams), prin care se pot trimite aplicațiilor notificări despre modificarea datelor în baza de date. Informațiile despre modificări sunt transmise în timp real, permițând crearea de aplicații utilizând metode de programare reactivă și orientată pe evenimente. Evenimentele sunt prelucrate prin metoda watch, iar evenimentele necesare pot fi filtrate și agregate cu ajutorul operatorilor $match, $project și $redact. În noua versiune, a fost introdusă posibilitatea obținerii stării anterioare și ulterioare a documentului (de exemplu, atunci când documentul este șters sau modificat). Pe lângă operațiile cu utilizarea limbajului DML (data manipulation language), a fost adăugată suportul pentru operații DDL (data definition language), cum ar fi crearea și ștergerea indicilor și colecțiilor. Au fost adăugate instrumente pentru filtrarea notificărilor asociate.
- În operatorii $lookup și $graphlookup a fost implementat suportul complet pentru depozitele fragmentate (sharded). Performanța operației $lookup a fost optimizată; de exemplu, în prezența unui indice pe cheia externă, potrivirea unui număr mic de documente se realizează acum de 5-10 ori mai repede, iar pentru un număr mare — de două ori mai repede. Pentru potriviri fără utilizarea indicilor, creșterea performanței poate ajunge până la 100 de ori.
- A fost introdusă posibilitatea efectuării de interogări analitice complexe asupra instantaneelor neconflitante (snapshot) ale stării datelor de lucru. Astfel de interogări analitice pot acoperi mai multe segmente în configurații mari distribuite MongoDB.
- Au fost adăugați noi operatori $maxN, $minN și $lastN pentru determinarea valorilor într-un set de date, precum și operatorul $sortArray pentru sortarea elementelor dintr-un array.
- Eficiența segmentării a fost semnificativ îmbunătățită. Dimensiunea blocului utilizată implicit pentru colecțiile segmentate a fost crescută la 128 MB. A fost adăugată comanda configureCollectionBalancing pentru defragmentarea colecției segmentate.
- În instrumentele de criptare a datelor la nivel de câmp (CSFLE, client-side field-level encryption) a fost adăugat suportul pentru furnizorii de chei compatibili KMIP.
- A fost adăugată posibilitatea comprimării și criptării jurnalului de audit, în care se reflectă activitatea utilizatorilor bazei de date.
- A fost implementat un mod experimental de sincronizare a datelor între clusterele MongoDB (Cluster-to-Cluster Sync).
Sursa: opennet.ro
