Izdaja FerretDB 0.1, implementacije MongoDB, ki temelji na DBMS PostgreSQL

Objavljena je bila izdaja projekta FerretDB 0.1 (prej MangoDB), ki vam omogoča zamenjavo dokumentno usmerjenega DBMS MongoDB s PostgreSQL brez spreminjanja kode aplikacije. FerretDB je implementiran kot proxy strežnik, ki prevede klice v MangoDB v poizvedbe SQL v PostgreSQL, kar omogoča, da se PostgreSQL uporablja kot dejanski pomnilnik. Koda je napisana v Go in se distribuira pod licenco Apache 2.0.

Potreba po selitvi se lahko pojavi zaradi prehoda MongoDB na lastniško licenco SSPL, ki temelji na licenci AGPLv3, vendar ni odprta, saj vsebuje diskriminatorno zahtevo po dostavi pod licenco SSPL ne le same kode aplikacije, ampak tudi izvorno kodo vseh komponent, vključenih v zagotavljanje storitve v oblaku.

Ciljna publika FerretDB so uporabniki, ki v svojih aplikacijah ne uporabljajo naprednih zmožnosti MongoDB, ampak želijo uporabljati popolnoma odprt programski sklad. Na trenutni stopnji razvoja FerretDB še vedno podpira le del zmogljivosti MongoDB, ki se najpogosteje uporabljajo v tipičnih aplikacijah. V prihodnosti nameravajo doseči popolno združljivost z gonilniki za MongoDB in zagotoviti možnost uporabe FerretDB kot pregledne zamenjave za MongoDB.

Spomnimo se, da MongoDB zaseda nišo med hitrimi in razširljivimi sistemi, ki upravljajo s podatki v obliki ključ/vrednost, in relacijskimi DBMS, ki so funkcionalni in jih je enostavno oblikovati poizvedbe. MongoDB podpira shranjevanje dokumentov v formatu, podobnem JSON, ima dokaj prilagodljiv jezik za generiranje poizvedb, lahko ustvarja indekse za različne shranjene atribute, učinkovito zagotavlja shranjevanje velikih binarnih objektov, podpira beleženje operacij za spreminjanje in dodajanje podatkov v zbirko podatkov, lahko deluje v skladu s paradigmo Map/Reduce, podpira replikacijo in gradnjo konfiguracij, odpornih na napake.

Izdaja FerretDB 0.1.0 je popolnoma preoblikovala metodo pridobivanja podatkov iz PostgreSQL. Prej je bila za vsako dohodno zahtevo MongoDB generirana ena poizvedba SQL za PostgreSQL z uporabo funkcij za delo s formatom JSON in filtriranjem rezultatov na strani PostgreSQL. Zaradi razlik v semantiki funkcij json PostgreSQL in MongoDB je prišlo do neskladja v vedenju pri primerjavi in ​​razvrščanju različnih tipov. Da bi rešili to težavo, se podatki zdaj redundantno pridobivajo iz PostgreSQL, rezultat pa je filtriran na strani FerretDB, kar je omogočilo ponovitev vedenja MongoDB v večini situacij.

Cena povečane združljivosti je bilo zmanjšanje zmogljivosti, za kar pričakujejo, da bodo v prihodnjih izdajah nadomestili s selektivnim filtriranjem na strani FerretDB samo poizvedbe, pri katerih je vedenje neskladno. Na primer, poizvedbo "db.collection.find({_id: 'some-id-value'})" je mogoče v celoti obdelati v PostgreSQL. Primarni cilj projekta na tej stopnji razvoja je doseči združljivost z MongoDB, zmogljivost pa je za zdaj potisnjena v ozadje. Med funkcionalnimi spremembami v novi različici je omenjena podpora za vse bitne operaterje, primerjalni operator “$eq” ter operaterja “$elemMatch” in “$bitsAllClear”.

Vir: opennet.ru

Dodaj komentar