Datenlager-IDs

Jedes Datenlager bekommt eine eindeutige Datenlager-ID zugewiesen. Diese Nummer muss zwischen 1 und 255 liegen. Somit können maximal 255 eigene Datenlager eingerichtet werden.

Das Datenlager Allgemein hat generell die Datenlager-ID 0, ist generell vorhanden und muss nicht definiert werden. Es müssen also nur alle zusätzlichen Datenlager definiert werden.

Die Datenlager-ID des Datenlagers eines Objekts ist in der Objektnummer enthalten.

Die Objektnummer ist (wie in früheren regisafe-Versionen auch) wie folgt aufgebaut:

Objekt-ID

Server-ID

32 Bit

32 Bit

Die Verwendung der Objekt-ID bleibt unverändert (fortlaufende Nummer pro Server-ID).

Die Server-ID wird bei mehreren Datenlagern wie folgt verwendet:

Server-ID

32 Bit

Konfigurierte Server-ID

ungenutzt

Datenlager-ID

Bit 1-16 (16 Bit)

Bit 17-24 (8 Bit)

Bit 25-32 (8 Bit)

Die 8 ungenutzten Bit sind für spätere Erweiterungen reserviert, z.B. für eine jahresabhängige Speicherung von Objekten.

Die in der IQServer.ini definierte Server-ID sollte zukünftig auf 16 Bit beschränkt und zwischen 1000 und 65000 liegen. Die ID 52428 darf jedoch nicht verwendet werden, da ihr Hexadezimalwert mit einer regisafe-internen Programmfunktion belegt ist.

Sobald in der IQServer.ini Datenlager definiert sind, werden keine höheren Server-IDs zugelassen.

Befinden sich in der Datenbank bereits Objekte mit einer höheren Server-ID, dann kann dies dazu führen, dass die Bits 25-32 mit einem Teil der Server-ID belegt sind.
Ob eine Server-ID ungewollt eine Datenlager-ID enthält, kann man ermitteln, indem man diese durch 16777216 teilt. Lässt man vom Ergebnis die Nachkommastellen weg, hat man die Datenlager-ID, die eigentlich 0 sein muss.
Eine solche bereits belegte ID darf dann in der Installation nicht als Datenlager-ID verwendet werden.
Bei vorhandenen Installationen sind daher alle in der Datenbank vorkommenden Server-IDs entsprechend zu prüfen und die ungewollt belegten Datenlager-IDs von der Definition von Datenlagern auszuschließen.
Die Datenbank arbeitet so, dass alle nicht definierten Datenlager-IDs wie die Datenlager-ID 0 behandelt werden und somit entsprechende ältere Objekte korrekt aus dem Standard-Datenlager Allgemein ausgelesen werden.