Lavorare con MongoDB collezioni Capped da Java

Introduzione

In MongoDB, normalmente non c’è limite alle dimensioni di una raccolta. Più documenti indicizzi, più grande è la raccolta. Tuttavia, per l’archiviazione di log o le applicazioni ad alto throughput, una raccolta di dimensioni illimitate non è sempre una struttura ideale. In questi casi, è spesso preferibile utilizzare un diverso tipo di raccolta chiamata collezione capped. In questo articolo, impareremo di più su questo tipo di raccolta speciale e discuteremo i vantaggi e gli svantaggi di lavorare con MongoDB collezioni capped in Java.

Prerequisiti

Prima di dare un’occhiata più da vicino alle raccolte limitate e al loro funzionamento, è importante rivedere i requisiti di sistema. Per questa attività, c’è solo un prerequisito: è necessario assicurarsi che sia MongoDB che il driver Java MongoDB siano stati configurati correttamente in anticipo.

Cosa sono le collezioni con capping MongoDB?

Come abbiamo detto nell’introduzione, la maggior parte delle collezioni MongoDB non ha dimensioni limitate. Le raccolte capped, d’altra parte, sono raccolte circolari di dimensioni fisse che seguono l’ordine di inserimento. Il termine “circolare” si riferisce al fatto che quando è stata raggiunta la dimensione fissa assegnata a una raccolta limitata, inizierà automaticamente a eliminare i documenti più vecchi della raccolta e a sovrascriverli per accogliere i nuovi documenti, proprio come un buffer circolare. Un’altra caratteristica chiave delle collezioni capped è la conservazione dell’ordine di inserimento; ciò elimina la necessità di un indice per restituire i documenti in ordine di inserimento. Nel complesso, la struttura e la funzionalità di una raccolta con capping supportano prestazioni elevate per le operazioni di creazione, lettura ed eliminazione.

Casi d’uso per una raccolta con capping MongoDB

Sebbene una raccolta MongoDB standard funzioni bene nella maggior parte delle circostanze, esistono alcuni casi d’uso in cui le prestazioni possono essere ottimizzate utilizzando invece una raccolta con capping. Alcuni casi d’uso comuni includono:

  1. Informazioni di registrazione
  2. Dati cache
  3. Informazioni di controllo

In tutti questi casi d’uso, le prestazioni sono ottimizzate dall’eliminazione di un indice e dalla natura circolare (first-in-first-out) della raccolta, che mantiene l’ordine e tiene sotto controllo l’uso dello storage.

Come creare una collezione con capping MongoDB usando Java

Ora che abbiamo capito come funzionano le collezioni con capping, diamo un’occhiata a qualche codice che le utilizza. Il codice seguente mostra un esempio di come creare una collezione con capped MongoDB:

C’è molto da fare in queste poche righe di codice, quindi diamo un’occhiata più da vicino e rivediamo cosa sta succedendo, riga per riga:

  1. Innanzitutto, ci colleghiamo a una distribuzione MongoDB in esecuzione localmente.
  2. Una volta che l’istanza del client MongoDB è connessa alla distribuzione MongoDB, utilizziamo il metodo getDatabase() per accedere al database.
  3. Infine, usiamo il metodo createCollection() per creare esplicitamente una raccolta. Questo metodo consente all’utente di fornire varie opzioni utilizzando CreateCollectionOptions(). In questo esempio, abbiamo indicato che la raccolta sarebbe stata limitata e che la sua dimensione in byte sarebbe stata 256.

Dopo l’esecuzione del codice, avremo una nuova raccolta heroColl nel database heroDB con una dimensione limitata di 256 byte.

NOTA : MongoDB creerà automaticamente un indice sul campo _id, ma questo indice automatico può essere disabilitato per migliorare le prestazioni sugli inserti.

Se si sceglie di disabilitare l’indice automatico, il codice sarà simile a questo:

1
2
3
4
db.createCollection (“heroColl”, nuova CreateCollectionOptions ()
.capped (true)
.Indice automatico (falso)
.sizeInBytes(256));

Come inserire un documento MongoDB in una collezione Capped MongoDB usando Java

Successivamente, vedremo un esempio in cui inseriamo un documento nella nostra collezione capped:

Dopo aver eseguito questo codice, possiamo verificare l’operazione di inserimento usando la Shell MongoDB.

  • In primo luogo, accedere al database “heroDB” :
1
2
utilizzare heroDB
commutato db heroDB
  • Quindi, trovare i documenti all’interno dell’ “heroCall” collezione:
1
db.heroColl.trovare().bella()
  • I risultati vengono restituiti dovrebbe essere simile al seguente:
1
2
3
4
5
6
7
{
“_id” : ObjectId(“5ce4dc71a7986c1842433d0f”),
“heroName” : “Ethan”,
“età” : 25,
“nazionalità” : “American”,
“film” : “mission impossible”
}

Vantaggi di un MongoDB Innevate Collezione

Ci sono un paio di vantaggi di lavorare con MongoDB innevate collezioni:

  1. MongoDB innevate collezioni di fornire un throughput più elevato perché la query non è necessario un indice di restituire i documenti in ordine di inserimento.

  2. Una raccolta limitata eseguirà un aggiornamento solo se il documento aggiornato corrisponde alla dimensione del documento originale. Ciò garantisce che i documenti non cambino la loro posizione sul disco.

  3. La dimensione fissa e la natura circolare di una collezione capped lo rende la scelta ideale per la memorizzazione di file di log.

Svantaggi di una collezione Capped MongoDB

Sebbene ci siano diversi vantaggi nell’utilizzo della collezione capped, ci sono alcuni inconvenienti da tenere a mente:

  1. Un’operazione di aggiornamento avrà esito negativo se l’aggiornamento aumenta le dimensioni originali di una raccolta con capping MongoDB.

  2. Non è possibile eliminare i documenti in una raccolta limitata. L’eliminazione avviene automaticamente quando la dimensione fissa è stata raggiunta e il documento più vecchio viene eliminato per fare spazio a uno nuovo. È tuttavia possibile utilizzare {emptycapped: theCollection} per eliminare tutti i documenti da una raccolta limitata.

  3. Non puoi frammentare una collezione limitata a MongoDB.

Conclusione

Se stai solo familiarizzando con le collezioni limitate in MongoDB, puoi vedere che sono molto diverse dalle collezioni standard. Le collezioni capped offrono molti vantaggi per lo storage di log ad alto volume e le applicazioni ad alto throughput, quindi è importante capire come funzionano e sapere come utilizzarle. Con le istruzioni fornite in questo tutorial, non avrete problemi a lavorare con MongoDB collezioni capped nelle proprie applicazioni.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.