MongoDB er langt det mest populære valg i NoSQL-verdenen, da dens distribuerede arkitektur giver mulighed for mere skalerbarhed, og dens dokumentdatamodel giver god fleksibilitet til udviklere. Næsten hvert år udgives større MongoDB-version, og 2018 er ingen undtagelse. MongoDB 4.0 blev udgivet i juli 2018, efterfulgt af nogle andre mindre udgivelser også. Med MongoDB version 4.0 understøttes multidokumenttransaktioner og typekonverteringer nu. MongoDB introducerede et nyt værktøj kaldet MongoDB charts(beta) og tilføjede understøttelse af aggregeringspipelinebuilder i MongoDB kompas også i 2018. I denne artikel vil vi gennemgå nogle spændende funktioner i MongoDB, som blev udgivet i 2018.
Multi-Document ACID Transaktioner
Dette var den mest ventede funktion i MongoDB. Fra version 4.0 er syretransaktioner med flere dokumenter mod replikasæt produktionsklar og understøttet af MongoDB. Alle MongoDB-transaktioner udvider nu ACID-egenskaber, hvilket sikrer dataintegritet. Det er virkelig nemt at tilføje syretransaktioner i enhver applikation, der har brug for dem, og de påvirker ikke andre operationer, der ikke kræver dem. Med understøttelse af syretransaktioner med flere dokumenter vil enhver skriveoperation, der udføres inde i transaktionen, ikke være synlig uden for transaktionen. Her er nogle nyttige kommandoer til at tilføje syretransaktioner med flere dokumenter i din applikation.
Funktion | Beskrivelse |
---|---|
Session.startTransaction() | Start en ny transaktion |
Session.commitTransaction() | Bekræfter transaktionen |
Session.abortTransaction() | Afbryder transaktionen |
Her er et lille eksempel på tilføjelse af transaktionsoperationer ved hjælp af 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 transaktioner giver en ensartet visning af data på tværs af en eller flere samlinger i databasen ved hjælp af snapshot-isolering. MongoDB vil ikke skubbe nogen uforpligtende ændringer til sekundære noder/replikaer. Når en transaktion er forpligtet, vil alle ændringerne blive anvendt på sekundære noder.
Der er mange eksempler, hvor vi kan bruge MongoDB multi-dokument syretransaktioner såsom,
- Pengeoverførsel mellem bankkonti
- Betalingssystem
- Handelssystem
- Supply chain system
- Faktureringssystem
Ting at overveje, når du tilføjer transaktioner
- MongoDB vil afbryde enhver transaktion, der kører i mere end 60 sekunder.
- Ikke mere end 1000 dokumenter bør ændres i en enkelt transaktion. Ingen grænse for læsehandlinger.
- Enhver transaktion skal være mindre end 16 MB, da MongoDb gemmer enhver transaktion som en enkelt post i oplog.
- Når du afbryder en transaktion, vil alle ændringer blive rullet tilbage.
Nye typekonverteringsoperatører i aggregationspipeline
For at få realtidsindsigt i data og skrive komplekse forespørgsler foretrækker MongoDB-udviklere generelt at skabe aggregeringspipeline. I MongoDB 4.0-versionen er nogle nye konverteringsoperatorer af aggregeringstype blevet tilføjet til at forespørge data uden at rense individuelle felter.
Aggregationsoperatør | Beskrivelse |
---|---|
$convert | Konverterer værdi til en specificeret type |
$toDate | Konverterer værdi til Dato |
$toDecimal | Konverterer værdi til decimal |
$toDouble | Konverterer værdi til dobbelt |
$toLong | Konverterer værdi til lang |
$toInt | Konverterer værdi til heltal |
$toObjectId | Konverterer værdi til ObjectId |
$toString | Konverterer værdi til streng |
$ltrim | Fjern unødvendige tegn fra begyndelsen af strengen |
$rtrim | Fjern unødvendige tegn fra slutningen af strengen |
$trim | Fjern unødvendige tegn fra begge sider af strengen |
Udvidet funktionalitet af ændringsstrømme
Funktionalitet af ændringsstrømme, som giver opdateringer af dataændringer i realtid uden komplekse indstillinger, blev introduceret i version 3.6. Med version 4.0 kan ændringsstrømme spore ændringer af hele databasen eller klyngen i stedet for kun en enkelt samling nu. Ud over dette returnerer ændringsstrømme nu også klyngetidsstempel forbundet med en hændelse, som kan være nyttig for serverapplikationerne.
Hurtigere datamigreringer
Når din database er splittet på tværs af klyngen, kan tilføjelse og fjernelse af noder elastisk fra en shard klynge nogle gange være tidskrævende. Den sharded cluster balancer, som er ansvarlig for at distribuere data på tværs af alle shards, fik en større opgradering i version 4.0. Nu kan den afslutte datamigrering med 40 % hurtigere hastighed.
Ikke-blokerende sekundære læsninger
Tidligere plejede MongoDB at blokere alle sekundære læsninger, når oplog-indgange blev anvendt på de sekundære noder. Dette forårsagede variabel latens for sekundære læsninger. Fra MongoDB 4.0 er sekundære læsninger blevet ikke-blokerende på grund af øget replikasætgennemstrømning og forbedrede læseforsinkelser.
Aggregation Pipeline Builder i Compass
MongoDB kompas er GUI-værktøjet til MongoDB til at visualisere og forespørge data. I år fik MongoDB kompas en ny funktion i aggregeringspipeline. Det giver visuel forespørgselseditor til opbygning af flertrins aggregeringspipelines. Her er et øjebliksbillede af det:
Aggregationsforespørgselsbygger i CompassUd over denne funktion har kompasset også mulighed for at eksportere dine forespørgsler til et hvilket som helst indfødt kodesprog efter eget valg nu.
MongoDB-diagrammer
MongoDB Charts er det nye værktøj, som gør det muligt for brugeren hurtigt at skabe realtidsvisualiseringer af MongoDB-data. Dette værktøj er bygget til dokumentdatamodel med understøttelse af typehåndtering, array-reduktioner og indlejrede dokumenter. Dette værktøj giver brugeren mulighed for at oprette diagram-dashboards og dele det med andre brugere. MongoDB-diagrammer er nu fuldt integreret med MongoDB Atlas.
Andre nye MongoDB-funktioner
- MongoDB Stitch:Serverløs platform til udvikling af klientapplikationer, som kan få sikker adgang til Mongo-tjenester.
- MongoDB Kubernetes:Til implementering af MongoDB i Kubernetes-klyngen.
- MongoDB Mobile:Giver fleksibilitet og kraft i MongoDB i en kompakt form, så den kan bruges i IOT-enheder.
- MongoDB Monitoring Cloud Service:For at skubbe overvågningsmetadata til MongoDB Monitoring Cloud gratis.
Fremtiden for MongoDB
MongoDB planlægger også at lancere nogle nye funktioner med sin version 4.2, som inkluderer,
- Mere omfattende WiredTiger-motor
- Transaktionsadministrator
- Transaktioner på tværs af en fragmenteret implementering
- Globale tidpunkter