MongoDB is verreweg de meest populaire keuze in de NoSQL-wereld, omdat de gedistribueerde architectuur meer schaalbaarheid mogelijk maakt en het documentgegevensmodel ontwikkelaars een goede flexibiliteit biedt. Bijna elk jaar wordt een belangrijke MongoDB-versie uitgebracht en 2018 is geen uitzondering. MongoDB 4.0 werd uitgebracht in juli 2018, gevolgd door enkele andere kleine releases. Met MongoDB versie 4.0 worden transacties van meerdere documenten en typeconversies nu ondersteund. MongoDB introduceerde een nieuwe tool genaamd MongoDB-diagrammen (bèta) en voegde in 2018 ook ondersteuning toe van aggregatiepijplijnbouwer in MongoDB-kompas. In dit artikel zullen we enkele opwindende functies van MongoDB bespreken die in 2018 zijn uitgebracht.
Multi-Document ACID-transacties
Dit was de langverwachte functie in MongoDB. Vanaf versie 4.0 zijn multi-document acid-transacties tegen replicasets klaar voor productie en worden ze ondersteund door MongoDB. Alle MongoDB-transacties breiden nu ACID-eigenschappen uit, wat de gegevensintegriteit garandeert. Het is heel eenvoudig om zuurtransacties toe te voegen in elke toepassing die ze nodig heeft en ze hebben geen invloed op andere bewerkingen waarvoor ze niet nodig zijn. Met ondersteuning van multi-document acid-transacties, is elke schrijfbewerking die binnen de transactie wordt uitgevoerd, niet zichtbaar buiten de transactie. Hier zijn enkele handige commando's om zuurtransacties in meerdere documenten toe te voegen aan uw applicatie.
Functie | Beschrijving |
---|---|
Session.startTransaction() | Start een nieuwe transactie |
Session.commitTransaction() | Begaat de transactie |
Session.abortTransaction() | Breekt de transactie af |
Hier is een klein voorbeeld van het toevoegen van transactiebewerkingen met Mongo-shell:
akashk:PRIMARY> use mydb
akashk:PRIMARY> db.createCollection(“newColl”)
akashk:PRIMARY> session = db.getMongo().startSession()
akashk:PRIMARY> session { "id" : UUID("62525323-1cd1-4ee8-853f-b78e593b46ba") }
akashk:PRIMARY> session.startTransaction()
akashk:PRIMARY> session.getDatabase("mydb").newColl.insert({name : 'hello'})
akashk:PRIMARY> WriteResult({ "nInserted" : 1 })
akashk:PRIMARY> session.commitTransaction()
Alle transacties bieden een consistent beeld van gegevens over een of meerdere collecties in de database met behulp van snapshot-isolatie. MongoDB zal geen niet-vastgelegde wijzigingen naar secundaire knooppunten/replica's pushen. Zodra een transactie is doorgevoerd, worden alle wijzigingen toegepast op secundaire knooppunten.
Er zijn veel voorbeelden waar we MongoDB multi-document zuurtransacties kunnen gebruiken, zoals,
- Overboeking tussen bankrekeningen
- Betalingssysteem
- Handelssysteem
- Supply chain-systeem
- Factureringssysteem
Aandachtspunten bij het toevoegen van transacties
- MongoDB zal elke transactie afbreken die langer dan 60 seconden duurt.
- Niet meer dan 1000 documenten mogen in een enkele transactie worden gewijzigd. Geen limiet voor leesbewerkingen.
- Elke transactie moet kleiner zijn dan 16 MB, aangezien MongoDb elke transactie opslaat als een enkele invoer in oplog.
- Als je een transactie afbreekt, worden alle wijzigingen ongedaan gemaakt.
Nieuwe typeconversie-operators in aggregatiepijplijn
Om realtime inzichten in gegevens te krijgen en complexe query's te schrijven, geven MongoDB-ontwikkelaars over het algemeen de voorkeur aan het creëren van een aggregatiepijplijn. In MongoDB 4.0-versie zijn enkele nieuwe conversie-operators voor aggregatietypes toegevoegd voor het opvragen van gegevens zonder afzonderlijke velden op te schonen.
Aggregatie-operator | Beschrijving |
---|---|
$convert | Converteert waarde naar een gespecificeerd type |
$toDate | Converteert waarde naar Datum |
$toDecimal | Converteert waarde naar decimaal |
$toDouble | Converteert waarde naar Double |
$toLong | Converteert waarde naar Lang |
$toInt | Converteert waarde naar geheel getal |
$toObjectId | Converteert waarde naar ObjectId |
$toString | Converteert waarde naar String |
$ltrim | Verwijder onnodige tekens aan het begin van de tekenreeks |
$rtrim | Verwijder onnodige tekens aan het einde van de tekenreeks |
$trim | Verwijder onnodige tekens aan beide kanten van de tekenreeks |
Uitgebreide functionaliteit van wijzigingsstromen
Functionaliteit van wijzigingsstromen die realtime updates van gegevenswijzigingen biedt zonder complexe instellingen, werd geïntroduceerd in versie 3.6. Met versie 4.0 kunnen wijzigingsstromen wijzigingen van de hele database of cluster volgen in plaats van slechts één verzameling nu. Afgezien hiervan retourneert wijzigingsstromen nu ook een clustertijdstempel die is gekoppeld aan een gebeurtenis die nuttig kan zijn voor de servertoepassingen.
Snelle gegevensmigraties
Wanneer uw data base over het cluster is geshard, kan het toevoegen en verwijderen van knoop punten elastisch uit een shard cluster soms tijdrovend zijn. De shard-clusterbalancer die verantwoordelijk is voor het distribueren van gegevens over alle shards, kreeg een grote upgrade in versie 4.0. Nu kan het de datamigratie 40% sneller afronden.
Niet-blokkerende secundaire uitlezingen
Voorheen blokkeerde MongoDB alle secundaire leesbewerkingen wanneer oplog-vermeldingen werden toegepast op de secundaire knooppunten. Dit veroorzaakte een variabele latentie van secundaire uitlezingen. Vanaf MongoDB 4.0 zijn secundaire leesbewerkingen niet-blokkerend geworden vanwege de verhoogde doorvoer van replicasets en verbeterde leeslatenties.
Aggregatiepijplijnbouwer in kompas
MongoDB-kompas is de GUI-tool voor MongoDB om gegevens te visualiseren en op te vragen. Dit jaar kreeg het MongoDB-kompas een nieuwe functie van de aggregatiepijplijn. Het biedt een visuele query-editor voor het bouwen van aggregatiepijplijnen met meerdere fasen. Hier is de momentopname ervan:
Aggregatiequerybuilder in CompassNaast deze functie heeft Compass nu ook de mogelijkheid om uw zoekopdrachten te exporteren naar elke native codetalen van uw keuze.
MongoDB-grafieken
MongoDB Charts is de nieuwe tool waarmee de gebruiker snel realtime visualisaties van MongoDB-gegevens kan maken. Deze tool is gebouwd voor documentgegevensmodel met ondersteuning van typeverwerking, arrayreducties en geneste documenten. Met deze tool kan de gebruiker diagramdashboards maken en deze delen met andere gebruikers. MongoDB-kaarten zijn nu volledig geïntegreerd met MongoDB Atlas.
Andere nieuwe MongoDB-functies
- MongoDB Stitch:Serverloos platform voor de ontwikkeling van clientapplicaties die veilig toegang heeft tot Mongo-services.
- MongoDB Kubernetes:voor implementatie van MongoDB binnen Kubernetes-cluster.
- MongoDB Mobile:biedt flexibiliteit en kracht van MongoDB in een compacte vorm, zodat het kan worden gebruikt in IOT-apparaten.
- MongoDB Monitoring Cloud Service:om monitoringmetadata gratis naar MongoDB monitoring cloud te pushen.
De toekomst van MongoDB
MongoDB is ook van plan om een aantal nieuwe functies te lanceren met versie 4.2, waaronder:
- Uitgebreidere WiredTiger-engine
- Transactiemanager
- Transacties binnen een shard-implementatie
- Globaal tijdstip leest