Na een jaar van ontwikkeling is de document-georiƫnteerde database MongoDB 6.0 gepresenteerd, die zich bevindt tussen snelle en schaalbare systemen die werken met gegevens in sleutel/waarde-indeling en relationele databases, die functioneel en gebruiksvriendelijk zijn voor het opstellen van queries. De code van MongoDB is geschreven in C++ en verspreid onder de SSPL-licentie, die gebaseerd is op de AGPLv3-licentie, maar niet open-source is, omdat deze een discriminerende eis bevat om niet alleen de code van de applicatie zelf, maar ook de bronbestanden van alle componenten die betrokken zijn bij het aanbieden van cloudservices, onder de SSPL-licentie te leveren.
MongoDB ondersteunt het opslaan van documenten in een JSON-achtig formaat, heeft een vrij flexibele taal voor het opstellen van queries, kan indexen creƫren voor verschillende opgeslagen attributen, biedt effectieve opslag voor grote binaire objecten, ondersteunt logging van bewerkingen voor het wijzigen en toevoegen van gegevens in de database, kan werken volgens het Map/Reduce-paradigma, en ondersteunt replicatie en de opbouw van fouttolerante configuraties.
In MongoDB zijn er ingebouwde middelen voor segmentatie (distributie van een dataset over servers op basis van een bepaalde sleutel), waarmee in combinatie met replicatie een horizontaal schaalbare opslagcluster kan worden opgebouwd, waarin geen enkelvoudig punt van falen bestaat (de storing van enige node heeft geen invloed op de werking van de database), ondersteunt automatisch herstel na een storing en belastingsoverdracht van een defecte node. Het uitbreiden van de cluster of het transformeren van een de server cluster kan plaatsvinden zonder de werking van de database te stoppen, door simpelweg nieuwe machines toe te voegen.
Belangrijkste kenmerken van de nieuwe versie:
- De mogelijkheid is gerealiseerd om queries uit te voeren die gegevens omvatten die versleuteld zijn opgeslagen (Queryable Encryption). Gegevens worden aan de gebruikerszijde ontsleuteld en blijven tijdens de verwerking van de query versleuteld (de query wordt uitgevoerd op versleutelde gegevens, zonder deze vooraf te ontsleutelen). In de huidige versie zijn alleen vergelijkingsuitdrukkingen toegestaan in queries, maar in de toekomst is het plan om ondersteuning toe te voegen voor bereikcontroles, prefixen, suffixen, substrings en andere bewerkingen.
- De mogelijkheden voor gegevensopslag in de vorm van tijdreeksverzamelingen zijn uitgebreid, geoptimaliseerd voor het opslaan van waardes van parameters die op bepaalde tijdsintervallen zijn vastgelegd (tijd en de bijbehorende set waarden). Bijvoorbeeld, de noodzaak om dergelijke gegevens op te slaan ontstaat in monitoringsystemen, financiƫle platforms en sensorstatusopnamesystemen. In deze nieuwe release is het nu mogelijk om secundaire en samengestelde indexen te gebruiken met tijdreeksverzamelingen. Ondersteuning is toegevoegd voor het bijvoegen van extra data, zoals geografische informatie ten behoeve van afstands- en locatiebepaling. De leesprestaties, query-uitvoering en sortering zijn verbeterd.
- Nieuwe hulpmiddelen voor het volgen van wijzigingen zijn toegevoegd ('wijzigingsstromen', API Change Streams), waarmee meldingen over wijzigingen in de database naar applicaties kunnen worden verzonden. Informatie over de wijzigingen komt in realtime binnen en maakt het mogelijk om applicaties te creƫren die gebruikmaken van reactieve en gebeurtenisgestuurde programmeermethoden. Gebeurtenissen worden verwerkt met de watch-methode, waarbij de benodigde gebeurtenissen kunnen worden gefilterd en geaggregeerd met behulp van de operators $match, $project en $redact. In de nieuwe versie is de mogelijkheid toegevoegd om de vorige en volgende staat van een document op te vragen (bijvoorbeeld wanneer een document is verwijderd of gewijzigd). Naast bewerkingen met de DML (data manipulation language) is ook ondersteuning toegevoegd voor DDL (data definition language) bewerkingen, zoals het maken en verwijderen van indexen en verzamelingen. Er zijn middelen toegevoegd voor het filteren van geassocieerde meldingen.
- In de operators $lookup en $graphlookup is volledige ondersteuning voor geclusterde opslag gerealiseerd. De prestaties van de $lookup-bewerking zijn geoptimaliseerd; bijvoorbeeld, wanneer er een index op de buitenste sleutel is, wordt het vergelijken van een klein aantal documenten nu 5 tot 10 keer sneller uitgevoerd, terwijl bij een groot aantal documenten de snelheid is verdubbeld. Voor vergelijkingen zonder het gebruik van indexen kan de prestatieverbetering oplopen tot 100 keer.
- Er is de mogelijkheid toegevoegd om complexe analytische queries uit te voeren op consistente snapshots van de werkgegevens. Dergelijke analytische queries kunnen verschillende segmenten bestrijken in grote gedistribueerde configuraties van MongoDB.
- Nieuwe operators $maxN, $minN en $lastN zijn toegevoegd voor het bepalen van waarden binnen een dataset, evenals de operator $sortArray voor het sorteren van elementen in een array.
- De efficiƫntie van segmentatie is aanzienlijk verhoogd. De standaardblokgrootte voor een gesegmenteerde collectie is vergroot tot 128 MB. De opdracht configureCollectionBalancing is toegevoegd voor het defragmenteren van een gesegmenteerde collectie.
- In de client-side field-level encryption (CSFLE) zijn ondersteuning voor KMIP-compatibele sleutelproviders toegevoegd.
- De mogelijkheid voor compressie en encryptie van het auditlogboek is toegevoegd, waarin de activiteit van databasegebruikers wordt weergegeven.
- Een experimentele modus voor gegevenssynchronisatie tussen MongoDB-clusters (Cluster-to-Cluster Sync) is geĆÆmplementeerd.
Bron: opennet.ru
