Kutolewa kwa FerretDB 0.1, utekelezaji wa MongoDB kulingana na PostgreSQL DBMS

Kutolewa kwa mradi wa FerretDB 0.1 (zamani MangoDB) kumechapishwa, kukuruhusu kubadilisha DBMS MongoDB inayoelekeza hati na kuweka PostgreSQL bila kufanya mabadiliko kwenye msimbo wa maombi. FerretDB inatekelezwa kama seva mbadala ambayo hutafsiri simu kwa MangoDB hadi hoja za SQL hadi PostgreSQL, na hivyo kuruhusu PostgreSQL itumike kama hifadhi halisi. Nambari hiyo imeandikwa kwa Go na kusambazwa chini ya leseni ya Apache 2.0.

Haja ya uhamiaji inaweza kutokea kwa sababu ya mpito wa MongoDB hadi leseni ya umiliki ya SSPL, ambayo inategemea leseni ya AGPLv3, lakini haijafunguliwa, kwa kuwa ina mahitaji ya kibaguzi ya kutoa chini ya leseni ya SSPL sio tu msimbo wa maombi yenyewe, lakini pia. msimbo wa chanzo wa vipengele vyote vinavyohusika katika utoaji wa huduma ya wingu.

Watazamaji wanaolengwa na FerretDB ni watumiaji ambao hawatumii uwezo wa hali ya juu wa MongoDB katika programu zao, lakini wanataka kutumia programu iliyofunguliwa kabisa. Katika hatua ya sasa ya maendeleo, FerretDB bado inasaidia sehemu tu ya uwezo wa MongoDB ambao hutumiwa mara nyingi katika programu za kawaida. Katika siku zijazo, wanapanga kufikia upatanifu kamili na viendeshaji vya MongoDB na kutoa uwezo wa kutumia FerretDB kama mbadala wa uwazi wa MongoDB.

Tukumbuke kwamba MongoDB inachukua nafasi kati ya mifumo ya haraka na inayoweza kusambazwa ambayo huendesha data katika umbizo la ufunguo/thamani, na DBMS za uhusiano ambazo zinafanya kazi na rahisi kutunga hoja. MongoDB inasaidia kuhifadhi hati katika umbizo linalofanana na JSON, ina lugha inayoweza kunyumbulika kwa urahisi kwa ajili ya kuzalisha maswali, inaweza kuunda faharisi za sifa mbalimbali zilizohifadhiwa, kwa ufanisi hutoa uhifadhi wa vitu vikubwa vya binary, inasaidia ukataji wa shughuli za kubadilisha na kuongeza data kwenye hifadhidata, inaweza. fanya kazi kwa mujibu wa ramani ya dhana/Punguza, inasaidia urudufishaji na ujenzi wa usanidi unaostahimili makosa.

Kutolewa kwa FerretDB 0.1.0 kuliunda upya kabisa mbinu ya kurejesha data kutoka kwa PostgreSQL. Hapo awali, kwa kila ombi la MongoDB linaloingia, swali moja la SQL lilitolewa kwa PostgreSQL, kwa kutumia vitendaji vya kufanya kazi na umbizo la JSON na kuchuja matokeo kwa upande wa PostgreSQL. Kwa sababu ya tofauti za semantiki za kazi za PostgreSQL na MongoDB json, kulikuwa na utofauti wa tabia wakati wa kulinganisha na kupanga aina tofauti. Ili kutatua tatizo hili, data sasa inachukuliwa tena kutoka kwa PostgreSQL, na matokeo yake yanachujwa kwa upande wa FerretDB, ambayo ilifanya iwezekane kuiga tabia ya MongoDB katika hali nyingi.

Bei ya ongezeko la uoanifu ilikuwa kupungua kwa utendakazi, ambayo katika matoleo yajayo wanatarajia kufidia kwa kuchuja kwa kuchagua tu hoja za upande wa FerretDB ambazo kuna tofauti katika tabia. Kwa mfano, hoja "db.collection.find({_id: 'some-id-value'})" inaweza kuchakatwa kabisa katika PostgreSQL. Lengo kuu la mradi katika hatua hii ya maendeleo ni kufikia uoanifu na MongoDB, na utendakazi umewekwa chinichini kwa sasa. Miongoni mwa mabadiliko ya utendaji katika toleo jipya, usaidizi kwa waendeshaji biti zote, opereta wa kulinganisha "$eq", pamoja na waendeshaji "$elemMatch" na "$bitsAllClear" hubainishwa.

Chanzo: opennet.ru

Kuongeza maoni