A fost publicată versiunea 1.0 a proiectului FerretDB, care permite înlocuirea sistemului de gestionare a bazelor de date orientate pe documente MongoDB cu PostgreSQL fără modificări în codul aplicațiilor. FerretDB este implementat ca un server proxy, care traduce solicitările către MongoDB în interogări SQL pentru PostgreSQL, permițând utilizarea PostgreSQL ca stocare efectivă. Versiunea 1.0 este marcată ca prima versiune stabilă, pregătită pentru utilizare pe scară largă. Codul este scris în limbajul Go și este distribuit sub licența Apache 2.0.
Publicul țintă principal al FerretDB sunt utilizatorii care nu folosesc funcționalitățile avansate ale MongoDB în aplicațiile lor, dar doresc să utilizeze un stoc de software complet deschis. În acest stadiu de dezvoltare, FerretDB suportă un subansamblu de funcționalități MongoDB, cele mai frecvent utilizate în aplicațiile tipice. Necesitatea implementării FerretDB poate apărea în contextul trecerii MongoDB la o licență ne-gratuită SSPL, care se bazează pe licența AGPLv3, dar nu este deschisă, deoarece conține cerința discriminatorie de a oferi nu doar codul aplicației, ci și codul sursă pentru toate componentele implicate în furnizarea serviciului cloud sub licența SSPL.
MongoDB ocupă un loc între sistemele rapide și scalabile care operează cu date în format cheie/valoare și sistemele de gestionare a bazelor de date relaționale, care sunt funcționale și convenabile pentru formularea interogărilor. MongoDB suportă stocarea documentelor în format asemănător JSON, are un limbaj destul de flexibil pentru formularea interogărilor, poate crea indici pentru diverse atribute stocate, asigură eficient stocarea obiectelor binare mari, suportă jurnalizarea operațiunilor de modificare și adăugare a datelor în BD, poate funcționa conform paradigmei Map/Reduce, suportă replicarea și construirea configurațiilor redundante.
Printre modificările din FerretDB 1.0:
- Au fost implementate comenzile createIndexes și dropIndexes pentru a crea și șterge unul sau mai multe indecși pentru o colecție.
- A fost implementată comanda getMore pentru a returna un nou lot de rezultate obținute în urma executării comenzilor care returnează un cursor, cum ar fi find și aggregate.
- A fost adăugată suportul pentru operatorul de agregare $sum pentru a calcula suma valorilor dintr-un grup.
- A fost adăugată suportul pentru operatorii $limit și $skip pentru a limita numărul și a sări peste documente în timpul agregării.
- A fost adăugată suportul pentru operatorul $count pentru a număra documentele în timpul agregării.
- A fost adăugată suportul pentru operatorul $unwind pentru a desface câmpurile array din documentele de intrare și a forma o listă cu un document separat pentru fiecare element din array.
- A fost adăugată suportul parțial pentru comenzile collStats, dbStats și dataSize pentru a obține statistici despre colecție și baza de date, precum și dimensiunea datelor.
Sursa: opennet.ro
