Eerste stabiele release van FerretDB, MongoDB-implementatie op basis van PostgreSQL DBMS

De release van het FerretDB 1.0-project is gepubliceerd, waarmee u het documentgeoriënteerde DBMS MongoDB kunt vervangen door PostgreSQL zonder wijzigingen in de applicatiecode aan te brengen. FerretDB is geïmplementeerd als een proxyserver die oproepen naar MongoDB vertaalt in SQL-query's naar PostgreSQL, waardoor u PostgreSQL als de eigenlijke opslag kunt gebruiken. Versie 1.0 is gemarkeerd als de eerste stabiele release die klaar is voor algemeen gebruik. De code is geschreven in Go en gedistribueerd onder de Apache 2.0-licentie.

De belangrijkste doelgroep voor FerretDB zijn gebruikers die geen geavanceerde MongoDB-functies in hun applicaties gebruiken, maar een volledig open softwarestack willen gebruiken. In het huidige ontwikkelingsstadium ondersteunt FerretDB een subset van de MongoDB-functies die het meest worden gebruikt in typische toepassingen. De noodzaak om FerretDB te implementeren kan ontstaan ​​in verband met de overgang van MongoDB naar een niet-vrije SSPL-licentie, die is gebaseerd op de AGPLv3-licentie, maar niet open is, omdat het een discriminerende vereiste bevat om onder de SSPL-licentie niet alleen de applicatiecode zelf, maar ook de broncodes van alle componenten die betrokken zijn bij het leveren van clouddiensten.

MongoDB neemt een niche in tussen snelle en schaalbare systemen die werken op sleutel-/waardegegevens en relationele DBMS'en die functioneel en gemakkelijk te doorzoeken zijn. MongoDB ondersteunt het opslaan van documenten in een JSON-achtig formaat, heeft een redelijk flexibele taal voor het genereren van query's, kan indexen maken voor verschillende opgeslagen attributen, biedt efficiënte opslag van grote binaire objecten, ondersteunt het loggen van bewerkingen om te wijzigen en gegevens toe te voegen aan de database, kan werken volgens het paradigma Map/Reduce, ondersteunt replicatie en het bouwen van fouttolerante configuraties.

Onder de veranderingen in FerretDB 1.0:

  • De opdrachten createIndexes en dropIndexes zijn geïmplementeerd voor het maken en neerzetten van een of meer indexen in een verzameling.
  • De opdracht getMore is geïmplementeerd om een ​​nieuw deel weer te geven van het resultaat dat is verkregen uit de uitvoering van opdrachten die een cursor retourneren, zoals zoeken en aggregeren.
  • Ondersteuning toegevoegd voor de aggregatieoperator $sum om de som van groepswaarden te berekenen.
  • Ondersteuning toegevoegd voor de operators $limit en $skip om het aantal documenten te beperken en documenten over te slaan bij het aggregeren.
  • Ondersteuning toegevoegd voor de operator $count voor het tellen van documenten bij aggregatie.
  • Ondersteuning toegevoegd voor de operator $unwind om arrayvelden in inkomende documenten te ontleden en een lijst te vormen met een afzonderlijk document voor elk arrayelement.
  • Gedeeltelijke ondersteuning toegevoegd voor opdrachten collStats, dbStats en dataSize om verzamelings- en databasestatistieken en gegevensomvang te krijgen.

Bron: opennet.ru

Voeg een reactie