Uitgave van FerretDB 0.1, implementatie van MongoDB op basis van de PostgreSQL-database

De release van project FerretDB 0.1 (voorheen MangoDB) is gepubliceerd, waarmee een documentgerichte database zoals MongoDB kan worden vervangen door PostgreSQL zonder wijzigingen in de applicatiecode aan te brengen. FerretDB fungeert als een proxyserver die verzoeken naar MangoDB omzet in SQL-query's voor PostgreSQL, waardoor PostgreSQL als de feitelijke opslag kan worden gebruikt. De code is geschreven in de programmeertaal Go en wordt verspreid onder de Apache 2.0-licentie.

De behoefte aan migratie kan voortkomen uit de overstap van MongoDB naar de niet-vrije SSPL-licentie, die is gebaseerd op de AGPLv3-licentie maar niet open-source is, omdat het discriminerende vereisten bevat voor de levering onder de SSPL-licentie, niet alleen van de code van de applicatie zelf, maar ook van de bronbestanden van alle componenten die betrokken zijn bij het leveren van de clouddienst.

De doelgroepen van FerretDB zijn gebruikers die de geavanceerde mogelijkheden van MongoDB in hun applicaties niet gebruiken, maar een volledig open softwarestack willen hanteren. Op dit moment ondersteunt FerretDB nog maar een deel van de mogelijkheden van MongoDB die het meest courant zijn in standaardapplicaties. Voor de toekomst is het de bedoeling om volledige compatibiliteit met MongoDB-drivers te bereiken en FerretDB als een transparante vervanger voor MongoDB te gebruiken.

We herinneren eraan dat MongoDB een niche vervult tussen snelle en schaalbare systemen voor gegevensbeheer in key/value-formaat en relationele databases, die functioneel zijn en gemakkelijk query's kunnen genereren. MongoDB ondersteunt de opslag van documenten in een JSON-achtig formaat, heeft een redelijk flexibele taal voor het formuleren van query's, kan indexen maken voor verschillende opgeslagen attributen, biedt efficiënte opslag voor grote binaire objecten, ondersteunt logging van operaties voor gegevenswijzigingen en -toevoegingen in de database, kan werken volgens het Map/Reduce-paradigma en ondersteunt replicatie en het opzetten van fouttolerante configuraties.

In de release van FerretDB 0.1.0 is de methode voor het ophalen van gegevens uit PostgreSQL volledig herzien. Voorheen werd voor elke binnenkomende MongoDB-query één SQL-query naar PostgreSQL gegenereerd, die functies voor het werken met het JSON-formaat gebruikte en resultaten aan de PostgreSQL-zijde filterde. Door de verschillen in de semantiek van de json-functies tussen PostgreSQL en MongoDB werd gedrag waargenomen dat inconsistent was bij het vergelijken en sorteren van verschillende typen. Om dit probleem op te lossen, worden nu overmatige gegevens uit PostgreSQL opgehaald, en de filtering van de resultaten gebeurt aan de FerretDB-zijde, wat het mogelijk maakt om het gedrag van MongoDB in de meeste situaties na te volgen.

De prijs die betaald wordt voor verhoogde compatibiliteit is een vermindering van de prestaties, die in toekomstige releases naar verwachting wordt gecompenseerd door selectieve filtering aan de FerretDB-zijde van alleen de queries waarvoor verschil in gedrag wordt waargenomen. Bijvoorbeeld, de query “db.collection.find({_id: ‘some-id-value’})” kan volledig in PostgreSQL worden verwerkt. De primaire doelstelling van het project in deze fase van ontwikkeling is het bereiken van compatibiliteit met MongoDB, terwijl prestaties voorlopig op de tweede plaats komen. Onder de functionele wijzigingen in de nieuwe versie is ondersteuning voor alle bitbewerkingsoperatoren, de vergelijkingsoperator “$eq” en ook de operatoren “$elemMatch” en “$bitsAllClear”.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster