Version 1.0 av FerretDB har publicerats, vilket möjliggör att ersätta dokumentorienterad databas MongoDB med PostgreSQL utan att göra några ändringar i applikationskoden. FerretDB fungerar som en proxyserver som omvandlar förfrågningar till MongoDB till SQL-frågor mot PostgreSQL, vilket gör det möjligt att använda PostgreSQL som det faktiska lagret. Version 1.0 markeras som den första stabila utgåvan, redo för allmänt bruk. Koden är skriven i Go och distribueras under Apache 2.0-licensen.
Den primära målgruppen för FerretDB är användare som inte utnyttjar de avancerade funktionerna i MongoDB i sina applikationer, men som vill använda en helt öppen programvarustack. Vid denna utvecklingsfas stödjer FerretDB en delmängd av de funktioner i MongoDB som oftast används i typiska applikationer. Behovet av att implementera FerretDB kan uppstå med övergången av MongoDB till den icke-fria SSPL-licensen, som baseras på AGPLv3-licensen men inte är öppen, eftersom den innehåller diskriminerande krav på att inte bara koden till själva applikationen utan även källkoden för alla komponenter som involveras i att tillhandahålla en molntjänst måste levereras under SSPL.
MongoDB befinner sig i en nisch mellan snabba och skalbara system som hanterar data i nyckel/värde-format och relationsdatabaser, som är funktionella och användarvänliga för att skapa frågor. MongoDB stöder lagring av dokument i JSON-liknande format, har ett tillräckligt flexibelt språk för att skapa frågor, kan skapa index för olika lagrade attribut, effektivt lagra stora binära objekt, stödja loggning av operationer för att ändra och lägga till data i databasen, kan arbeta enligt Map/Reduce-paradigmet och stöder replikering samt skapande av hög tillgänglighet-konfigurationer.
Bland förändringarna i FerretDB 1.0:
- Kommandona createIndexes och dropIndexes har implementerats för att skapa och ta bort en eller flera index för en samling.
- Kommandot getMore har implementerats för att få en ny portion resultat från kommandon som returnerar en cursor, såsom find och aggregate.
- Stödet för aggregationsoperatorn $sum har lagts till för att beräkna summan av värden i en grupp.
- Stödet för operatorerna $limit och $skip har lagts till för att begränsa antalet och hoppa över dokument vid aggregationen.
- Stödet för operatorn $count har lagts till för att räkna dokument vid aggregationen.
- Stödet för operatorn $unwind har lagts till för att utvinna fält från arrayer i inkommande dokument och skapa en lista med ett separat dokument för varje element i arrayen.
- Partiellt stöd för kommandona collStats, dbStats och dataSize har lagts till för att få statistik om samlingen och databasen samt datastorleken.
Källa: opennet.ru
