sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB 2018 - A Year in Review

MongoDB är det överlägset mest populära valet i NoSQL-världen eftersom dess distribuerade arkitektur möjliggör mer skalbarhet och dess dokumentdatamodell ger bra flexibilitet för utvecklare. Nästan varje år släpps större MongoDB-version och 2018 är inget undantag. MongoDB 4.0 släpptes i juli 2018, följt av några andra mindre utgåvor också. Med MongoDB version 4.0 stöds multidokumenttransaktioner och typkonverteringar nu. MongoDB introducerade ett nytt verktyg som heter MongoDB-diagram(beta) och lade till stöd för aggregeringspipeline-byggaren i MongoDB-kompassen också under 2018. I den här artikeln kommer vi att gå igenom några spännande funktioner i MongoDB som släpptes 2018.

ACID-transaktioner med flera dokument

Detta var det mest efterlängtade inslaget i MongoDB. Från och med version 4.0 är syratransaktioner med flera dokument mot replikuppsättningar produktionsklara och stöds av MongoDB. Alla MongoDB-transaktioner utökar nu ACID-egenskaper som säkerställer dataintegritet. Det är verkligen lätt att lägga till syratransaktioner i alla applikationer som behöver dem och de påverkar inte andra operationer som inte kräver dem. Med stöd av sura transaktioner med flera dokument, kommer alla skrivoperationer som utförs i transaktionen inte att vara synliga utanför transaktionen. Här är några användbara kommandon för att lägga till sura transaktioner i flera dokument i din applikation.

Funktion Beskrivning
Session.startTransaction() Starta en ny transaktion
Session.commitTransaction() Bekräftar transaktionen
Session.abortTransaction() Avbryter transaktionen

Här är ett litet exempel på att lägga till transaktionsoperationer med Mongo-skal:

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()

Alla transaktioner ger en konsekvent bild av data över en eller flera samlingar i databasen med hjälp av ögonblicksbildsisolering. MongoDB kommer inte att driva några oengagerade ändringar till sekundära noder/repliker. När en transaktion har genomförts kommer alla ändringar att tillämpas på sekundära noder.

Det finns många exempel där vi kan använda MongoDB multi-dokument sura transaktioner såsom,

  • överföring av pengar mellan bankkonton
  • Betalningssystem
  • Handelssystem
  • Supply chain system
  • Faktureringssystem

Saker att tänka på när du lägger till transaktioner

  1. MongoDB kommer att avbryta alla transaktioner som pågår i mer än 60 sekunder.
  2. Högst 1 000 dokument bör ändras i en enda transaktion. Ingen gräns för läsoperationer.
  3. Alla transaktioner bör vara mindre än 16 MB eftersom MongoDb lagrar alla transaktioner som en enda post i oplog.
  4. När du avbryter en transaktion återställs alla ändringar.

Ny typkonverteringsoperatörer i aggregationspipeline

För att få realtidsinsikter om data och skriva komplexa frågor föredrar MongoDB-utvecklare i allmänhet att skapa aggregeringspipeline. I MongoDB 4.0-versionen har några nya konverteringsoperatorer av aggregeringstyp lagts till för att söka efter data utan att rensa enskilda fält.

Aggregationsoperator Beskrivning
$convert Konverterar värde till en specificerad typ
$toDate Konverterar värde till Datum
$toDecimal Konverterar värde till decimal
$toDouble Konverterar värde till dubbelt
$toLong Konverterar värde till Långt
$toInt Konverterar värde till heltal
$toObjectId Konverterar värde till ObjectId
$toString Konverterar värde till sträng
$ltrim Ta bort onödiga tecken från början av strängen
$rtrim Ta bort onödiga tecken från slutet av strängen
$trim Ta bort onödiga tecken från båda sidor av strängen
Severalnines Become a MongoDB DBA - Bringing MongoDB to ProductionLäs om vad du behöver veta för att distribuera, övervaka, hantera och skala MongoDBDownload gratis

Utökad funktionalitet för ändringsströmmar

Funktionalitet hos förändringsströmmar som ger uppdateringar av dataändringar i realtid utan några komplexa inställningar introducerades i version 3.6. Med version 4.0 kan ändringsströmmar spåra ändringar av hela databasen eller klustret istället för bara en enda samling nu. Bortsett från detta returnerar nu ändra strömmar också klustertidsstämpel associerad med en händelse som kan vara till hjälp för serverapplikationerna.

Snabbare datamigreringar

När din databas är delad över klustret, kan det ibland vara tidskrävande att lägga till och ta bort noder elastiskt från ett delat kluster. Den splittrade klusterbalanseraren som ansvarar för att distribuera data över alla skärvor, fick en stor uppgradering i version 4.0. Nu kan den avsluta datamigreringen med 40 % snabbare takt.

Icke-blockerande sekundära läsningar

Tidigare använde MongoDB för att blockera alla sekundära läsningar när oplog-poster applicerades på de sekundära noderna. Detta orsakade variabel latens för sekundära läsningar. Från MongoDB 4.0 har sekundära läsningar blivit icke-blockerande på grund av ökad replikuppsättningsgenomströmning och förbättrade läsfördröjningar.

Aggregation Pipeline Builder i Compass

MongoDB-kompass är GUI-verktyget för MongoDB för att visualisera och fråga data. I år fick MongoDB-kompassen en ny funktion i aggregeringspipeline. Det tillhandahåller visuell frågeredigerare för att bygga flerstegs aggregeringspipelines. Här är ögonblicksbilden av det:

Aggregationsfrågebyggare i Compass

Utöver den här funktionen har kompass också möjlighet att exportera dina frågor till valfritt inhemska kodspråk nu.

MongoDB-diagram

MongoDB Charts är det nya verktyget som gör det möjligt för användaren att snabbt skapa realtidsvisualiseringar av MongoDB-data. Detta verktyg är byggt för dokumentdatamodeller med stöd för typhantering, arrayreduktioner och kapslade dokument också. Detta verktyg låter användaren skapa diagraminstrumentpaneler och dela det med andra användare. MongoDB-diagram är nu helt integrerade med MongoDB Atlas.

Andra nya MongoDB-funktioner

  • MongoDB Stitch:Serverlös plattform för utveckling av klientapplikationer som kan komma åt Mongo-tjänster på ett säkert sätt.
  • MongoDB Kubernetes:För att distribuera MongoDB inom Kubernetes-klustret.
  • MongoDB Mobile:Ger flexibilitet och kraft hos MongoDB i en kompakt form så att den kan användas i IOT-enheter.
  • MongoDB Monitoring Cloud Service:För att överföra övervakningsmetadata till MongoDB Monitoring Cloud gratis.

Framtiden för MongoDB

MongoDB planerar också att lansera några nya funktioner med sin version 4.2 som inkluderar,

  • Mer omfattande WiredTiger-motor
  • Transaktionshanterare
  • Transaktioner över en delad implementering
  • Globala tidpunkter

  1. Uppdatera ett objekt i en array som finns i en array

  2. MongoDB:Kan inte kanonisera frågan:BadValue Projection kan inte ha en blandning av inkludering och exkludering

  3. Ansluter till MongoDB över SSL med Node.js

  4. Mongofält A större än fält B