Montag, 23. August 2010

Replikation für QMA

Im Rahmen eines Projekts mussten wir uns Gedanken über die Replikation von Daten aus der QMA (Qualitätsmanagement, Dokumentenlenkung) - Anwendung mit dem QMA-Webportal machen. Die Datenbank ist ein Oracle 10g SQL Server. Der bisherige Ansatz per Export und Import die Datenbank abzugleichen hat in diesem Fall einige Nachteile, denn es ist damit relativ schwierig lediglich die Aktualisierungen zu übertragen. Der Plan war, alle Änderungen in einer Log-Tabelle aufzuzeichnen und entweder manuell oder zeitgesteuert einen Export der Änderungen durchzuführen. Dieser Export soll per Filetransfer auf den Server übertragen und dort automatisch importiert werden.

Grundlage für den Export ist nun die Oracle Datapump-API (DBMS_DATAPUMP), die per Stored Procedures gesteuert wird. Anhand der Log-Tabelle, die durch Insert/Udate/Delete - Trigger gepflegt wird, wird lokal ein "Spiegel" der Änderungen angelegt. Diese Spiegeltabellen werden per Datapump - API exportiert. Die Dateien werden per Filetransfer in ein überwachtes Verzeichnis übertragen. Bei Ankunft neuer Dateien in diesem Verzeichnis wird der Prozess dann quasi rückwärts durchgeführt.

Zur Zeit gibt es noch einige Anforderungen die mit diesem Ansatz nicht optimal gelöst werden: Löschungen werden noch nicht berücksichtigt, und es findet noch keine Konflikterkennung bei Updates statt. Der Vorteil der Datapump-API ist dass die Datendateien alle Datentypen aufnehmen und transportieren können, so auch die BLOB-Felder. Ein besserer Ansatz wäre wenn man Journale schreiben könnte die alle Aktivitäten auf der Quelle im Ziel einfach nachfahren. Das ist wahrscheinlich der Ansatz bei der Advanced Replikation, diese API ist jedoch um einiges komplizierter.

Wir werden an dieser Stelle weiter berichten wie sich die "einfache" Replikation bewährt und entwickelt, und demnächst nach der Erprobungsphase die Quellen veröffentlichen.

Keine Kommentare:

Kommentar veröffentlichen