Paglabas ng FerretDB 0.1, isang pagpapatupad ng MongoDB batay sa PostgreSQL DBMS

Ang paglabas ng FerretDB 0.1 na proyekto (dating MangoDB) ay nai-publish, na nagbibigay-daan sa iyong palitan ang document-oriented na DBMS MongoDB ng PostgreSQL nang hindi gumagawa ng mga pagbabago sa application code. Ang FerretDB ay ipinatupad bilang isang proxy server na nagsasalin ng mga tawag sa MangoDB sa mga SQL query sa PostgreSQL, na nagpapahintulot sa PostgreSQL na magamit bilang aktwal na imbakan. Ang code ay nakasulat sa Go at ipinamahagi sa ilalim ng lisensya ng Apache 2.0.

Ang pangangailangan para sa paglipat ay maaaring lumitaw dahil sa paglipat ng MongoDB sa isang pagmamay-ari na lisensya ng SSPL, na nakabatay sa lisensya ng AGPLv3, ngunit hindi bukas, dahil naglalaman ito ng isang kinakailangang diskriminasyon upang maihatid sa ilalim ng lisensya ng SSPL hindi lamang ang code ng aplikasyon mismo, kundi pati na rin ang source code ng lahat ng bahaging kasangkot sa probisyon ng serbisyo sa cloud.

Ang target na audience ng FerretDB ay mga user na hindi gumagamit ng mga advanced na kakayahan ng MongoDB sa kanilang mga application, ngunit gustong gumamit ng ganap na bukas na software stack. Sa kasalukuyang yugto ng pag-unlad, sinusuportahan pa rin ng FerretDB ang bahagi lamang ng mga kakayahan ng MongoDB na kadalasang ginagamit sa mga karaniwang application. Sa hinaharap, plano nilang makamit ang ganap na pagiging tugma sa mga driver para sa MongoDB at magbigay ng kakayahang gamitin ang FerretDB bilang isang transparent na kapalit para sa MongoDB.

Alalahanin natin na ang MongoDB ay sumasakop sa isang angkop na lugar sa pagitan ng mabilis at nasusukat na mga system na nagpapatakbo ng data sa key/value format, at mga relational na DBMS na gumagana at madaling magbalangkas ng mga query. Sinusuportahan ng MongoDB ang pag-iimbak ng mga dokumento sa isang format na tulad ng JSON, may medyo nababaluktot na wika para sa pagbuo ng mga query, maaaring lumikha ng mga index para sa iba't ibang naka-imbak na katangian, mahusay na nagbibigay ng imbakan ng malalaking binary na mga bagay, sumusuporta sa pag-log ng mga operasyon para sa pagbabago at pagdaragdag ng data sa database, maaari gumana alinsunod sa paradigm Map/Reduce, sumusuporta sa pagkopya at pagbuo ng mga configuration na hindi mapagparaya sa fault.

Ang paglabas ng FerretDB 0.1.0 ay ganap na muling idisenyo ang paraan ng pagkuha ng data mula sa PostgreSQL. Dati, para sa bawat papasok na kahilingan sa MongoDB, isang SQL query ang nabuo sa PostgreSQL, gamit ang mga function para sa pagtatrabaho sa JSON na format at pag-filter ng mga resulta sa PostgreSQL side. Dahil sa mga pagkakaiba sa semantics ng PostgreSQL at MongoDB json function, nagkaroon ng pagkakaiba sa pag-uugali kapag naghahambing at nag-uuri ng iba't ibang uri. Upang malutas ang problemang ito, ang data ay ngayon ay kalabisan na kinukuha mula sa PostgreSQL, at ang resulta ay na-filter sa gilid ng FerretDB, na naging posible upang kopyahin ang pag-uugali ng MongoDB sa karamihan ng mga sitwasyon.

Ang presyo ng tumaas na compatibility ay isang pagbaba sa performance, na sa mga susunod na release ay inaasahan nilang mabayaran sa pamamagitan ng piling pag-filter sa side ng FerretDB na mga query lamang kung saan mayroong pagkakaiba sa pag-uugali. Halimbawa, ang query na "db.collection.find({_id: 'some-id-value'})" ay maaaring ganap na maproseso sa PostgreSQL. Ang pangunahing layunin ng proyekto sa yugtong ito ng pag-unlad ay upang makamit ang pagiging tugma sa MongoDB, at ang pagganap ay nai-relegate sa background sa ngayon. Kabilang sa mga functional na pagbabago sa bagong bersyon, ang suporta para sa lahat ng bit operator, ang “$eq” comparison operator, gayundin ang “$elemMatch” at “$bitsAllClear” operator ay nabanggit.

Pinagmulan: opennet.ru

Magdagdag ng komento