FerretDBren lehen bertsio egonkorra, PostgreSQL DBMSn oinarritutako MongoDB inplementazioa

FerretDB 1.0 proiektuaren oharra argitaratu da, eta horri esker, dokumentuetara zuzendutako MongoDB DBMS PostgreSQLrekin ordeztu dezakezu aplikazioaren kodean aldaketarik egin gabe. FerretDB proxy zerbitzari gisa inplementatuta dago, MongoDB-rako deiak PostgreSQL-rako SQL kontsultetara itzultzen dituena, eta horrek PostgreSQL benetako biltegiratze gisa erabiltzeko aukera ematen du. 1.0 bertsioa erabilera orokorrerako prest dagoen lehen bertsio egonkor gisa markatuta dago. Kodea Go-n idatzita dago eta Apache 2.0 lizentziapean banatzen da.

FerretDB-ren helburu nagusia beren aplikazioetan MongoDB funtzio aurreratuak erabiltzen ez dituzten erabiltzaileak dira, baina software-pila guztiz irekia erabili nahi duten erabiltzaileak dira. Gaur egungo garapen-fasean, FerretDB-k aplikazio tipikoetan gehien erabiltzen diren MongoDB ezaugarrien azpimultzo bat onartzen du. FerretDB ezartzeko beharra sor daiteke MongoDB aske ez den SSPL lizentzia batera igarotzearekin lotuta, hau da, AGPLv3 lizentzian oinarritzen dena, baina ez dago irekita, SSPL lizentziaren arabera hornitzeko eskakizun diskriminatzailea baitakar. aplikazio-kodea bera, baina baita hodeiko zerbitzuak eskaintzean parte hartzen duten osagai guztien iturburu-kodeak ere.

MongoDB sistema azkar eta eskalagarrien arteko nitxo bat hartzen du gako/balioen datuekin eta funtzionalak eta kontsultatzeko errazak diren DBMS erlazionalak. 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 egin, erreplikatzea eta akatsekiko tolerantzia-konfigurazioak eraikitzea onartzen du.

FerretDB 1.0-ko aldaketen artean:

  • createIndexes eta dropIndexes komandoak inplementatu dira indize bat edo gehiago bilduma batean sortzeko eta jaregiteko.
  • getMore komandoa inplementatu da kurtsorea itzultzen duten komandoen exekuziotik lortutako emaitzaren zati berri bat bistaratzeko, hala nola bilatu eta agregatu.
  • $sum agregazio-operadorearen laguntza gehitu da taldeen balioen batura kalkulatzeko.
  • $limit eta $skip operadoreentzako laguntza gehitu da kopurua mugatzeko eta dokumentuak saltatzeko agregazioan.
  • $count operadorearen euskarria gehitu da dokumentuak zenbatzeko agregazioan.
  • $unwind operadorearen laguntza gehitu da sarrerako dokumentuetako matrize-eremuak analizatzeko eta zerrenda bat osatzeko dokumentu bereizi batekin matrize-elementu bakoitzeko.
  • CollStats, dbStats eta dataSize komandoetarako laguntza partziala gehitu da bilduma eta datu-baseen estatistikak eta datuen tamaina lortzeko.

Iturria: opennet.ru

Gehitu iruzkin berria