Document toolboxDocument toolbox

Data Warehouse

Nur für versierte Systemadminstratoren

Diese Anleitung bietet bietet einen ersten Ansatz für erfahrene Systemadministratoren, wie eine MySQL Datenspiegeldung zu Auswertungszwecken angelegt werden kann. Die Anwendung dieser Anleitung obliegt Ihrer eigenen Verantwortung und wird nicht von extragroup supportet.

Vorbemerkungen

Wenn Sie eine profacto-Installation mit vielen Anwendern nutzen und hier ein erhöhter Auswertungsbedarf besteht, dann ist es sinnvoll, die Auswertungen nicht auf der aktuellen Datenbank zu fahren, sondern auf einer Kopie. Ein erster Ansatz wäre also, einen zweiten Server mit einer Kopie der Datenbank zu installieren.

Sieht man sich am Markt nach Auswertungswerkzeugen um, stösst man auf eine Reihe von Werkzeugen wie Crystal Reports oder SAP Business Objects, die intensiven Gebrauch von den Möglichkeiten der SQL-Programmiersprache machen. Da 4D selbst nur einen eingeschränkten Befehlssatz unterstützt (mehr ist für die 4D Entwickler aufgrund der umfangreichen Möglichkeiten des Datenbanksystems und der Programmierumgebung nicht nötig), empfiehlt es sich, die Datenbank in ein für SQL optimiertes Datenbanksystem zu exportieren. Wir haben uns für das Open Source System MySQL entschieden, da hierfür eine enorm grosse Menge an Wissen verfügbar ist und sehr viele Werkzeuge. Ausserdem ist es kostenlos.

Die so gespiegelte Datenbank nennt man gemeinhin Data Warehouse, weil man sich hieraus wie aus einem Lager für Auswertungen bedienen kann.

Grundeinrichtung ausserhalb von profacto

MySQL herunterladen und installieren

Bevor wir in profacto ein Data Warehouse einrichten können, benötigen wir erst einmal die Infrastruktur hierfür. Das ist konkret:

  • MySQL 5.1 oder neuer
  • ein MySQL-Connector

Am besten laden Sie sich eine sogenannte http://sourceforge.net/projects/xampp/ XAMPP-Installation runter. Damit erhalten Sie nicht nur ein MySQL, sondern auch einen Apache-Webserver und PHP, um mit dieser Kombination die Datenbank grafisch administrieren zu können.
Alternativ laden Sie einfach http://www.mysql.com/downloads/ MySQL-Server 5.1, müssen dann jedoch einmal mit der Kommandozeile arbeiten.

ODBC-Connectoren finden Sie http://www.mysql.com/downloads/connector/odbc/ hier.

Datenbank anlegen

Nachdem Sie XAMPP oder MySQL installiert haben, starten Sie den Server und gehen in die Administrationskonsole.* Wenn der MySQL-Server nicht läuft, kann alles weitere nicht funktionieren!*

XAMPP

Mit XAMPP gelangen Sie über die Control Panel Application in den Adminbereich.

Im phpMyAdmin können Sie direkt auf der Startseite eine "Neue Datenbank anlegen"

MySQL-Konsole

Falls Sie über die mysql-Konsole gehen, geben Sie folgende Befehle ein:

  • Von der Windows-Kommandozeile aus: mysql -u root -p
  • create database profactomysql;
  • Zum Testen, ob das geklappt hat: show databases;

Falls das OK ist, können Sie mit

  • quit;
    die Konsole wieder verlassen. Vergessen Sie bei den Konsolenbefehlen das Semikolon am Ende nicht!

Connector einrichten

Als nächstes müssen Sie den Connector installieren und dann eine neuen Systemdatenquelle einrichten.
Dazu rufen Sie unter Windows aus der Systemsteuerung die ODBC-Datenquellen auf. Erzeugen Sie hier eine neue System-DSN und wählen Sie dann als Treiber den MySQL-Treiber auf.

Dieser sollte so eingerichtet sein:

//screenshot

Damit ist die Einrichtung des Data Warehouse ausserhalb profacto abgeschlossen.

Einrichtung in profacto

Voreinstellungen

In profacto rufen Sie die Voreinstellungen auf und wechseln auf die Seite Datenbank.

Hier finden Sie dann folgenden Einstellungsbereich:

  • Host: Tragen Sie hier den Namen der vorhin angelegten DSN ein.
  • Datenbankname: Tragen Sie hier den Namen der in MySQL erzeugten Datenbank ein
  • Benutzername für Auth: Normalerweise "root"
  • Passwort: Falls nicht anderweitig gesetzt: Leer lassen

Das sind die Basiseinstellungen.

Jetzt müssen Sie einmal eine Strukturdefinition erzeugen. Dazu gibt es 2 Wege:

  • Verknüpfen Sie durch Klick auf Pfad zu Strukturdefinition einen vorhandenen Pfad, innerhalb des Dialogs können Sie auch einen neuen Unterordner anlegen. Durch einen weitern Klick auf Strukturdefinition anlegen wird innerhalb des zugewiesenen Ordners der Unterordner DWHSTRUCT erstellt.
  • Klicken Sie einmalig auf Strukturdefinition anlegen. Damit wird ein neuer Ordner DWHSTRUCT erzeugt, den Sie normalerweise im Database-Ordner Ihrer profacto-Installation finden. Im Mehrplatzfall finden Sie diesen Ordner auf dem Server. Diesen Ordner können Sie an eine Ihnen genehme Stelle verschieben. Nachdem Sie dies getan haben, klicken Sie auf Pfad zu Strukturdefinition und wählen diesen Ordner aus.

Direkt darunter können Sie den Logginglevel bestimmen:

  • 1: Start, Ende, eventuell auftretende Fehler
  • 2: Logging 1 + Anlage Dateien
  • 3: Logging 2 + Anlage Daten

Das Logging Level 2 reicht normalerweise aus. Sie finden die Log-Einträge dann durch Anklicken des Buttons Logging auf der selben Karteikarte. Das Logging erlaubt Ihnen zu kontrollieren, ob die verschiedenen Tabellen sauber übertragen wurden.

Damit sind wir fertig mit der Einrichtung und können erstmals die Daten ins Warehouse übertragen. Klicken Sie auf Datawarehouse jetzt abgleichen. Falls jetzt kein Warndialog erscheint, haben Sie alles richtig gemacht. profacto erzeugt jetzt im Hintergrund die Kopie der Datenbank in MySQL. Sie können jetzt weiterarbeiten. Durch einen Klick auf Logging sehen Sie, wie Tabelle für Tabelle angelegt wird.

//screenshot

Alternativ können Sie in MySQL über "Show Tables;" sehen, wie die Tabellen Stück um Stück zunehmen. In XAMPP sehen Sie es im Adminbereich innerhalb Ihrer Datenbank in der Struktur.

DWHSTRUCT

Da für die meisten Auswertungen nicht alle Tabellen innerhalb profacto's gebraucht werden, können die zu synchronisierenden ausgewählt werden.

Der Strukturordner (DWHSTRUCT) beinhaltet die Tabellen welche mit dem Data-Warehouse abgeglichen werden.
In diesem Ordner gibt es einen Unterordner (DoNotImport) in den alle Tabellendateien verschoben werden können, die nicht abgeglichen werden sollen.
Ein weiterer Unterordner Archiv ist rein zu Archivierungszwecken gedacht und wird von profacto nicht weiter berücksichtigt.

Regelbetrieb

Im Regelbetrieb wollen Sie normalerweise sicherstellen, dass das Datawarehouse ohne weiteren Aufwand tagesaktuell ist. Daher gibt es die Option Datawarehouse automatisch abgleichen. Aktivieren Sie die Option und geben Sie dann die Uhrzeit an, zu der der Abgleich gestartet werden soll - diese muss als ganze Stunde eingetragen werden. Der Abgleich wird nur 1x stündlich abgefragt, daher können bei der eingestellten Uhrzeit bis zu 60min Differenz auftreten.
Stellen Sie z.B. 22:00:00 Uhr ein, so startet der Abgleich zw. 22:00 und 23:00 Uhr.

Um diese Funktion nutzen zu können wird ein separater Client benötigt. Der Benutzer hierfür muss eingerichtet werden, der Benutzername muss DWH_Client lauten.

//screenshot

Wird der Client mit dem Benutzernamen DWH_Client gestartet, wird die Loggingübersicht mit den heutigen Loggingdaten angezeigt. Wird ein Datenabgleich durchgeführt wird dies live je nach Logginglevel angezeigt. Neben der Loggingübersicht können hier auch die Einstellungen analog den Voreinstellungen verändert werden.

Damit haben wir das Data Warehouse erfolgreich eingerichtet und Sie können nun mit der entsprechenden Auswertungssoftware die Daten aus profacto auswerten.

Tipps & bekannte Probleme

MySQL

Dezimal-Trenner

Unter MySQL ist das Dezimal-Trennzeichen der ".", nicht wie normalerweise das ",".

Allgemein

Dauer

Da der Datenabgleich sehr rechenintensiv ist, hängt die gesamte Dauer stark von Betriebsystem und der verwendeten Hardware ab.
In optimalsten Fällen kann die ges. Datenbank innerhalb ca. 2h abgeglichen sein, es kann sich aber auch bis zu 7h oder mehr hinziehen!
Auf dem MacBookPro ist z.B. in WindowsXP (Bootcamp) der Datenabgleich nahezu unmöglich, da es dort ODBC-Probleme gibt und die Übertragung "ewig" läuft.

Windows 7 64Bit

Unter Windows7 64Bit muss man beim Einrichten der System-DSN folgendes beachten:

  • via Systemsteuerung -> Verwaltung -> Datenquellen (ODBC) können nur 32Bit-Treiber angesprochen werden. Ein Einrichten einer System-DSN funktioniert somit nicht optimal.
  • via %windir%\syswow64\odbcad32.exe kann mit dem 64Bit-Treiber auch eine System-DSN eingerichtet werden.

Änderung von Tabellen- und Feldnamen

Zur Internationalisierung und Unterstützung des SQL 92 Standards werden kontinuierlich Tabellen- und Feldnamen angepasst. Was wann angepasst wird, ist dokumentiert.
Beim Export wird die Strukturdefinition jedesmal auf Änderungen geprüft und wo notwendig automatisch angepasst.
Allerdings müssen die Abfragen in der verwendeten Anwendung entsprechend angepasst werden!