De uitgave van het FerretDB-project 0.3 is gepubliceerd, waarmee de document-georiënteerde database MongoDB kan worden vervangen door PostgreSQL zonder aanpassingen in de applicatiecode. FerretDB is geïmplementeerd als een proxyserver die verzoeken naar MongoDB omzet in SQL-query's naar PostgreSQL, waardoor PostgreSQL als de daadwerkelijke opslag kan worden gebruikt. De code is geschreven in de programmeertaal Go en verspreid onder de Apache 2.0-licentie.
De behoefte aan migratie kan ontstaan door de overstap van MongoDB naar de niet-vrije SSPL-licentie, die is gebaseerd op de AGPLv3-licentie maar niet open source is, omdat het een discriminerende eis bevat om niet alleen de code van de applicatie, maar ook de bronbestanden van alle componenten die betrokken zijn bij het leveren van de cloudservice onder de SSPL-licentie te leveren.
De belangrijkste doelgroep van FerretDB zijn gebruikers die de geavanceerde mogelijkheden van MongoDB niet in hun applicaties gebruiken, maar een volledig open softwarestack willen gebruiken. In deze fase van ontwikkeling ondersteunt FerretDB nog slechts een deel van de mogelijkheden van MongoDB die het meest worden gebruikt in standaardapplicaties. In de toekomst is het de bedoeling om volledige compatibiliteit met de MongoDB-drivers te bereiken en de mogelijkheid te bieden om FerretDB als een transparante vervanging voor MongoDB te gebruiken.
MongoDB bevindt zich in een niche tussen snelle en schaalbare systemen die gegevens in het sleutel-waardeformaat beheren, en relationele databases die functioneel zijn en gemakkelijk queries kunnen opstellen. MongoDB ondersteunt het opslaan van documenten in een JSON-achtig formaat, heeft een vrij flexibele query-taal, kan indexen creëren voor verschillende opgeslagen attributen, biedt effectief opslag voor grote binaire objecten, ondersteunt het loggen van operaties voor het wijzigen en toevoegen van gegevens aan de database, kan werken volgens het Map/Reduce-paradigma, ondersteunt replicatie en het opbouwen van fouttolerante configuraties.
In de release van FerretDB 0.3 is de findAndModify-opdracht geïmplementeerd, die een document wijzigt maar de oorspronkelijke versie retourneert. Er zijn updateoperators voor velden geïmplementeerd — $inc en $set. Ondersteuning voor het sorteren van scalare datatypes is toegevoegd.
Bron: opennet.ru
