Lade...
 

Distributed Hash-Table

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 immer

mn > 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 immer

mn > 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

sein muss.

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