Arbeta med MongoDB Capped samlingar från Java

introduktion

i MongoDB finns det normalt ingen gräns för storleken på en samling. Ju fler dokument du indexerar desto större växer samlingen. Men för logglagring eller applikationer med hög genomströmning är en samling med obegränsad storlek inte alltid en idealisk struktur. I dessa fall är det ofta att föredra att använda en annan typ av samling som kallas en begränsad samling. I den här artikeln lär vi oss mer om denna speciella samlingstyp och diskuterar fördelarna och nackdelarna med att arbeta med MongoDB-begränsade samlingar i Java.

förutsättningar

innan vi tittar närmare på begränsade samlingar och hur de fungerar är det viktigt att granska systemkraven. För den här uppgiften finns det bara en förutsättning: du måste se till att både MongoDB och MongoDB Java-drivrutinen har konfigurerats korrekt i förväg.

Vad är MongoDB Capped Samlingar?

som vi sa i inledningen är de flesta MongoDB-samlingar inte begränsade i storlek. Utjämnade samlingar är å andra sidan cirkulära Samlingar med fast storlek som följer insättningsordning. Termen ”cirkulär” hänvisar till det faktum att när den fasta storleken som tilldelats en begränsad samling har uppnåtts börjar den automatiskt ta bort de äldsta dokumenten i samlingen och skriva över dem för att rymma de nya dokumenten– ungefär som en cirkulär buffert. En annan viktig egenskap hos utjämnade samlingar är bevarandet av insättningsordning; detta eliminerar behovet av ett index för att returnera dokument i ordning för införande. Sammantaget stöder strukturen och funktionaliteten i en begränsad samling hög prestanda för att skapa, läsa och ta bort operationer.

användningsfall för en MongoDB-samling

även om en standard MongoDB-samling fungerar bra under de flesta omständigheter finns det vissa användningsfall där prestanda kan optimeras genom att använda en begränsad samling istället. Några vanliga användningsfall inkluderar:

  1. loggningsinformation
  2. Cache-data
  3. Granskningsinformation

i alla dessa användningsfall optimeras prestanda genom eliminering av ett index såväl som den cirkulära (first-in-first-out) karaktären hos samlingen, som upprätthåller ordning och håller lagringsanvändningen i kontroll.

hur man skapar en MongoDB Capped samling med Java

nu när vi förstår hur capped samlingar fungerar, låt oss titta på någon kod som använder dem. Koden nedan visar ett exempel på hur man skapar en MongoDB-begränsad samling:

det händer mycket i dessa få kodrader, så låt oss ta en närmare titt och granska vad som händer, rad för rad:

  1. först ansluter vi till en MongoDB-distribution som körs lokalt.
  2. när MongoDB-klientinstansen är ansluten till MongoDB-distributionen använder vi metoden getDatabase() för att komma åt databasen.
  3. Slutligen använder vi createCollection() – metoden för att uttryckligen skapa en samling. Denna metod gör det möjligt för användaren att tillhandahålla olika alternativ med CreateCollectionOptions(). I det här exemplet indikerade vi att samlingen skulle begränsas och att dess storlek i byte skulle vara 256.

när koden körs har vi en ny heroColl – samling i heroDB – databasen med en begränsad storlek på 256 byte.

OBS : MongoDB skapar automatiskt ett index på fältet _id, men det här automatiska indexet kan inaktiveras för att förbättra prestanda på inlägg.

om du väljer att inaktivera autoindexet kommer koden att se ut så här:

1
2
3
4
db.createCollection(”heroColl”, nya CreateCollectionOptions()
.capped (true)
.autoIndex (falsk)
.sizeInBytes(256));

så här sätter du in ett MongoDB-dokument i en MongoDB-Capped-samling med Java

därefter tittar vi på ett exempel där vi sätter in ett dokument i vår capped-samling:

efter att ha kört den här koden kan vi verifiera insatsen med MongoDB-skalet.

  • öppna först” heroDB ” – databasen:
1
2
använd heroDB
bytt till db heroDB
  • hitta sedan dokumenten i” heroCall ” – samlingen:
1
db.heroColl.hitta().ganska()
  • resultaten som returneras ska se ut som följande:
1
2
3
4
5
6
7
{
”_id” : ObjectId (”5ce4dc71a7986c1842433d0f”),
”heroName”: ”Ethan”,
”ålder”: 25,
”nationalitet”:”amerikansk”,
”film”: ”omöjligt uppdrag”
}

fördelar med en MongoDB Capped Collection

det finns några viktiga fördelar med att arbeta med MongoDB capped collections:

  1. MongoDB capped samlingar ger högre genomströmning eftersom frågor inte behöver ett index för att returnera dokument i ordning för infogning.

  2. en begränsad samling kommer bara att utföra en uppdatering om det uppdaterade dokumentet passar originaldokumentets storlek. Detta säkerställer att dokumenten inte ändrar sin plats på disken.

  3. den fasta storleken och den cirkulära naturen hos en begränsad samling gör det till ett idealiskt val för lagring av loggfiler.

nackdelar med en MongoDB Capped Collection

även om det finns flera fördelar med att använda capped collection, finns det några nackdelar att tänka på:

  1. en uppdatering kommer att misslyckas om uppdateringen ökar den ursprungliga storleken på en MongoDB utjämnade samling.

  2. du kan inte ta bort dokument i en begränsad samling. Radering sker automatiskt när den fasta storleken har uppnåtts och det äldsta dokumentet raderas för att göra plats för ett nytt. Du kan dock använda {emptycapped: theCollection} för att ta bort alla dokument från en begränsad samling.

  3. du kan inte skära en MongoDB-samling.

slutsats

om du bara känner till begränsade samlingar i MongoDB kan du se att de skiljer sig helt från standardsamlingar. Utjämnade samlingar erbjuder många fördelar för hög volym log lagring och hög genomströmning applikationer, så det är viktigt att förstå hur de fungerar och vet hur man använder dem. Med instruktionerna i denna handledning har du inga problem med att arbeta med MongoDB capped samlingar i dina egna applikationer.

Lämna ett svar

Din e-postadress kommer inte publiceras.