Udgivelsen af FerretDB 1.0 er offentliggjort, hvilket muliggør erstatning af den dokumentorienterede database MongoDB med PostgreSQL uden ændringer i applikationskoden. FerretDB er implementeret som en proxyserver, der oversætter henvendelser til MongoDB til SQL-forespørgsler til PostgreSQL, hvilket tillader brug af PostgreSQL som det faktiske lager. Version 1.0 er markeret som den første stabile udgivelse, klar til udbredt brug. Koden er skrevet i Go og distribueres under Apache 2.0-licensen.
Den primære målgruppe for FerretDB er brugere, der ikke udnytter de avancerede funktioner i MongoDB i deres applikationer, men ønsker at anvende en fuldt åben softwarestak. På nuværende udviklingstrin understøtter FerretDB et udvalg af MongoDB's funktioner, der mest almindeligt anvendes i typiske applikationer. Behovet for at implementere FerretDB kan opstå i forbindelse med MongoDB's overgang til den ikke-frie SSPL-licens, som er baseret på AGPLv3-licensen, men ikke er åben, da den indeholder diskriminerende krav om levering ikke kun af applikationskoden, men også af kildekoden til alle komponenter, der er involveret i leveringen af cloudservice.
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.
Blandt ændringerne i FerretDB 1.0:
- Implementering af kommandoerne createIndexes og dropIndexes til oprettelse og sletning af en eller flere indekser til en samling.
- Implementering af kommandoen getMore for at vise et nyt sæt resultater opnået ved udførelse af kommandoer, der returnerer en cursor, såsom find og aggregate.
- Tilføjet støtte til aggregationsoperatoren $sum til beregning af summen af værdier i en gruppe.
- Der er tilføjet understøttelse af operatorerne $limit og $skip til at begrænse antallet af dokumenter og springe over dokumenter under aggregering.
- Der er tilføjet understøttelse af operatoren $count til at tælle dokumenter under aggregering.
- Der er tilføjet understøttelse af operatoren $unwind til at analysere feltet i arrays i indgående dokumenter og danne en liste med et separat dokument for hvert arrayelement.
- Der er tilføjet delvis understøttelse af kommandoerne collStats, dbStats og dataSize til at få statistik for samlingen og databasen samt datastørrelsen.
Kilde: opennet.ru
