ich versuche die OID-Thematik ein bisschen besser zu verstehen, und habe dazu einige praktische Fragen.
Wann soll genau ein OID-Präfix bestellt werden? Soll der Postfix dann zufällig erstellt werden?
Wenn man z.B. ein neues Objekt erstellt, gibt man dann diesem Objekt selbständig eine zufällig erstellte OID? Oder bekommt man diese von einer “zentralen” Stelle (z.B. dem Geometer)?
Grundsätzlich gilt es zu unterscheiden, ob man in der gegebenen Anwendung stabile OID benötigt oder evtl. nicht. In sehr vielen Fällen sind stabile OID sinnvoll und richtig.
Dann gibt es bei INTERLIS verschiedene OID-Mechanismen. Meiner persönlichen (!) Meinung nach sollte man nicht mit STANDARDOID arbeiten, sondern mit UUID (Gen 4).
Dazu wird im gewünschten TOPIC die Deklaration OID AS INTERLIS.UUIDOID; eingefügt. Auf der DB kann man sich dann einer Standardfunktionalität zum Generieren der UUID bedienen.
Wenn stabile OID verwendet werden, ist dafür zu sorgen, dass diese beim Datenexport als TID serialisiert werden und vom Empfängersystem wieder entsprechend importiert werden. Dies ist mittels einer Konvention zu gewährleisten.
Die Verwendung eines OID-Präfix für den OID-Typ STANDARDOID ist nicht im Detail vorgeschrieben. Man kann z. B. ein Präfix pro Gewerk (Abwasser, Trinkwasser, Gas usw.) pro Operat (Gemeinde, Verband, Versorgung) lösen. Damit ist für den Erzeuger bei jedem Objekt klar, aus welcher Quelle es stammt. Die OID-Bestellung auf interlis.ch stellt nur sicher, dass es einen OID-Präfix nur genau 1x gibt. Es gibt aber keine reverse lookup-Möglichkeit! D. h. man kann aufgrund des OID-Präfix nicht irgendwo nachschauen, wer den Präfix bestellt hat.
Der 8-stellige Postfix ist der Teil der OID, welcher durch dasjenige System vergeben werden kann, welches das Objekt erzeugt. Üblicherweise wird hier eine Laufnummer verwendet, weil das die einfachste Möglichkeit ist, um Duplikate zu verhindern.
Zweck der OID ist, ein Objekt von der Entstehung bis zum Untergang identifizieren zu können. INTERLIS bietet den Mechanismus der inkrementellen Datenlieferung, was bedeutet, dass man ein bereits zu einem früheren Zeitpunkt transferiertes Objekt über die OID identifizieren und dessen Eigenschaften aktualisieren kann (update).
Die OID ist kein sprechender Schlüssel. Wie @peterstaub erwähnt hat, wird heute bei neueren Modellen fast ausschliesslich eine UUID als OID verwendet, also sowas:
126a075f-7e6a-41ed-8dd4-49fdf207bd60
Da bezweifle ich, dass man diese Werte von externer Stelle vorgeschrieben bekommen möchte, ausser es handelt sich um eine systematische Zusammmenführung von Daten, die über einen anderen Schlüssel, wie z. B. eine eindeutige Bezeichnung, identifiziert werden können.