FerretDB 0.1 kaleratzea, PostgreSQL DBMSn oinarritutako MongoDB-ren inplementazioa

FerretDB 0.1 proiektuaren oharra (lehen MangoDB) argitaratu da, dokumentuetara zuzendutako MongoDB DBMS PostgreSQL-rekin ordezkatzeko aukera emanez aplikazioaren kodean aldaketarik egin gabe. FerretDB proxy zerbitzari gisa inplementatuta dago, MangoDB-rako deiak PostgreSQL-rako SQL kontsultetara itzultzen dituena, PostgreSQL benetako biltegiratze gisa erabiltzeko aukera emanez. Kodea Go-n idatzita dago eta Apache 2.0 lizentziapean banatzen da.

Migrazioaren beharra sor daiteke MongoDBren jabedun SSPL lizentzia baterako trantsizioa dela eta, hau da, AGPLv3 lizentzian oinarritzen dena, baina ez da irekia, SSPL lizentziapean entregatzeko eskakizun diskriminatzailea baitauka, aplikazioaren kodea bera ez ezik, baita ere. hornidura-hodeiko zerbitzuan parte hartzen duten osagai guztien iturburu-kodea.

FerretDBren xede-publikoa beren aplikazioetan MongoDB-ren gaitasun aurreratuak erabiltzen ez dituzten erabiltzaileak dira, baina software-pila guztiz irekia erabili nahi dutenak. Gaur egungo garapen-fasean, FerretDB-k aplikazio tipikoetan gehien erabiltzen diren MongoDB gaitasunen zati bat baino ez du onartzen oraindik. Etorkizunean, MongoDB-ren kontrolatzaileekin bateragarritasun osoa lortzeko asmoa dute eta FerretDB MongoDB-ren ordezko garden gisa erabiltzeko gaitasuna eskaintzea.

Gogoratu MongoDB datuen gako/balio formatuan funtzionatzen duten sistema azkar eta eskalagarrien eta DBMS erlazionalen artean, kontsultak sortzeko funtzionala eta erosoa. MongoDB-k dokumentuak JSON antzeko formatuan biltegiratzea onartzen du, kontsultak sortzeko nahiko lengoaia malgua du, gordetako hainbat atribututarako indizeak sor ditzake, objektu bitar handiak modu eraginkorrean biltegiratzen ditu, datu-basean aldatzeko eta datuak gehitzeko eragiketen erregistroa onartzen du, Map/Reduce paradigmaren arabera lan egiten du, erreplikazioa onartzen du eta matxurak jasan ditzaketen konfigurazioak eraikitzen ditu.

FerretDB 0.1.0 kaleratzeak PostgreSQL-tik datuak berreskuratzeko metodoa guztiz birmoldatu zuen. Aurretik, sarrerako MongoDB eskaera bakoitzeko, SQL kontsulta bat sortu zen PostgreSQL-ri, JSON formatuarekin lan egiteko eta emaitzak PostgreSQL aldean iragazteko funtzioak erabiliz. PostgreSQL eta MongoDB json funtzioen semantikaren desberdintasunen ondorioz, portaera desberdina zegoen mota desberdinak alderatzean eta ordenatzean. Arazo hau konpontzeko, datuak PostgreSQL-tik modu erredundantean eskuratzen dira, eta emaitza FerretDB aldean iragazten da, eta horri esker, MongoDB-ren portaera errepikatu daiteke egoera gehienetan.

Bateragarritasuna handitzearen prezioa errendimenduaren murrizketa izan zen, etorkizuneko argitalpenetan FerretDB aldean jokabidean desadostasuna duten kontsultak selektiboki iragaziz konpentsatzea espero dute. Adibidez, "db.collection.find({_id: 'some-id-value'})" kontsulta guztiz prozesatu daiteke PostgreSQL-n. Garapen-fase honetan proiektuaren helburu nagusia MongoDB-rekin bateragarritasuna lortzea da, eta errendimendua bigarren maila batean geratzen da oraingoz. Bertsio berriaren funtzio-aldaketen artean, bit-operadore guztien laguntza, "$eq" konparazio-operadorearen, baita "$elemMatch" eta "$bitsAllClear" eragileen laguntza ere nabarmentzen da.

Iturria: opennet.ru

Gehitu iruzkin berria