MangoDB este modernizat și acum se schimbă în FerretDB

recentÎn zilele noastre a fost anunțată vestea lansării proiectului FerretDB, (fostul MangoDB), care vă permite să înlocuiți SGBD-ul MongoDB orientat spre documente cu PostgreSQL fără a face modificări codului aplicației.

FerretDB este implementat ca un server proxy care traduce apelurile către MongoDB în interogări SQL către PostgreSQL, permițându-vă să utilizați PostgreSQL ca stocare reală.

FerretDB (fostul MangoDB) a fost fondat pentru a deveni înlocuitorul de facto open source pentru MongoDB. FerretDB este un proxy cu sursă deschisă care convertește interogările de protocol Wire MongoDB în SQL, folosind PostgreSQL ca motor de bază de date.

Necesitatea de migrare poate apărea din cauza tranziției MongoDB la o licență SSPL non-liberă, care se bazează pe licența AGPLv3, dar nu este open source, deoarece conține o cerință discriminatorie de a furniza sub licența SSPL nu numai aplicația a codului în sine, dar și codurile sursă ale tuturor componentelor implicate în furnizarea serviciului cloud.

Publicul țintă pentru FerretDB este utilizatorii care nu folosesc caracteristicile avansate ale MongoDB în aplicațiile lor, dar doresc să utilizeze o stivă de software complet deschisă.

În stadiul actual de dezvoltare, FerretDB încă acceptă doar o parte din caracteristicile MongoDB care sunt utilizate cel mai adesea în aplicații tipice. În viitor, intenționează să obțină suport complet pentru driver pentru MongoDB și să ofere posibilitatea de a utiliza FerretDB ca înlocuitor transparent pentru MongoDB.

Trebuie amintit că MongoDB ocupă o nișă printre sistemele rapide și scalabile care operează pe date în format cheie/valoare și SGBD relațional, funcțional și convenabil în generarea de interogări.

Majoritatea utilizatorilor MongoDB nu au nevoie de multe dintre caracteristicile avansate pe care le oferă MongoDB; totuși, au nevoie de o soluție de bază de date open source ușor de utilizat. Recunoscând acest lucru, FerretDB este aici pentru a umple acest gol.

MongoDB acceptă stocarea documentelor într-un format asemănător JSON, are un limbaj destul de flexibil pentru generarea de interogări, poate crea indecși pentru diverse atribute stocate, oferă stocare eficientă a obiectelor binare mari, acceptă înregistrarea operațiunilor de modificare și adăugare de date la baza de date, poate funcționa conform paradigmei Map/Reduce, acceptă replicarea și construirea de configurații tolerante la erori.

În lansarea FerretDB 0.1.0 se remarcă faptul că complet reproiectat modul în care sunt preluate datele PostgreSQL. Anterior, pentru fiecare solicitare MongoDB primită, era generată o interogare SQL către PostgreSQL, folosind funcții pentru a lucra cu formatul JSON și filtrarea rezultatelor pe partea PostgreSQL.

Datorita diferentelor în semantica funcțiilor json PostgreSQL și MongoDB, a existat o discrepanță în comportament la compararea și ordonarea diferitelor tipuri. Pentru a rezolva această problemă, un eșantion de date redundante este acum extras din PostgreSQL și filtrarea rezultatului se face pe partea FerretDB, ceea ce a făcut posibilă repetarea comportamentului MongoDB în majoritatea situațiilor.

Prețul compatibilității sporite a fost o penalizare de performanță, care în edițiile viitoare este de așteptat să fie compensată de filtrarea selectivă pe partea FerretDB a doar interogărilor pentru care există o divergență comportamentală.

De exemplu, interogarea „db.collection.find({_id: ‘some-id-value’})” poate fi procesată complet în PostgreSQL. Scopul principal al proiectului în această etapă de dezvoltare este acela de a obține compatibilitatea cu MongoDB, iar performanța este încă retrogradată pe plan secund.

Dintre modificările funcționale din noua versiune, există suport pentru toți operatorii pe biți, operatorul de comparație „$e”, precum și operatorii „$elemMatch” și „$bitsAllClear”.

În cele din urmă pentru cei interesați să afle mai multe despre asta, ar trebui să știe că codul este scris în Go și este distribuit sub licența Apache 2.0 și puteți verifica codul acestuia în următorul link.


Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: AB Internet Networks 2008 SL
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.