Protokolle in MongoDB speichern

Ab der Version 5.90a unterstützen toolstar®testLX und toolstar®testWIN das Speichern von JSON-Dokumenten in die MongoDB Datenbank. Dadurch besteht die Möglichkeit Protokolle strukturiert und einfach abfragbar abzulegen und zu archivieren.

MongoDB Datenbank

MongoDB ist eine schemalose NoSQL-Datenbank und arbeitet mit dem JSON-Format (explizit mit einem speziellen binären JSON-Format (BSON) zur effizienten Ablage der Daten). Im Gegensatz zu klassischen SQL-Datenbanken, die in Datenbanken, Tabellen, Spalten und Zeilen organisiert sind, werden Daten in der MongoDB in Datenbanken, Collections (Sammlungen) und Dokumenten abgelegt. Dabei kann, anders als bei SQL-Datenbanken, jedes Dokument in einer Collection ein anderes Format (unterschiedliche Daten) aufweisen. Dadurch ergibt sich der Vorteil, dass man vor dem Speichern der Daten nicht erst eine generische allgemein passende Struktur aufbauen muss.

Einrichtung der Datenbank

Das Installationsprogramm für die Datenbank erhalten Sie unter https://www.mongodb.com/try/download/community. Die Datenbank kann einfach über eine geführte grafische Installation unter Windows eingerichtet werden. Der Standard-Port für die Datenbank nach der Installation ist 27017.

Nach der Installation können Sie sich über MongoDB Compass (sollte bei der Installation automatisch mit installiert worden sein) verbinden. Anschließend können Sie über “Create database” eine neue Datenbank hinzufügen. In dieser neu erstellten Datenbank legen Sie dann noch eine Collection an, in der dann die Dokumente (toolstar®-Prokolle) abgelegt werden. Das können Sie alles über die grafische Oberfläche von MongoDB Compass vornehmen oder über die Kommandozeile der Datenbank.

Einrichtung im Programm

In den Programmen toolstar®testLX und toolstar®testWIN wird das Speicherziel innerhalb der Dauertests äquivalent eingerichtet. Grundsätzlich müssen Sie folgende Angaben bei den Berichten und dem Speicherziel Datenbank tätigen (alle Einstellungen gehen von einer Standard-Installation der MongoDB Datenbank aus):

  1. Connection URI: mongodb://localhost:27017
  2. Database name: Den Namen der von Ihnen erstellten Datenbank
  3. Collection name: Der Name der von Ihnen erstellten Collection / Sammlung
  4. Format: JSON

MongoDB Compass als grafisches Interface für die Datenbank

In diesem Beispiel existiert eine Datenbank mit dem Namen TestWIN und einer Sammlung (Collection) TestWIN. Darin enthalten sind 3 Dokumente mit unterschiedlichen Informationen.

Mit dem Interface von MongoDB Compass können Sie Folgendes machen:

  1. Datenbanken anlegen und verwalten
  2. Sammlungen anlegen und verwalten
  3. Die gespeicherten Daten ansehen, exportieren und bearbeiten
  4. Mit Hilfe der Oberfläche Abfragen generieren und speichern
  5. Indizes anlegen und verwalten
  6. Einstellungen an der Datenbank und den Sammlungen vornehmen

Limitierungen

Auch wenn die Datenbank ohne Schema auskommt, muss diese doch einige Regeln erzwingen, damit die Daten ordentlich gespeichert und abgefragt werden können. Deshalb können nicht alle Berichte in vollem Umfang gespeichert werden. Eine sehr gute Konfiguration zum Speichern von Informationen würde so aussehen:

In diesem Beispiel wurde explizit das Ablaufprotokoll abgewählt, weil dieses doppelte Daten enthält und damit nicht in MongoDB speicherbar ist. Unsere Empfehlung ist es, eine Systemübersicht auszuwählen (Einseitig, Ausführlich, etc.), kein Ablaufprotokoll und die Testergebnisse stattdessen über das hierarchische Protokoll auszuwerten. Das hierarchische Protokoll können Sie in jeder Detailtiefe abspeichern.

Abfragen der Daten

In der MongoDB Compass Oberfläche können Sie über den Options-Schalter innerhalb des Filter-Felds einer Collection eine Abfrage konfigurieren. Grundsätzlich sind Abfragen wie JSON-Dokumente aufgebaut und die Feld-Namen stellen dabei einen Pfad zu einem Dokument dar. In unserem Beispiel gehen wir von folgendem Dokument in der Datenbank aus:

In diesem Beispieldokument aus toolstar®testWIN finden wir einige Objekte (report, document) sowie einen Array (Liste (Angaben zu PC & Tester)). Die Abfrage um das Dokument mit dem Datum 2022-11-04 zu finden sieht folgendermaßen aus:

In dieser Abfrage finden wir folgende Einstellungen:

  1. Filter: {“report.document.datetime”:{$gte:ISODate(‘2022-11-03T00:00:00Z’).toISOString()}}
  2. Projection: {“report.document.id” : 0}
  3. Sortierung: {“_id” : 1}
  4. Skip: 0
  5. Limit: 5
  6. Max Times MS: 5.000

In den meisten Fällen werden Sie nur den Filter benötigen. Dieser gibt an, welche Dokumente abgefragt werden sollen und stellt eine Such-Frage dar. In diesem Fall lautet die Frage, die wir gestellt haben: Gib mir alle Dokumente, dessen Feld report.document.datetime (wobei die Punkte eine Art Baumstruktur darstellen) deren Wert größer als gleich ($gte) einem Datum nach ISO-Format 2022-11-03T00:00:00Z entsprechen.

Die Projection gibt an, welche Felder abgerufen (Wert: 1) oder nicht abgerufen (Wert: 0) werden sollen. In diesem Beispiel fragen wir alle Felder außer das Feld report.document.id an.

Eine Kollatierung ist eine Reihe von Regeln für die Reihenfolge und Übereinstimmung von Zeichen, die für eine bestimmte Sprache und ein bestimmtes Gebietsschema gelten. In den meisten Fällen können Sie dieses Feld ignorieren und sich auf die Standard-Einstellungen von MongoDB verlassen.

Mit Skip und Limit können Sie festlegen, wie viele Daten abgerufen werden sollen. Das ist vor allem dann wichtig, wenn Sie bereits viele tausend Dokumente in der Datenbank haben. Die Parameter Skip und Limit sind für das sogenannte Paging zuständig. Damit können Sie eine komplette sehr große Datenbank durchlaufen, ohne Ihren PC zu überlasten. In unserem Beispiel rufen wir insgesamt 5 Dokumente ab und überspringen dabei 0. Wenn wir davon ausgehen, dass Sie eine Datenbank mit 500 Einträgen haben und diese alle nacheinander abrufen wollen, könnten Sie in der ersten Abfrage Skip: 0 und Limit: 10 setzen. In der zweiten Abfrage setzen Sie dann Skip: 10 und Limit: 10 um die Dokumente 10-20 abzurufen.

Tipps und Ticks

  1. Effiziente Abfragen durch Indizes
    Es kann sinnvoll sein auf bestimmte Felder, die oft abgerufen werden, Indizes zu setzen damit Abfragen schnell laufen. Ein gutes Feld dafür könnte die CPU-Bezeichnung sein, falls man oft alle Geräte mit Intel oder AMD-CPU´s abruft.
  2. Dashboard für das Unternehmen
    Für die MongoDB-Datenbank stehen viele verschiedene Treiber zur Verfügung (Java, PHP, Go, C, C++, etc.). Mit diesen Treibern lassen sich jederzeit eigene Applikationen aufsetzen, die dann die Daten abrufen und in einem internen Dashboard darstellen.
  3. Mehrere Collections für eine bessere Sortierung
    Sie können selbstverständlich viele verschiedene Collections anlegen und diese bei verschiedenen Berichten in toolstar®testLX und toolstar®testWIN verwenden. Damit können Sie die Dokumente besser sortieren und Abfragen einfacher gestalten. Sie könnten auch regelmäßig alle Berichte in eine Art Archiv-Collection verschieben.
Cookie Consent with Real Cookie Banner