Lade...
 

Referenzierung von Datenbanken und Objekten

Datenbankpfade

Der Pfad zu einer Datenbank kann unterschiedlich allgemeingültig spezifizert werden. Siehe auch "Managing ObjectStore" → "Managing ObjectStore on Windows" (Kapitel 8) → "Specifying File Database Path Names" (Seite 358).

Lokale Pfade

Jeder lokal gültige Pfad ist auch für eine Datenbank gültig. Pfade können beispielsweise relativ zum aktuellen Verzeichnis angegeben werden. Häufig ist es in ClassiX möglich, Umgebungsvariablen in den Pfad zu integrieren, die ausgewertet werden.

Beispiele

Y:\classix\Evaluate\projects\Evaluate.cxd ..\projects\Evaluate.cxd CX_ROOTDIR\projects\Evaluate.cxd

Pfade auf anderen Rechnern

Darüber hinaus kann spezifiziert werden, auf welchem Rechner sich eine Datenbank befindet. Hierfür wird dem (absoluten) Pfad eine Angabe zum finden des Hosts gefolgt zu einem Doppelpunkt vorangestellt. Der Host kann dabei über seinen Namen, eine IPv4-Adresse oder aber eine IPv6-Adresse spezifiziert werden. IPv6-Adressen müssen, IPv4-Adressen und Host-Namen können in eckigen Klammern gefasst werden.

Beispiele

dbserver:C:\databases\Evaluate.cxd [dbserver]:C:\databases\Evaluate.cxd 192.168.1.100:C:\databases\Evaluate.cxd [192.168.1.100]:C:\databases\Evaluate.cxd [fd00:19d:808f:1::154]:C:\databases\Evaluate.cxd linuxdbserver:/usr/databases/Evaluate.cxd

Objekt-Referenzen

Peristent

Um ein Objekt in der Datenbank aufzufinden, wird typischerweise zu diesem – ausgehend von den REP-Collections – per Referenz navigiert.

Objekte können jedoch auch absolut lokalisiert werden. Dies ist bspw. nützlich, wenn auf ein Objekt keine Referenzen zeigen oder das Navigieren zu zeitaufwändig ist.

Objekt-Referenzen können sich durch Migration und Kompaktifizierung der Datenbank verändern.

Objekt-Referenzen können durch CX_DB_UTILITY:‌:GetLocation erfragt und über CX_DB_UTILITY:‌:GrabObject wieder aufgelöst werden. Das Format ist dabei das folgende:

<format | db_path | seg_num | cluster_num | hex_offset | size>
Eintrag Bedeutung
format Format der Referenz. Für gewöhnlich 'd'.
db_path Pfad der Datenbank. Typischerweise absolut mit Host-Name
seg_num Segment-Nummer (dezimal)
cluster_num Cluster-Nummer (dezimal)
hex_offset Offset des Objekts im Cluster (hexadezimal)
size Größe der Granularität des Mappings (hexadezimal). Typischerweise 10000 = 64 Ki

Siehe auch "Managing ObjectStore" Seite 303f.

In ClassiX können dabei auch verkürzte Objekt-Referenzen angegeben werden, welche das Format und den Datenbank-Pfad durch einen Bezeichner (= LayerNr - 1) ersetzen.

Beispiel

<0|10|0|9a54|1000> <d|dbserver:C:\databases\Evaluate.cxd|10|0|9a54|1000>

Transient

Transiente Objekte existieren nur für die aktuelle Sitzung und sind daher weniger stark geordnet. Auch für sie existieren eine textuelle Objekt-Referenzen. Sie bestehen dabei aus einer öffnenden geschweiften Klammer, einer hexadezimalen Zahl und einer sich schließenden geschweiften Klammer.

Achtung: Bei der Angabe einer transienten Adresse in GrabObject wird der angegebene Speicherbereich als Objekt vom Typ CX_CLASS interpretiert. Das System kann nicht sicher stellen, dass sich an der angegeben Stelle auch wirklich ein Objekt befindet und die Angabe einer beliebigen Speicheradresse kann zu Abstürzen führen.

Beispiel

{000000000B925F60}