Lëshimi i parë i qëndrueshëm i FerretDB, zbatimi MongoDB bazuar në PostgreSQL DBMS

Është publikuar publikimi i projektit FerretDB 1.0, i cili ju lejon të zëvendësoni DBMS MongoDB të orientuar drejt dokumenteve me PostgreSQL pa bërë ndryshime në kodin e aplikacionit. FerretDB zbatohet si një server proxy që përkthen thirrjet në MongoDB në pyetje SQL në PostgreSQL, i cili ju lejon të përdorni PostgreSQL si ruajtje aktuale. Versioni 1.0 është shënuar si versioni i parë i qëndrueshëm i gatshëm për përdorim të përgjithshëm. Kodi është shkruar në Go dhe shpërndahet nën licencën Apache 2.0.

Audienca kryesore e synuar për FerretDB janë përdoruesit që nuk përdorin veçori të avancuara MongoDB në aplikacionet e tyre, por duan të përdorin një pirg softuerësh plotësisht të hapur. Në fazën e tij aktuale të zhvillimit, FerretDB mbështet një nëngrup të veçorive MongoDB që përdoren më së shpeshti në aplikacionet tipike. Nevoja për të zbatuar FerretDB mund të lindë në lidhje me kalimin e MongoDB në një licencë SSPL jo të lirë, e cila bazohet në licencën AGPLv3, por nuk është e hapur, pasi përmban një kërkesë diskriminuese për të furnizuar nën licencën SSPL jo vetëm vetë kodi i aplikacionit, por edhe kodet burimore të të gjithë komponentëve të përfshirë në ofrimin e shërbimeve cloud.

MongoDB zë një vend midis sistemeve të shpejta dhe të shkallëzueshme që funksionojnë në të dhëna kyçe/vlera dhe DBMS-ve relacionale që janë funksionale dhe të lehta për t'u kërkuar. MongoDB mbështet ruajtjen e dokumenteve në një format të ngjashëm me JSON, ka një gjuhë mjaft fleksibël për gjenerimin e pyetjeve, mund të krijojë indekse për atribute të ndryshme të ruajtura, siguron me efikasitet ruajtjen e objekteve të mëdha binare, mbështet regjistrimin e operacioneve për të ndryshuar dhe shtuar të dhëna në bazën e të dhënave, mund punojnë në përputhje me paradigmën Harta/Redukto, mbështet replikimin dhe ndërtimin e konfigurimeve tolerante ndaj gabimeve.

Ndër ndryshimet në FerretDB 1.0:

  • Zbatoi komandat createIndexes dhe dropIndexes për krijimin dhe hedhjen e një ose më shumë indekseve në një koleksion.
  • Komanda getMore është zbatuar për të shfaqur një pjesë të re të rezultatit të marrë nga ekzekutimi i komandave që kthejnë një kursor, si gjetja dhe agregimi.
  • U shtua mbështetje për operatorin e grumbullimit $sum për të llogaritur shumën e vlerave të grupit.
  • U shtua mbështetje për operatorët $limit dhe $skip për të kufizuar numrin dhe për të kapërcyer dokumentet kur grumbullohen.
  • Mbështetje e shtuar për operatorin $count për numërimin e dokumenteve gjatë grumbullimit.
  • U shtua mbështetje për operatorin $unwind për të analizuar fushat e grupit në dokumentet hyrëse dhe për të formuar një listë me një dokument të veçantë për secilin element të grupit.
  • U shtua mbështetje e pjesshme për komandat collStats, dbStats dhe dataSize për të marrë statistikat e mbledhjes dhe bazës së të dhënave dhe madhësinë e të dhënave.

Burimi: opennet.ru

Shto një koment