MongoDB-Einrichtung
Datenbanken und für den Zugriff auf Datenbanken verwendete JDBC-Treiber sind Produkte von Drittherstellern und werden weder von Lobster unterstützt, noch von Lobster zur Verfügung gestellt. Eine eventuell dennoch geleistete Unterstützung oder Beratung zu Datenbanken bzw. JDBC-Treibern durch den Lobster-Support ist freiwillig und impliziert in keinem Fall einen Übergang der Verantwortung auf diesen. Die Installation, der Betrieb und die Wartung von Datenbanken/JDBC-Treibern, bzw. durchgeführte Maßnahmen an diesen, unterliegen immer und ausnahmslos der Verantwortlichkeit des Kunden.
Der Lobster-Support unterstützt Sie natürlich gerne bei den in Lobster_data nötigen Konfigurationen zur Anbindung funktionierender Fremdsysteme.
Diese Anleitung beschreibt die Einrichtung einer MongoDB-Datenbank in Lobster_data (zusätzliche Lizenz nötig). Diese deckt nicht die Einrichtung der MongoDB selbst ab. Bitte verwenden Sie dazu die MongoDB-Handbücher.
Grundlegende Voraussetzungen
Um MongoDB als Protokollierungsserver von Lobster_data zu verwenden, muss Ihre Installation über eine gültige Lizenz für die Thread-Optimierung verfügen (Thread Optimization).
Sie sollten den MongoDB-Treiber mongo-java-driver.jar bereits in Ihrem ./lib-Verzeichnis haben. Ansonsten wenden Sie sich bitte an unsere Mitarbeiter im Support.
Konfigurationsdatei ./etc/mongodb.xml
Der Datenbank-Alias für das Logging muss den Namen _data haben. Ist das nicht der Fall, wird das Logging nicht auf die MongoDB umgestellt!
Die Option minSize akzeptiert nur die Werte 0 oder 1. Pooling und Caching erfolgt durch den Treiber selbst. Eine minSize von 0 baut beim Serverstart keine Verbindung auf. Die Option catalogName verweist auf die Datenbank mit den sogenannten Collections. Da MongoDB Cluster-Server unterstützt, können Sie mehrere Server unter einem Alias definieren. Folgend ein Beispiel.
<?
xml
version
=
"1.0"
encoding
=
"ISO-8859-1"
?>
<!DOCTYPE Configure PUBLIC
"-//EBD Integration//DTD Configure 1.0//EN"
"
http://www.ebd-integration.de/dtd/configure_1_1.dtd
">
<
Configure
class
=
"com.ebd.hub.services.nosql.mongo.MongoDBConnectionService"
>
<
Set
name
=
"verbose"
>False</
Set
>
<
Call
name
=
"initPool"
>
<
Arg
>
<
New
class
=
"com.ebd.hub.services.nosql.mongo.MongoDBSettings"
>
<
Set
name
=
"alias"
>_data</
Set
>
<!-- connection string: 'mongodb:[gssapi|x509|sha1|sha256|plain]://server:port'-->
<!-- sha256 refers to the authentication type SCRAM-SHA-256.-->
<
Call
name
=
"addDatabaseEntry"
>
<
Arg
type
=
"String"
>mongodb:
plain://localhost:27017
</
Arg
>
<
Arg
type
=
"String"
/>
<
Arg
type
=
"String"
/>
</
Call
>
<!--
<
Call
name
=
"addDatabaseEntry"
>
<
Arg
type
=
"String"
>mongodb:
sha256://localhost:27017
</
Arg
>
<
Arg
type
=
"String"
>user</
Arg
>
<
Arg
type
=
"String"
>password</
Arg
>
</
Call
>
-->
<
Set
name
=
"minSize"
>0</
Set
>
<
Set
name
=
"catalogName"
>hugo</
Set
>
</
New
>
</
Arg
>
</
Call
>
</
Configure
>
Konfigurationsdatei ./etc/factory.xml
Aktivieren Sie den folgenden Abschnitt in der Konfigurationsdatei file ./etc/factory.xml oder fügen Sie ihn hinzu (gleich nachdem Sie den MongoDBConnectionService hinzugefügt haben).
<
Call
name
=
"addService"
>
<
Arg
>com.ebd.hub.services.nosql.mongo.MongoDBConnectionService</
Arg
>
<
Arg
>etc/mongodb.xml</
Arg
>
</
Call
>
Stored Procedure für nächste Jobnummer und Archivoption in ./etc/startup.xml
Lobster_data kann die nächste verfügbare Jobnummer mit zwei Methoden verwalten. Verwenden des internen Speicherdienstes oder Ausführen einer Stored Procedure. Wenn Sie eine MongoDB verwenden, müssen Sie die Stored Procedure aktivieren. Wichtiger Hinweis: Wenn der Aufruf der Stored Procedure keine Jobnummer zurück liefert (z. B. weil die Datenbank hub nicht erreichbar ist), dann wird Lobster_data beendet.
Beispiel für MySQL (und andere Datenbanken)
Eine Beispiel-Prozedur für verschiedene Datenbanken finden Sie in Datei ./conf/samples/db_sequence.sql. Speichern Sie die letzte Jobnummer in der verwendeten Tabelle der Prozedur, um doppelte Auftragsnummern zu vermeiden. Falls Sie die Beispiel-Prozedur verwenden, fügen Sie die folgende Option in der Konfigurationsdatei ./etc/startup.xml hinzu.
Allgemein:
<
Set
name
=
"sequenceProcedureCall"
>execute command</
Set
> (siehe jeweils in der Beispiel-Datei)
Die Prozedur muss in der Datenbank (Schema) erstellt werden, die Lobster_data für das (normale) Logging verwendet.
Wichtiger Hinweis: Wenn Sie eine MySQL-Datenbank verwenden, dann sollten Sie stattdessen folgende Sequenz benutzen, da dort Stored Procedures nicht thread-sicher sind.
create
sequence
getNextJobNr
as
BIGINT
start
with
<start_value> increment
by
1;
Verwenden Sie für den Startwert start_value die aktuell höchste Jobnummer (evtl. auch etwas höher).
Fügen Sie dann die folgende Option in der Konfigurationsdatei ./etc/startup.xml hinzu.
<Set name="sequenceProcedureCall">SELECT NEXT VALUE FOR getNextJobNr</Set>
Archivierung
Mit einer MongoDB können Sie veraltete Log-Einträge von Jobs in eine andere Collection verschieben. Fügen Sie dazu den folgenden Eintrag ein.
<
Call
name
=
"setLongTimeArchive"
><
Arg
type
=
"int"
>30</
Arg
><
Arg
type
=
"int"
>900</
Arg
></
Call
>
In diesem Beispiel werden alle Logeinträge, die älter als 30 Tage sind, in die Archiv-Collection verschoben und dort nach 900 Tagen gelöscht. Bei der Anforderung von Logeinträgen, die älter als 30 Tage sind, sucht Lobster_data in der Archiv-Collection statt in der normalen Collection.
Log-Migration
Wenn Ihr System erfolgreich gestartet wurde, können Sie Ihre alten Log-Meldungen der SQL-Datenbank in der MongoDB zusammenführen. Die Migration wird im Hintergrund durchgeführt. Stoppen Sie den Server also nicht, bis der Job beendet ist!
Öffnen Sie die Admin-Konsole und navigieren Sie zu Ausführung von Klassen. Geben Sie com.ebd.hub.datawizard.log.mongodb.TransferLogEntries als Klassennamen ein und den Datenbank-Alias des normalen Loggings (normalerweise ist das hub). Optional können Sie (falls konfiguriert) den DataCockpit-Alias eingeben. Führen Sie die Klasse aus und überprüfen Sie Datei ./logs/wrapper.log unter Windows oder ./hub.txt unter Unix-/Linux-Systemen. Sie werden eine Nachricht wie Finished, overall time is XXXs am Ende vorfinden. Nur die Tabelle dw_log_sum wird zur MongoDB migriert. Wenn Sie alte Details-Logs benötigen, müssen Sie diese aus der alten dw_log-Tabelle abfragen.
MongoDB und DataCockpit
Wenn Sie eine MongoDB und DataCockpit benutzen (siehe Abschnitt Installation), fügen Sie bitte eine Eintrag wie den folgenden in Konfigurationsdatei ./etc/startup.xml ein
<
Call
name
=
"addApplication"
><
Arg
>
<
New
class
=
"de.lobster.webmon.apps.WebMonitor"
>
<
Set
name
=
"alias"
>hub</
Set
>
<
Set
name
=
"remoteHost"
></
Set
>
<
Set
name
=
"remotePort"
>8020</
Set
>
<
Set
name
=
"mailSender"
>first.last@lobster.de</
Set
>
<
Set
name
=
"retainHeaderLogs"
>999</
Set
>
<
Set
name
=
"cleanUpTime"
>2</
Set
>
<
Set
name
=
"serverName"
>Main Server</
Set
>
</
New
>
</
Arg
></
Call
>
und zudem in Konfigurationsdatei ./etc/mongodb.xml.
<
Call
name
=
"initPool"
>
<
Arg
>
<
New
class
=
"com.ebd.hub.services.nosql.mongo.MongoDBSettings"
>
<
Set
name
=
"alias"
>_data</
Set
>
<
Call
name
=
"addDatabaseEntry"
><
Arg
type
=
"String"
>mongodb:
plain://localhost:27017
</
Arg
><
Arg
type
=
"String"
></
Arg
><
Arg
type
=
"String"
></
Arg
></
Call
>
<
Set
name
=
"minSize"
>0</
Set
>
<
Set
name
=
"catalogName"
>hugo</
Set
>
</
New
>
</
Arg
>
</
Call
>
<
Call
name
=
"initPool"
>
<
Arg
>
<
New
class
=
"com.ebd.hub.services.nosql.mongo.MongoDBSettings"
>
<
Set
name
=
"alias"
>hub</
Set
>
<
Call
name
=
"addDatabaseEntry"
><
Arg
type
=
"String"
>mongodb:
plain://localhost:27017
</
Arg
><
Arg
type
=
"String"
></
Arg
><
Arg
type
=
"String"
></
Arg
></
Call
>
<
Set
name
=
"minSize"
>0</
Set
>
<
Set
name
=
"catalogName"
>hugo</
Set
>
</
New
>
</
Arg
>
</
Call
>