Arbeiten mit MongoDB Capped Collections aus Java

Einführung

In MongoDB gibt es normalerweise keine Begrenzung für die Größe einer Sammlung. Je mehr Dokumente Sie indizieren, desto größer wird die Sammlung. Für Protokollspeicher oder Anwendungen mit hohem Durchsatz ist eine Sammlung unbegrenzter Größe jedoch nicht immer eine ideale Struktur. In diesen Fällen ist es oft vorzuziehen, einen anderen Sammlungstyp zu verwenden, der als begrenzte Sammlung bezeichnet wird. In diesem Artikel erfahren Sie mehr über diesen speziellen Sammlungstyp und besprechen die Vor- und Nachteile der Arbeit mit MongoDB-begrenzten Sammlungen in Java.

Voraussetzungen

Bevor wir uns Capped Collections und ihre Funktionsweise genauer ansehen, ist es wichtig, die Systemanforderungen zu überprüfen. Für diese Aufgabe gibt es nur eine Voraussetzung: Sie müssen sicherstellen, dass sowohl MongoDB als auch der MongoDB Java-Treiber zuvor ordnungsgemäß konfiguriert wurden.

Was sind MongoDB-begrenzte Sammlungen?

Wie bereits in der Einleitung erwähnt, sind die meisten MongoDB-Sammlungen nicht in der Größe begrenzt. Capped Collections hingegen sind kreisförmige Sammlungen fester Größe, die der Einfügereihenfolge folgen. Der Begriff „zirkulär“ bezieht sich auf die Tatsache, dass bei Erreichen der festen Größe, die einer begrenzten Sammlung zugewiesen ist, automatisch die ältesten Dokumente in der Sammlung gelöscht und überschrieben werden, um die neuen Dokumente aufzunehmen – ähnlich wie bei einem zirkulären Puffer. Ein weiteres Schlüsselmerkmal von Capped Collections ist die Beibehaltung der Einfügereihenfolge; dadurch entfällt die Notwendigkeit, dass ein Index Dokumente in der Reihenfolge des Einfügens zurückgibt. Insgesamt unterstützt die Struktur und Funktionalität einer begrenzten Sammlung eine hohe Leistung für Erstellungs-, Lese- und Löschvorgänge.

Anwendungsfälle für eine MongoDB Capped Collection

Obwohl eine Standard-MongoDB-Sammlung unter den meisten Umständen gut funktioniert, gibt es bestimmte Anwendungsfälle, in denen die Leistung mithilfe einer begrenzten Sammlung optimiert werden kann. Einige häufige Anwendungsfälle sind:

  1. Protokollierungsinformationen
  2. Cache-Daten
  3. Audit-Informationen

In all diesen Anwendungsfällen wird die Leistung durch die Eliminierung eines Index sowie die zirkuläre (First-in-First-out) Natur der Sammlung optimiert, die die Ordnung aufrechterhält und die Speichernutzung in Schach hält.

So erstellen Sie eine MongoDB Capped Collection mit Java

Nachdem wir nun verstanden haben, wie Capped Collections funktionieren, schauen wir uns einen Code an, der sie verwendet. Der folgende Code zeigt ein Beispiel zum Erstellen einer MongoDB-begrenzten Sammlung:

In diesen wenigen Codezeilen ist viel los, also schauen wir uns das genauer an und überprüfen, was Zeile für Zeile passiert:

  1. Zuerst stellen wir eine Verbindung zu einer MongoDB-Bereitstellung her, die lokal ausgeführt wird.
  2. Sobald die MongoDB-Clientinstanz mit der MongoDB-Bereitstellung verbunden ist, verwenden wir die getDatabase() -Methode, um auf die Datenbank zuzugreifen.
  3. Schließlich verwenden wir die createCollection() -Methode, um explizit eine Sammlung zu erstellen. Diese Methode ermöglicht es dem Benutzer, verschiedene Optionen mit CreateCollectionOptions() bereitzustellen. In diesem Beispiel haben wir angegeben, dass die Sammlung begrenzt wäre und dass ihre Größe in Bytes 256 wäre.

Nachdem der Code ausgeführt wurde, haben wir eine neue heroColl -Sammlung in der heroDB -Datenbank mit einer begrenzten Größe von 256 Byte.

HINWEIS: MongoDB erstellt automatisch einen Index für das Feld _id , aber dieser automatische Index kann deaktiviert werden, um die Leistung bei Einfügungen zu verbessern.

Wenn Sie den automatischen Index deaktivieren, sieht der Code ungefähr so aus:

1
2
3
4
db.CreateCollection(„heroColl“, neue CreateCollectionOptions()
.capped(wahr)
.autoIndex(falsch)
.sizeInBytes(256));

So fügen Sie ein MongoDB-Dokument mit Java in eine MongoDB-Capped-Sammlung ein

Als nächstes sehen wir uns ein Beispiel an, in dem wir ein Dokument in unsere Capped-Sammlung einfügen:

Nachdem wir diesen Code ausgeführt haben, können wir den Einfügevorgang mit der MongoDB-Shell überprüfen.

  • Greifen Sie zuerst auf die Datenbank „heroDB“ zu:
1
2
verwenden Sie heroDB
wechselte zu db heroDB
  • Suchen Sie dann die Dokumente in der Sammlung „heroCall:
1
db.heroColl.finden().ziemlich()
  • Die zurückgegebenen Ergebnisse sollten wie folgt aussehen:
1
2
3
4
5
6
7
{
“ _id“ : ObjectId(„5ce4dc71a7986c1842433d0f“),
„heroName“ : „Ethan“,
„Alter“ : 25,
„Nationalität“ : „Amerikaner“,
„Film“ : „Mission impossible“
}

Vorteile einer MongoDB Capped Collection

Die Arbeit mit MongoDB Capped Collections bietet einige wichtige Vorteile:

  1. MongoDB Capped Collections bieten einen höheren Durchsatz, da Abfragen keinen Index benötigen, um Dokumente in der Reihenfolge des Einfügens zurückzugeben.

  2. Eine begrenzte Sammlung führt nur dann eine Aktualisierung durch, wenn das aktualisierte Dokument der ursprünglichen Dokumentgröße entspricht. Dadurch wird sichergestellt, dass die Dokumente ihren Speicherort auf der Festplatte nicht ändern.

  3. Die feste Größe und der kreisförmige Charakter einer begrenzten Sammlung machen sie zur idealen Wahl für die Speicherung von Protokolldateien.

Nachteile einer MongoDB Capped Collection

Obwohl die Verwendung einer Capped Collection mehrere Vorteile bietet, sind einige Nachteile zu beachten:

  1. Ein Aktualisierungsvorgang schlägt fehl, wenn das Update die ursprüngliche Größe einer MongoDB-begrenzten Sammlung erhöht.

  2. Sie können Dokumente in einer begrenzten Sammlung nicht löschen. Das Löschen erfolgt automatisch, wenn die feste Größe erreicht ist und das älteste Dokument gelöscht wird, um Platz für ein neues zu schaffen. Sie können jedoch {emptycapped: theCollection} verwenden, um alle Dokumente aus einer begrenzten Sammlung zu löschen.

  3. Sie können eine MongoDB-begrenzte Sammlung nicht teilen.

Fazit

Wenn Sie sich gerade mit begrenzten Sammlungen in MongoDB vertraut machen, können Sie sehen, dass sie sich stark von Standardsammlungen unterscheiden. Begrenzte Sammlungen bieten viele Vorteile für hochvolumige Protokollspeicher und Anwendungen mit hohem Durchsatz, daher ist es wichtig zu verstehen, wie sie funktionieren und wie sie verwendet werden. Mit den Anweisungen in diesem Tutorial haben Sie keine Probleme mit MongoDB Capped Collections in Ihren eigenen Anwendungen zu arbeiten.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.