Zum Inhalt

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

  1. beenden Sie die laufende CortexEngine
  2. starten Sie die CortexEngine manuell mit dem Parameter -m
  3. führen Sie den Import durch
  4. beenden Sie die CortexEngine nach dem Import
  5. starten Sie die CortexEngine regulär
  6. 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

  1. starten Sie den Remote Admin
  2. 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.

Beispiel: Filter zum Ausschluss von Datensätzen
<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.

Kombination mehrerer Funktionen
<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.

Hash Wert - Ergänzug
  <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
Beispiel: Konfiguration einer Delta-Liste
<?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.

Beispiel: Löschen von Wiederholfeldern
<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.