Udgivelsen af FerretDB 0.3-projektet er offentliggjort, hvilket muliggør erstatning af dokumentorienteret DBMS MongoDB med PostgreSQL uden ændringer i applikationskoden. FerretDB fungerer som en proxyserver, der oversætter henvendelser til MongoDB til SQL-forespørgsler til PostgreSQL, hvilket muliggør brugen af PostgreSQL som det faktiske lager. Koden er skrevet i Go og distribueres under Apache 2.0-licensen.
Behovet for migration kan opstå i forbindelse med overgangen af MongoDB til den ikke-frie SSPL-licens, som er baseret på AGPLv3-licensen, men som ikke er open source, da den indeholder diskriminerende krav om levering under SSPL-licensen, ikke kun af selve applikationskoden, men også af kildekoden til alle de komponenter, der er involveret i levering af cloudtjenesten.
Den primære målgruppe for FerretDB er brugere, der ikke anvender de avancerede funktioner i MongoDB, men ønsker at bruge en helt åbent software-stack. På nuværende udviklingsstadium understøtter FerretDB kun en del af de funktioner, der findes i MongoDB, som oftest anvendes i typiske applikationer. I fremtiden planlægger de at opnå fuld kompatibilitet med drivere til MongoDB og give mulighed for at bruge FerretDB som en gennemsigtig erstatning for MongoDB.
MongoDB ligger mellem hurtige og skalerbare systemer, der arbejder med data i nøgle/værdi-format, og relationelle databaser, der er funktionelle og nemme at forespørge. MongoDB understøtter lagring af dokumenter i et JSON-lignende format, har et tilstrækkeligt fleksibelt sprog til at lave forespørgsler, kan oprette indekser for forskellige gemte attributter, effektivt håndtere lagring af store binære objekter, understøtter journalføring af operationer, der ændrer og tilføjer data til databasen, kan arbejde efter Map/Reduce-paradigmet, og understøtter replikation og opbygning af fejltolerante konfigurationer.
I udgivelsen af FerretDB 0.3 er kommandoen findAndModify implementeret, som ændrer et dokument, men returnerer dets oprindelige version. Operatorerne til opdatering af felter — $inc og $set — er implementeret. Support til sortering af skalar datatyper er tilføjet.
Kilde: opennet.ru
