Datenextraktionsagent
- Der Agent kann so konfiguriert werden, dass er alle n Minuten konfiguriert wird. Standardmäßig wird der Agent alle 10 Minuten ausgelöst.
- Der Agent kann auch für die Ausführung bei mehreren parallelen Threads und mehreren JVMs konfiguriert werden. Standardmäßig wird der Agent bei 20 Threads ausgeführt.
Sie müssen die Datenextraktion ausführen, indem Sie jeweils nur ein einziges Kriterium für zusätzliche Agenten auf einem dedizierten Agentenserver verwenden. Sie dürfen die Datenextraktion nicht gleichzeitig mit mehreren Agentenkriterien ausführen.
Weitere Informationen zum Konfigurieren des Datenextraktionsagenten für die Arbeit in Ihren Umgebungen finden Sie unter Datenextraktion konfigurieren.
Datenextraktionsprozess
- Der Datenextraktionsagent veranlasst das Extraktionstool, die Extraktionstabellenkonfigurationen aus der Produktionsdatenbank auszuführen und zu lesen. Der Status jeder gültigen Tabellenkonfiguration wird geprüft, um zu ermitteln, welche Tabellen eine Datenextraktion benötigen. Wenn die Sicherungsdatenbank inaktiv oder falsch konfiguriert ist, zeigt das Extraktionstool vor Beginn des Datenextraktionsprozesses eine Warnung an.Hinweise:
- Wenn Sie das Extraktionstool zum ersten Mal ausführen und die Warnung angezeigt wird, überprüfen Sie Ihre Backup-Datenbankkonfiguration und führen Sie das Extraktionstool erneut aus. Andernfalls warten Sie einige Zeit, bis das Datenextraktionstool eine Verbindung zur Backup-Datenbank herstellt.
- Die Datenextraktion wird verzögert, wenn sich die Sicherungsdatenbank im Wartungs-oder Wiedergabemodus befindet.
Bei der ersten Ausführung des Agenten umfasst die Abfrage alle Datensätze, die seit den letzten n Tagen geändert wurden. Dabei wird n durch das angegebene Attribut 'FirstRunExtractInDays' angegeben. Jedes Mal, wenn eine Abfrage danach ausgeführt wird, betrachtet der Extraktionsagent die Startzeit als die Endzeit ab der letzten Ausführung des Extraktionstools für die Abfrage. Die Endzeit wird als aktuelle Uhrzeit minus einer Stunde berechnet. Das Intervall von einer Stunde stellt sicher, dass alle Daten, die gerade extrahiert werden, in die Backupdatenbank kopiert werden. Das 1-Stunden-Intervall stellt außerdem sicher, dass alle Daten in die Sicherungsdatenbank geladen werden und dieses Tool keine Last für das aktuelle Datensegment darstellt.Hinweis: Der Agent verwendet standardmäßig das 1-Stunden-Zeitintervall, sofern es nicht durch einen Wert > 1 in der Eigenschaftyfs.yfs.coc.dataextract.fetch.maxhoursoldüberschrieben wird. Sie können den Wert auch mit der Eigenschaftyfs.yfs.coc.dataextract.fetch.maxminsoldauf 1 Stunde reduzieren. - Das Extraktionstool bildet dann Abfragen auf Basis der Tabellenkonfiguration.
- Das Extraktionstool stellt eine Verbindung zur Backup-Produktionsdatenbank her und führt die SQL-Abfrage für die Datenbank aus, um die Daten abzurufen, die den Abfrageergebnissen entsprechen. Das Datenextraktionstool extrahiert nur Daten aus der Backup-Transaktionsdatenbank und nicht aus der primären Produktionsdatenbank. Durch die Extraktion der Daten aus der Backupdatenbank beeinträchtigt der Extraktionsprozess die Leistung der Primärdatenbank nicht.
Das Extraktionstool extrahiert Daten zwischen der Start-und Endzeit für den Extraktionsprozess. Diese Zeiten basieren auf der Zeitmarke der letzten Änderung des letzten extrahierten Datensatzes während des vorigen Extraktionsprozesses.
Wenn die Extraktion zu viele Daten umfasst, werden die Daten möglicherweise in separaten Jobs mit unterschiedlichen Start- und Endzeitbereichen extrahiert. Für jede Tabellenkonfiguration überprüft das Extraktionstool die entsprechende Datenmenge, die extrahiert werden soll. Dann erstellt der Agent die Anzahl der Jobs, die zum Extrahieren der Daten erforderlich sind.
- Das Extraktionstool schreibt die Abfrageergebnisse in Ausgabedateien im CSV-Format und schließt jede Datei in eine komprimierte Datei (.zip) ein. Jede Ausgabedatei hat denselben Namen wie die entsprechende komprimierte Datei zum Übertragen der Daten. Die Dateinamen richten sich nach der folgenden Namenskonvention:
- taskID__tableName__extractQueryStart_extractQueryEnd_jobNumber_of_totalNumberOfJobs.csv
- taskID
- Die ID der Aufgabe.
- tableName
- Der Name der Datenbanktabelle.
- extractQueryStart
- Die Zeitmarke für den Start des Extraktionsprozesses.
- extractQueryEnd
- Die Zeitmarke für den Abschluss des Extraktionsprozesses.
- jobNumber_of_totalNumberOfJobs
- Die fortlaufende Nummer des Datenextraktionsjobs im Verhältnis zur Gesamtzahl der Datenextraktionsjobs.
- Das Extraktionstool sendet die komprimierten Dateien in einem Stream an Ihren Dateiübertragungsserver. Die Datei wird in einer IBM Sterling Order Management System-Umgebung nicht in das Dateisystem geschrieben. Wenn der letzte Job verarbeitet wird, prüft der Agent, ob die Dateiübertragung für alle Dateien aller Jobs für jede ausgeführte Tabellenkonfiguration ausgeführt wird. Wenn die Übertragungen abgeschlossen sind, erstellt der Agent für jede Tabellenkonfiguration eine .DONE-Datei mit null Byte und überträgt sie.
Format der Ausgabedatei
Die Ausgabe der einzelnen Datenextraktionsjobs wird in CSV-Dateien geschrieben.- Durch Kommas getrennte Werte jeder zu extrahierenden Spalte in derselben Reihenfolge, wie sie im Konfigurationsmanagementservice definiert ist
- Keine Kopfzeile von Spaltennamen
- Jeder Wert wird in Anführungszeichen eingeschlossen. Tatsächlich in einem Wert enthaltene Anführungszeichen werden durch ein weiteres Anführungszeichen mit Escapezeichen dargestellt.
- Jeder Wert, der ein Zeilenvorschubzeichen enthält, beispielsweise '-remove all', wird entfernt.
Beispielausführungsszenario
Es wird eine Extraktion zur Ausführung bei den folgenden Bedingungen und konfigurierten Einstellungen konfiguriert (mit 6/24/2016 als aktuellem Datum):- Die Häufigkeit der Task 'OrderExt' und der Datenbanktabelle YFS_ORDER_HEADER ist alle 24 Stunden. Die Datenextraktion erfolgt jeden Tag gegen 8:00h.
- Zwischen 7:00h am Vortag und 7:00h am aktuellen Tag sind 24.000 Datensätze vorhanden.
- Die interne Speicherberechnung beschränkt den Extraktionsprozess auf 7.000 Datensätze gleichzeitig.
Die generierten Ausgabedateien ähneln den folgenden Dateien. Jede Datei enthält die Zeitmarke des Extraktionsprozesses innerhalb des Dateinamens.
| # | Dateiname | Zeilen |
|---|---|---|
| 1 | OrderExt__YFS_ORDER_HEADER_20160623050000_20160623070000_1_of_4.zip | 7000 |
| 2 | OrderExt__YFS_ORDER_HEADER_20160623050000_20160623070000_2_of_4.zip | 7000 |
| 3 | OrderExt__YFS_ORDER_HEADER_20160623050000_20160623070000_3_of_4.zip | 7000 |
| 4 | OrderExt__YFS_ORDER_HEADER_20160623050000_20160623070000_4_of_4.zip | 3000 |
| 5 | OrderExt__YFS_ORDER_HEADER_20160623050000_20160623070000.DONE |
Wenn eine oder mehrere Dateien für eine bestimmte Tabelle nicht extrahiert oder in den konfigurierten Dateispeicherservice übertragen werden, während andere Dateien erfolgreich extrahiert oder übertragen werden, wird die gesamte Tabellenextraktion erneut verarbeitet. Die erfolgreich extrahierten und übertragenen Dateien werden erneut extrahiert und übertragen.
Beispiel: Wenn bei diesem Beispielextraktionsszenario die Jobs 1 und 4 fehlgeschlagen sind und 2, 3 und 5 erfolgreich waren, wird der gesamte Prozess wiederholt. Bei der erneuten Prozessausführung werden die Dateien für alle fünf Jobs extrahiert und übertragen, wobei die Dateien für die Jobs 2, 3 und 5 erneut übertragen werden.
Datenextraktionsjobs bereinigen
Wenn Sie die Datenextraktion umfangreich verwenden, wird die Tabelle mit Datenextraktionsjobs schnell gefüllt. Die Daten in dieser Tabelle sind nützlich, um fehlgeschlagene Extraktionen, die in der Vergangenheit aufgetreten sind, zu sichten. Daher wird das Löschen von Daten aus der unmittelbaren Vergangenheit nicht empfohlen. Ein Großteil der Daten, die alt sind, muss jedoch aus der Haupttabelle bereinigt werden, um die Leistung von Abfragen für diese Tabelle zu verbessern.
Um die Tabelle zu bereinigen, bevor Sie die Datenextraktionsjobs starten, können Sie die Anzahl Tage angeben, für die die Datensätze aus der Tabelle gelöscht werden müssen, indem Sie die Eigenschaft yfs.yfs.coc.dataextract.jobpurge.leadDays festlegen.
Diese Eigenschaft ist standardmäßig nicht festgelegt, d. h., die Jobdatensätze werden nicht standardmäßig bereinigt. Der Wert für diese Eigenschaft muss größer als 120 Tage sein.
Wenn diese Eigenschaft auf einen Wert kleiner-gleich 120 gesetzt ist, wird ein Fehler ausgelöst. Datensätze für Tage bis zu 120 Tage können nicht gelöscht werden. Wenn der Bereinigungsprozess aus irgendeinem Grund fehlschlägt, wird der Datenextraktionsprozess weiterhin mit seiner primären Task zum Extrahieren von Daten fortgesetzt.