Optimierung
Geschwindigkeit¶
Es gibt im Wesentlichen drei Grundsätze:
- Hardware spielt eine entscheidende Rolle bei der Importgeschwindigkeit.
- SSD-Speicher sind wesentlich schneller als herkömmliche Festplatten.
- Ein Import ohne Referenzierung ist schneller als ein Update vorhandener Datensätze.
Import-Modus des Servers¶
Die CortexEngine kann beim Starten in den Import-Modus geschaltet werden, um den Datenimport zu beschleunigen.
- Die zu importierenden Daten werden eingelesen, ohne die Verwaltungsstrukturen anzulegen.
-
Erst nach dem eigentlichen Datenimport wird die CortexEngine beendet, erneut gestartet und reorganisiert, um diese Strukturen aufzubauen.
Das ist sinnvoll, wenn über den Erstimport erhebliche Datenmengen und danach nur noch ergänzende Informationen importiert werden.
Ablauf Import-Modus¶
- beenden Sie die laufende CortexEngine
- starten Sie die CortexEngine manuell mit dem Parameter
-m
- führen Sie den Import durch
- beenden Sie die CortexEngine nach dem Import
- starten Sie die CortexEngine regulär
- führen Sie eine Reorganisation per Remote-Admin aus
Hinweis
- Der manuelle Start der CortexEngine erfolgt im Terminal.
- Unter Windows führen Sie hierfür die Anwendung
cmd.exe
aus und starten dann die CortexEngine:ctxserver64.exe -m
Reorganisation per Remote Admin¶
- starten Sie den Remote Admin
-
klicken Sie auf Normalization
Jetzt ist kein Arbeiten innerhalb der CortexEngine möglich, da die Verwaltungsstrukturen aufgebaut oder korrigiert werden.
Tipp
Wenn Ihr Datenbestand zum Erstimport und regelmäßig wiederkehrend aus umfangreichen Datensätzen besteht (mehrere hundert Millionen oder Milliarden), stehen wir Ihnen gerne über unseren Kundensupport für Ihre Bedürfnisse zur Verfügung.
Filterfunktion¶
Innerhalb einer Import-Konfiguration ist es möglich, einen Filter zu konfigurieren, der nur den Import bestimmter Datensätze erlaubt. Ungültige Datensätze werden von vornherein ausgeschlossen und nicht übersprungen.
Innerhalb der ImportSection wird hierfür nur ein weiterer Parameter ergänzt, über den der Filter festgelegt wird.
<ImportSection datensatztyp="Pers">
<FilterFunktion>
getChar('P_id')!=''
</FilterFunktion>
<Referenz>PersID</Referenz>
<Feld>PersID=getChar('P_id')</Feld>
<Feld>Vor=getChar('Vorname')</Feld>
<Feld>Nam=getChar('Name')</Feld>
</ImportSection>
- alle Datensätze aus, für die aus dem Quellsystem keine Datensatz-ID vorliegt, werden ausgeschlossen.
- Nur wenn die Rückgabe der Filterfunktion Wahr ergibt, wird der Datensatz importiert.
Auch eine Kombination mehrerer Funktionen ist möglich.
<ImportSection datensatztyp="Pers">
<FilterFunktion>
AND(getChar('P_id')!='',getChar('Name')!='')
</FilterFunktion>
<Referenz>PersID</Referenz>
<Feld>PersID=getChar('P_id')</Feld>
<Feld>Vor=getChar('Vorname')</Feld>
<Feld>Nam=getChar('Name')</Feld>
</ImportSection>
Bildung eines Hash-Wertes¶
Als Ergänzung des Referenz-Importes - also der Aktualisierung vorhandener Daten - ist die Nutzung eines Hash-Feldes möglich. Der Implex unterstützt beim Import von CSV-Dateien die Bildung eines Hash-Wertes über den Datensatz und schreibt diesen Hash-Wert in ein separates Feld. Erfolgt ein erneuter Import, wird vor der Referenz-Suche der Hashwert in der CortexEngine gesucht.
- Wird er gefunden, liegt keine Änderung vor.
- Wird er nicht gefunden, greift die Referenz und ein vorhandener Datensatz wird aktualisiert, oder ein neuer Datensatz angelegt.
Um diese Funktion zu nutzen, ist eine Ergänzung der Importkonfiguration im Block ImportSection
und die Angabe eines zusätzlichen Feldes notwendig.
<ImportSection datensatztyp="MyDS">
<HashFilter>hashfld</HashFilter>
<Referenz>myRefFl</Referenz>
<Feld>myField1=getChar('field1')</Feld>
<Feld>myField2=getChar('field2')</Feld>
<Feld>myFieldX=getChar('...')</Feld>
</ImportSection>
Der Hash-Wert wird in diesem Beispiel im Feld hashfld
abgelegt und bei einem erneuten Import damit verglichen. Alle weiteren Konfigurationen für weitere Felder bleiben so bestehen, wie sie sind.
Es ist nicht notwendig, dass für den Hash-Wert eine weitere Zeile mit einer Import-Konfiguration angelegt wird.
Delta-Import¶
Der Delta-Import ermöglicht die automatische Bearbeitung nicht-geänderter Datensätze.
Dafür führt der Implex die DeltaListe
mit, in der nach Abarbeitung der Quelldatei nur noch die Datensätze vermerkt sind, die keine Aktualisierung erfahren haben. Diese restlichen Datensätze (DeltaListe
) können nach vier unterschiedlichen Modi abgearbeitet werden.
Einstellungen der DeltaListe
¶
Einstellung | Aktion | Beschreibung |
---|---|---|
c | clear | alle Werte, außer den aktuellen Inhalten der Referenzfelder ab dem heutigen Datum auf leer setzen |
l | löschen | unwiderrufliches Löschen des kompletten Datensatzes |
a | archivieren | Archivieren nach Art des Uniplex |
w | wiederherstellbar Löschen | wiederherstellbares Löschen nach Art des Uniplex |
<?xml version="1.0" encoding="UTF-8"?>
<CtxImport>
<Global>
<LoginIP>127.0.0.1</LoginIP>
<LoginPort>29000</LoginPort>
<LoginUser>import-user</LoginUser>
<LoginPW>userpasswd</LoginPW>
<ImportModus>u</ImportModus>
<DeltaListe>l</DeltaListe>
</Global>
<ReaderModul typ="csv">
<Dateiname>import-file.csv</Dateiname>
<FeldTrenner>,</FeldTrenner>
<FeldBegrenzer>"</FeldBegrenzer>
<WdhlTrenner>,</WdhlTrenner>
<SpaltenModus>HEADER</SpaltenModus>
<Charset>ISO-8859-1</Charset>
</ReaderModul>
<ImportSection datensatztyp="Pers">
<Referenz>Name</Referenz>
<Feld>Name=LastName</Feld>
<Feld>Vor=FirstName</Feld>
</ImportSection>
</CtxImport>
- vorhandene Datensätze werden anhand der Referenz aktualisiert
- nicht aktualisierte Datensätze werden unwiderruflich gelöscht.
Hinweis
Die DeltaListe
nutzt ausschließlich die Information des angegebenen Referenzfeldes. Der Datensatztyp wird nicht berücksichtigt.
Wird das Referenzfeld in unterschiedlichen Datensatztypen verwendet, werden alle Datensätze gelöscht, die nicht zu dem konfigurierten Typ in der ImportSection
gehören.
Delta-Import für Wiederholfelder¶
Auch Wiederholfelder können per Delta-Import aktualisiert werden. Das führt dazu, dass Wiederholfelder gelöscht werden, wenn sie nicht mehr in der Quelle vorhanden sind.
<WiederholGruppe start="Hobbies">
<Feld deltaliste='d'>PeHob = getChar(Hobby)</Feld>
</WiederholGruppe>
- Die Inhalte des Hobby-Felds einer Person werden aus einer XML-Datei gelesen.
- Wenn ein Hobby bereits in der CortexEngine gespeichert ist, aber nicht mehr in der Quelle vorhanden ist, wird das entsprechende Feld entfernt.
Warnung
Die Kombination vom Parameter deltaliste
und der Angabe einer Referenz, sowie die Verwendung der DeltaListe
in mehreren Feldern einer Wiederholfeldgruppe kann zu unerwarteten Ergebnissen führen und sollte vor der endgültigen Verwendung ausreichend getestet werden.