Avaldatud on FerretDB 0.1 (endine MangoDB) projekt, mis vÔimaldab asendada dokumentide orienteeritud andmebaas MongoDB PostgreSQL-iga, ilma et oleks vaja rakenduste koodis muudatusi teha. FerretDB on rakendatud kui vaheserver, mis tÔlgendab MangoDB pÀringud SQL-pÀringuteks PostgreSQL-ile, vÔimaldades kasutada PostgreSQL-i tegeliku andmehoidla kui. Kood on kirjutatud Go keeles ja levitatakse Apache 2.0 litsentsi all.
Migreerimise vajadus vĂ”ib tekkida seoses MongoDB ĂŒleminekuga mitteavalduslikule litsentsile SSPL, mis pĂ”hineb AGPLv3 litsentsil, kuid pole avatud, kuna sisaldab diskrimineerivat nĂ”uet pakkuda mitte ainult rakenduse lĂ€htekoodi, vaid ka kĂ”igi komponentide lĂ€htekoodi, mis on seotud pilveteenuse osutamisega, SSPL litsentsi alusel.
FerretDB sihtrĂŒhmaks on kasutajad, kes ei kasuta oma rakendustes MongoDB tĂ€iustatud vĂ”imalusi, kuid soovivad kasutada tĂ€ielikult avatud tarkvara. Praeguses arengu etapis toetab FerretDB vaid osa MongoDB funktsionaalsustest, mis on kĂ”ige sagedamini rakendustes kasutusel. Tulevikus plaanitakse saavutada tĂ€ielik ĂŒhilduvus MongoDB draiveritega ja vĂ”imaldada FerretDB-d kasutada MongoDB lĂ€bipaistva asendusena.
Tuletame meelde, et MongoDB hĂ”ivab niĆĄi kiirete ja skaleeritavate sĂŒsteemide vahel, mis töötlevad andmeid vĂ”tme/vÀÀrtuse formaadis, ning relatsiooniliste andmebaaside, mis on funktsionaalsed ja mugavad pĂ€ringute koostamiseks. MongoDB toetab dokumentide salvestamist JSON-taolisel kujul, tal on piisavalt paindlik pĂ€ringute koostamise keel, ta suudab luua indekseid erinevate salvestatud atribuutide jaoks, tĂ”husalt haldab suurte binaarobjektide salvestamist, toetab tegevuste ajalugu andmete muutmisel ja lisamisel andmebaasi, vĂ”ib töötada Map/Reduce paradigmas, toetab replikatsiooni ja veakindlate konfiguratsioonide loomist.
FerretDB 0.1.0 versioonis on tĂ€ielikult ĂŒmber kirjutatud andmete hankimise meetod PostgreSQL-ist. Varem moodustati iga tulnud MongoDB pĂ€ringu jaoks ĂŒks SQL-pĂ€ring PostgreSQL-ile, mis kasutas JSON vorminguga töötamiseks funktsioone ja teostas tulemuste filtreerimist PostgreSQL-i poolel. PostgreSQL ja MongoDB erinevuste tĂ”ttu json-funktsioonide semantikas esines kĂ€itumise mittevastavust erinevatel tĂŒĂŒpide vĂ”rdlemisel ja sorteerimisel. Selle mure lahendamiseks hankitakse PostgreSQL-ist nĂŒĂŒd liigtulemused, samas kui tulemuste filtreerimine toimub FerretDB poolel, mis vĂ”imaldas peegeldada MongoDB kĂ€itumist enamikus olukordades.
Ăhildumise suurendamise hinnaks on jĂ”udluse langus, mida tulevastes versioonides plaanitakse kompenseerida FerretDB poolel valik filtreerimisega, et kĂ€sitleda ainult neid pĂ€ringuid, mille kĂ€itumine erineb. NĂ€iteks pĂ€ring "db.collection.find({_id: 'some-id-value'})" vĂ”ib olla tĂ€ielikult töödeldud PostgreSQL-is. Projekti peamiseks ĂŒlesandeks selle arengu praeguses etapis on MongoDB-ga ĂŒhilduvuse saavutamine, samas kui jĂ”udlus tĂ”ukatakse esialgu teisele kohale. Uues versioonis on funktsionaalsetest muudatustest mĂ€rgitud kĂ”igi bititasandi operaatorite, "$eq" vĂ”rdlusoperaatori, samuti "$elemMatch" ja "$bitsAllClear" operaatorite toetus.
Allikas: opennet.ru
