MongoDB

(von "humongous" = gigantisch, enorm, riesig)

Betrieb von Alex und MongoDB

Alex kann ab der Version 7.6.4.1 mit MongoDB's arbeiten. Voraussetzungen:

  • Version > 7.6.4.1
  • 64 bit Betriebssystem für Server oder Standalonebetrieb
    • (Client kann überall laufen)
  • "connectionInfo" im ALEX-Config-File = LOKALER Ordner in der Form ([drive]:/.../)[name].[port].mongo/.
    • zB.: Gültige "connectionInfo" für MongoDB:
      • Kunde.mongo/
      • .mongo/
      • 9000.mongo/
      • Kunde.9000.mongo/
      • C:/AlexDat/Kunde.9000.mongo/
      • D:/AlexDat/Kunde.9000.mongo/
      • C:/AlexDat/Kunde.mongo/
  • im Client-Server Betrieb -> Bfx.Alex.Server == Datenbankserver!
  • Besonderheit [port] im Pfadname
    • im Client Server Betrieb ist ein [port] notwendig damit Sicherung automatisiert werden kann
    • Im reinen Standalone Betrieb ist kein [port] im Pfadname notwendig
    • siehe auch ALEX-Ports

Die Ordnerstruktur einer MongoDB sieht wie folgt aus:

[drive]:/.../[name].[port].mongo/     // Stammverzeichnis = "connectionInfo"
                                /db/  // Datenverzeichnis
                                /log/ // Logverzeichnis

Wenn Alex gestartet wird, wird automatisch das mongod.exe (liegt bei den Alex-Exe) gestartet. Ob dieses exe im Vordergrund oder unsichtbar gestartet wird hängt ab von folgendem:

  • im ALEX-Config-File ist 'showMongod' gesetzt -> mongod.exe läuft im Vordergrund
  • im ALEX-Config-File ist bei 'connectionInfo' ein Port angegeben -> mongod.exe läuft im Vordergrund
  • im ALEX-Config-File ist bei 'connectionInfo' kein Port angegeben -> mongod.exe läuft im Hintergrund

Erstellen neuer Datenbanken

Gleiches Vorgehen mit Bfx.Alex.Tools wie Sybase. Siehe Form von "connectionInfo".

Konvertieren bestehender Datenbanken

ALEX-Config-File "convertFrom"

Um eine SQL-Datenbank umzuwandeln, muß man sie im ALEX-Config-File unter (db.)"convertFrom" eintragen.

Die zu erzeugende neue MongoDB gibt man im (db.)"connectionInfo" an -> der angegebene Ornder wird automatisch erzeugt und darf NICHT zuvor händisch im WindowsExplorer angelegt werden.

mit Bfx.Alex.Standalone.exe einsteigen -> Alex konvertiert altes DB-Format in MongoDB-Format.

Richtwert für die Dauer: getestet BitFactory CRM: 600.000 Objekte (= select count(*) from TBfxXObject) -> ca. 10 min

  • 1.000.000 Objekte -> ca. 15 min
  • 2.000.000 Objekte -> ca. 30 min
  • 4.000.000 Objekte -> ca. 60 min
  • 8.000.000 Objekte -> ca. 120 min
  • 16.000.000 Objekte -> ca. 240 min

AKH Linz: ca. 12.000.000 Objekte -> ca. 180 min

Alex-V7.7-Sybase-DB mit 1,8 GB: nur 1.648.741 Objekte -> ca. 210 min!

MongoDB und Abfragen

MongoDB-Queries

Mögliche Fehlermeldungen

Fehlermeldung nach Konvertierung:


"ACHTUNG: \'convertFrom\' -> connectionInfo [drive]:/.../[name].[port].mongo/ nicht leer!"

-> "convertFrom" herauslöschen aus Config-File.


Log-File "Bfx.Alex.MongoConverter.Client.log" durchschauen ob [error] vorhanden.

-> Falls Ja und nicht selbsterklärend, bei Kollegen nachfragen.


Fehlermeldung beim Einstieg:

für ältere Serverbetriebssysteme < Windows 2008 R2 kann die Mongoinstallation übersteuert werden. dazu einfach https://s3.amazonaws.com/downloads.bitfactory.at/%23legacy%23.zip in den exe Ordner extrahieren und mind. Version 7.8.6.31 einspielen (aufgefallen Altenhof) Ordnerstruktur muss sein:

exe\#legacy#\mongod.exe
            \mongo.exe
            \mongorestore.exe
            \mongodump.exe

genauer Ablauf bei Umstellung: Mongo - Umstellung

Sicherung

ab V7.8

Alex-Server sichert automatisch jeden Tag um 3 Uhr früh in den "backup" Unterordner.

Dieser "backup"-Ordner wird autom. in eine ".bfx_BACKUP"-Datei gezippt - diese wird neben dem "backup"-Ordner abgelegt.

-> Alle ".bfx_BACKUP"-Datei müssen vom Kunden täglich weggesichert werden. (Es gibt immer nur die Sicherung vom letzten Tag.)

Dazu muß der Mongo-Server Port im Mongo-Pfad codiert werden!

siehe auch: ALEX-Ports Mongo-Server Port

Beispiel:

C:\BitFactory\AlexDat\Kunde.1234.mongo
                             ^
                             |
                            Port (darf nicht mit anderen Ports kollidieren)

Sicherung wiederherstellen

Die wiederhergestellte Datenbank kann dann mit der vorhandenen ausgetauscht werden.

Datenbank reparieren

  • zB.: manchmal notwendig bei Problemen von Upgrade "alte" 7.8 auf neueste 7.8
> mongod.exe --dbPath C:\Bitfactory\AlexDat\_.9000.mongo\db --repair

Datenbank in ein Testsystem kopieren

Achtung: Die folgenden Schritte sind nur bei bestehendem Testsystem möglich!

  • Letzte Version, welche im Echtsystem eingespielt wurde im Testsystem einspielen
  • Shutdown (ohne Dienst neu Starten) im Echtsystem einplanen
  • Der Dienst des Echtsystems sowie des Testsystems müssen über den ALEX Service Manager gestoppt werden
  • Im Anschluss kann der Ordner "db" aus dem Echtsystem kopiert und der "db" Ordner im Testsystem durch diesen ersetzt werden
  • Abschließend müssen die beiden Dienste wieder gestartet werden
  • Um Verwechslungen zu vermeiden, sollte im Testsystem unter Systemeinstellungen die "Anzeige in Titel des Hauptfensters" geändert werden (z.B. "Testsystem")

Migration auf einen anderen Server

  • Shutdown (ohne Dienst neu Starten) im Echtsystem einplanen.
  • Dienst über den ALEX Service Manager stoppen. (zur Sicherheit vielleicht noch im Windows ServerManager kontrollieren, ob es keine geöffneten Dateien gibt)
  • Gesamten Bitfactory-Ordner vom alten Server auf den neuen Server kopieren. (Sowohl AlexExe als auch AlexDB müssen auf den neuen Server kopiert werden)
  • Am neuen Server: Im Config-File muss nun folgendes geändert werden: Pfad für AlexDB; IP-Adresse und falls es am neuen Server bereits einen anderen Alex gibt auch die Ports und den Service-Namen
  • Am neuen Server: ALEX Service Manager ausführen: Dienst neu anlegen und anschließend starten.
  • Link zum Alex Client auf dem neuen Server verteilen
  • Bei Zeiterfassung: Config-File vom neuen Server auf die Stempeluhren verteilen

Administrative Tools von Drittherstellern

MongoExplorer

MongoVUE

Technische Informationen für Interessierte

Song zur MongoDB

MongoDB Home

MongoDB Starting and Stopping

MongoDB Interactive Shell

MongoDB Queries

http://en.wikipedia.org/wiki/MongoDB

http://en.wikipedia.org/wiki/Document-oriented_database