Distributed Hash-Table
Sehr große Hash-Tables können auf mehrere PCs verteilt im Speicher gehalten werden.
Die Funktionen zum Speichern / Wiederauffinden eines Eintrags laufen in einem separaten Prozess (CXDOSR.EXE) und werden über DCOM aufgerufen. Außerdem wird CXDOSR.DLL
benötigt (Routinen für das Marshalling).Eine weitere Voraussetzung sind Registry-Einträge für den DCOM-Server. Aufruf
cxdosr -RegServer
erzeugt Einträge für die COM-Klasse DistributedHashTbl und das Interface IHashTable, und mit
cxdosr -UnregServer
werden diese Einträge wieder entfernt.
Die Programme zum Entladen und Laden der Datenbank können mit Parameterface="Courier"> -EparameterFile verlangen, dass die Hash-Table von einem oder mehreren externen DCOM-Servern verwaltet wird; d.h. die speicherresidente Hashtable kann
auf beliebig viele Maschinen verteilt werden.Entladen und Checksumme I (Programme cxuosr.exe und cxcosr.exe -1)
Compare="cxbosr,UnloadCompare"
PC1=m1, PC2=m2, ..., PCn=mn
File=fileName
In Zeile 1 wird dem Hashtbl-Server mitgeteilt, mit welcher Vergleichsfunktion ein
Tabelleneintrag identifiziert wird.
Die folgende Zeile beschreibt die Verteilung der Teil-Tabellen auf verschiedene Server:
mn ist die Gesamtgröße der Tabelle, m1 ... mn sind
kumulativ zu verstehen, d.h. es muss immermn > m1 + m2 + ... + mn-1
mn-1 > m1 + m2 + ... + mn-2
. . .
m2 > m1
sein.
Laden, Checksumme II und Cross-Referenz der Objekte (Programme cxlosr.exe, cxcosr.exe -2, cxxosr.exe)
Compare="cxbosr,LoadCompare"
PC1=m1, PC2=m2, ..., PCn=mn
File=fileName
In Zeile 1 wird dem Hashtbl-Server mitgeteilt, mit welcher Vergleichsfunktion ein
Tabelleneintrag identifiziert wird.
Die folgende Zeile beschreibt die Verteilung der Teil-Tabellen auf verschiedene Server:
mn ist die Gesamtgröße der Tabelle, m1 ... mn sind
kumulativ zu verstehen, d.h. es muss immermn > m1 + m2 + ... + mn-1
mn-1 > m1 + m2 + ... + mn-2
. . .
m2 > m1
sein.
Beispiel für ein Parameterfile:
Compare="cxbosr,UnloadCompare"
Ref=32000000, Hs=53999989
File="e:\\ClassiX\\Projects\\tmpfile.dmp"
Wenn die beim Laden einer neuen Datenbank entstehende Hash-Tabelle
(GATEWAY.DMP) auf mehreren Teildateien verteilt ist, kann man diese zu einem File zusammenführen (z.B. für den Aufruf der Funktion href="de_CyberEnterprise_ce02355">GetObjectInNewDatabase).
Programm cxcosr.exe wird mit folgenden Parametern aufgerufen:
Cxcosr ntotal Gateway1.dmp n1 Gateway2.dmp n2 ... Gatewaym.dmp nm
wobei
ntotal = n1 + n2 +
... + nm
Das Ausgabefile heißt Gateway.con.
Das gleiche trifft für den Aufbau einer Cross-Referenz zu. Hier benötigt die Funktion GetObjectsReferringTo eine Brücke vom abgefragten Objekt zum korrespondierenden CX_XREF-Objekt. Verteilte
Gateway-Files können deshalb auch mit cxxosr.exe zusammengefasst werden:Cxxosr ntotal objects1.xrf n1 objects2.xrf n2 ... objectsm.xrf nm