Das Notes Forum

Domino 9 und frühere Versionen => ND6: Administration & Userprobleme => Thema gestartet von: MrMagoo am 27.04.05 - 18:11:35

Titel: Grundsätzliche Frage zur DocumentUniqueID und Speicherkonflikten
Beitrag von: MrMagoo am 27.04.05 - 18:11:35
Tach zusammen,

also mal eine Grundsätzliche Frage zur DocumentUniqueID und zu Speicherkonflikten. Wir haben zwei Speicherkonflikte in einer Datenbank, aber ich kann diesen kein Original Dokument zuordnen. Frage 1 hat das Speicherkonfliktdokument und das Original Dokument die gleiche DocumentUniqueID oder wird eine neue vergeben? Frage2 gibt es sonst noch eine Möglichkeit das Original Dok zu finden??

Danke für Eure Hilfe!!!
Titel: Re: Grundsätzliche Frage zur DocumentUniqueID und Speicherkonflikten
Beitrag von: Semeaphoros am 27.04.05 - 18:42:01
DocumentUniqueIDs sind eindeutig (solange niemand an den Dokumenten "rumspielt"), heisst auch die Konfliktdokumente haben eigene, neue UNIDs.

Ein Konfliktdokument ist technisch ein Antwortdokument, die UNID des dazugehörigen Hauptdokumentes findet sich im Feld $Ref
Titel: Re: Grundsätzliche Frage zur DocumentUniqueID und Speicherkonflikten
Beitrag von: koehlerbv am 27.04.05 - 21:04:45
Man kann durchaus eine Ansicht aufbauen, die Antwort-Dokumente (in Deinem Fall eben auch Konfliktdokumente) anzeigt, auch wenn das Hauptdokument dazu nicht vorhanden sein muss (ob ausgeblendet oder nicht mehr vorhanden).
Ich tippe allerdings mal, dass das Hauptdokument in der Tonne gelandet ist.

DocumentUniqueIDs sind eindeutig (solange niemand an den Dokumenten "rumspielt"), heisst auch die Konfliktdokumente haben eigene, neue UNIDs.
Um eine bereits vorhandene UNID doppelt zu vergeben, reicht "spielen" glücklicherweise nicht  :)

Bernhard
Titel: Re: Grundsätzliche Frage zur DocumentUniqueID und Speicherkonflikten
Beitrag von: Semeaphoros am 27.04.05 - 22:44:49
Stimmt, man muss schon heftig spielen, aber unmöglich ist es nicht. Dass allerdings eine doppelte UNID vom System vergeben würde, ist so gut wie auszuschliessen.
Titel: Re: Grundsätzliche Frage zur DocumentUniqueID und Speicherkonflikten
Beitrag von: koehlerbv am 27.04.05 - 22:58:48
Die "Bordmittel" (LotusScript Notes / Domino classes) verhindern es jedenfalls wirkungsvoll, auch mittels der API sehe ich keinen Weg (ies sei denn, ich hätte einen Bug übersehen, dann sowas wäre ein Bug).

Bernhard
Titel: Re: Grundsätzliche Frage zur DocumentUniqueID und Speicherkonflikten
Beitrag von: Semeaphoros am 27.04.05 - 23:06:03
Mit der API geht es definitiv. Ich meinte, es funktioniert auch bei der NotesDocument-Class, die UNID dort ist R/W und kann gesetzt werden, kann aber sein, dass das unterdessen abgefangen ist ??
Titel: Re: Grundsätzliche Frage zur DocumentUniqueID und Speicherkonflikten
Beitrag von: TMC am 27.04.05 - 23:14:59
oder via DXL, ist im Tag <noteinfo> enthalten.

In R5 hatte ich damit auch mal experimentiert, ich glaube es war die von Jens erwähnte Property der N.DocumentClass.
Titel: Re: Grundsätzliche Frage zur DocumentUniqueID und Speicherkonflikten
Beitrag von: koehlerbv am 27.04.05 - 23:19:21
Das wird abgefangen, Jens. Auch wenn natürlich zu warnen ist vor einer Verwendung der Property im Write-Modus, da man wissen muss, welche UNIDs überhaupt zulässig sind in einer DB. Nicht nur der Access auf ein Dokument mit einer ungültigen UNID (zum Beispiel aus einer anderen DB), sondern auch der Zugriff auf eine Dokument via UNID, die es nicht mehr gibt (weil Dokument in der Tonne) führt schon zu Fehlemeldungen.
Egal wie: Vor einer UNID-Manipulation muss strengstens gewarnt werden. Ich sehe auch keinen Grund, warum das via LS (API okay - für die Hartgesottenen, die dann ja in der Regel auch wissen, was sie tun) überhaupt möglich gemacht wurde.

Bernhard

PS: @Matthias - ist das nicht die NoteID ? Und wenn man die (oder auch die UNID) nutzt, wird m.E. das bestehende Doc mit der entsprechen NoteID / UNID gekickt. Gegen doppelte wehrt sich Notes.
Titel: Re: Grundsätzliche Frage zur DocumentUniqueID und Speicherkonflikten
Beitrag von: TMC am 27.04.05 - 23:42:50
Achso, es geht hier um *doppelte* UNIDs, hatte nur halb gelesen.

PS: @Matthias - ist das nicht die NoteID ? Und wenn man die (oder auch die UNID) nutzt, wird m.E. das bestehende Doc mit der entsprechen NoteID / UNID gekickt. Gegen doppelte wehrt sich Notes.

Nein, Bernhard, UNID. Schau Dir mal einen DXL-Export an. Würde ja auch überhaupt keinen Sinn haben, wenn da nicht auch die UNID enthalten wäre.
Allerdings wird das Import-Verhalten dann über DocumentImportOption Property gesteuert. Wird nicht unbedingt "gekickt", steht aber alles in der Help beschrieben (create, ignore, replace, or update).
Titel: Re: Grundsätzliche Frage zur DocumentUniqueID und Speicherkonflikten
Beitrag von: Semeaphoros am 27.04.05 - 23:46:11
Ok, dann wurde das zugemacht. Ich hab in 4.5 oder 4.6 damit experimentiert und dort konnte ich mit LS doppelte UNIDs anlegen, kann allerdings sein, dass das ein Bug in der betreffenden Unterversion war. Natürlich ist das dann so nicht in Produktion gegangen ..... Es gibt übrigens - ganz selten - Gründe, die UNID zu manipulieren, will da aber nicht näher drauf eingehen, da das  - wie Bernhard richtig anmerkt - eine ganz, ganz heikle Angelegenheit ist.
Titel: Re: Grundsätzliche Frage zur DocumentUniqueID und Speicherkonflikten
Beitrag von: koehlerbv am 27.04.05 - 23:53:29
Danke, Matthias, für die DXL-Erläuterung, und an Jens für die Bestätigung "heikle Angelegenheit" - wir denken da ganz sicher identisch.

Matthias: Ich habe das (weil ich mit UNIDs "fast nie" - siehe Jens und meine Hinweise - "spiele") noch nicht probiert, aber ich erwarte aus anderen Erfahrungen folgende Reaktionen:
- Create: Das klappt, wenn die UNID gültig - ein weitres Feld ! - (und nicht doppelt) ist
- Ignore: "Notes, vergiss meinen Vorschlag - mach selber eine !"
- Replace: "Hau wech die bestehende Note und nimm meine !"
- Update: "Hasso, such die Note ! Wenn Du sie findest (!), dann bügel' meinen Stuff d'rüber !"

Ein hochinteressantes Thema mit seltenen praktischen Bezügen (fast immer gilt: "Notes rules". FAST immer ...  ;D

Bernhard
Titel: Re: Grundsätzliche Frage zur DocumentUniqueID und Speicherkonflikten
Beitrag von: Marinero Atlántico am 27.04.05 - 23:56:12
Ich sehe vor allem keinen Sinn darin.
Btw. gilt es in den meisten Fällen in RDBMS als best practice einen autogenerierten BigInt als Primary Key eines Tupels (= Zeile) zu nehmen. Also so ähnlich wie Universal ID.
Eine UniversalID soll den Zweck haben, ein Dokument irgendwie wiederzufinden.
Welchen weiteren Zweck soll sie noch haben?
Titel: Re: Grundsätzliche Frage zur DocumentUniqueID und Speicherkonflikten
Beitrag von: TMC am 28.04.05 - 00:03:26
@Bernhard:
genau so (oder so ähnlich) wird dies über die erwähnte Property der NotesDXLImporter gecovert.

Ich hatte vor ca. 1 Jahr mal folgende Aufgabe:
Eine DB, mehrere 1000 Dokumente mit vielen Doc-Links auf Docs der selben DB.
Nun sollten Docs ersetzt werden. Die neuen Docs hatte ich "in der Hand", mussten nur noch rein. Einfach so rauswerfen und neues Doc rein: dann geht das mit dem Doc-Link ins leere. Da spielte ich dann mit dem Gedanken, das alte Doc zu löschen, die UNID vom neuen Doc zu manipulieren und dann reinzuspielen.
Bin aber dann davon wieder abgekommen, und hab dann einfach nur die Items rübergeschaufelt. Was aber u.U. gewisse "Techniken" erfordert (siehe KB - Einträge).
Titel: Re: Grundsätzliche Frage zur DocumentUniqueID und Speicherkonflikten
Beitrag von: koehlerbv am 28.04.05 - 00:08:49
@Matthias:
Schweissabwisch: Ich habe meine anderen Erfahrungen jetzt einfach auf DXL übertragen, und wie es kaum zu erwarten war, läuft es da identisch  :)

@Marinero:
Und was nützt das im praktischen und gerade besprochenen Umfeld, Axel ?
Für
ABC GmbH, 1230 Testhausen, Goethestrasse 4
bekommst Du einen separaten Primary Key wie auch für
ABC AG, 1234 Testhausen / Gewerbegebiet, Goethe-Strasse 4-25

Es sei denn, Du greifst schon bei der Erstellung ein - aber das ist ja "nur" der anwenderfreundliche Vorgriff auf das, um was es Jan geht.

Bernhard
Titel: Re: Grundsätzliche Frage zur DocumentUniqueID und Speicherkonflikten
Beitrag von: TMC am 28.04.05 - 00:09:49
@Axel:
Siehe oben meine damalige Problematik wegen Doc-Links. Ich kenne jetzt keine einfache Möglichkeit, alle Doc-Links einer DB einfach zu aktualisieren, da die Referenz ja in den Docs steht. Selbst wenn die Doc-Links selbst einfach umzubiegen wären: möchte man einen Verweis auf ein anderes Doc umbiegen, so muss man u.U. über mehrere 1000 Dokumente gehen. Nur wegen dem Doc-Link.
Und das halte ich jetzt für aufwändiger in Notes als in RDBMS "mal schnell" durch eine Table zu wandern um diese Ersetzung vorzunehmen.
Titel: Re: Grundsätzliche Frage zur DocumentUniqueID und Speicherkonflikten
Beitrag von: Semeaphoros am 28.04.05 - 01:29:47
Richtig, Matthias, dankt der "Unstrukturiertheit" von Notes ist es nicht wirklich möglich, Doclinks zu 100% zu finden. Bei den starren Strukturen von relationalen DBs ist das deutlich einfacher.

Axel: Leider steckt in der UNID mehr drin als nur ein eindeutiger Key. In der API-Doku und im exzellenten Buch von Normunds LS to C-API ( http://www.ls2capi.com ) ist das genauer erklärt.
Titel: Re: Grundsätzliche Frage zur DocumentUniqueID und Speicherkonflikten
Beitrag von: Marinero Atlántico am 28.04.05 - 06:57:07
Ich hab an die anderen Bereiche, wo Domino die UniversalID benutzt nicht gedacht.
Ja klar.
Lotus hätte für solche weiteren, mehr Anwendungs-Service-orientierten (oh was ein Wort ::) ) Features besser eine zweite, universell eindeutige ID verwenden sollen, isn't it? Ist ja einfach nur ein Algorythmus. 
Zitat
@Marinero:
Und was nützt das im praktischen und gerade besprochenen Umfeld, Axel ?
Nur ein Vergleich auf ein anderes System.
Zitat
ABC GmbH, 1230 Testhausen, Goethestrasse 4
bekommst Du einen separaten Primary Key wie auch für
ABC AG, 1234 Testhausen / Gewerbegebiet, Goethe-Strasse 4-25
Nicht ganz klar, ob du das meinst, aber man kann auf Datenbank-Definitionsebene "natürliche" Eindeutigkeits-Constraints einbauen.

Unter der Annahme, das Namen von Firmen eindeutig sind, kann man das auf der Ebene der Datenbank abfangen. (S. unique Constraint)


Falls das jemand diskutieren will, können wir das in einen neuen Thread umpacken.
Vorschlag:
Code
CREATE TABLE Customer (	
					ID BIGINT  NOT NULL  GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1, NO CACHE ), 
					name VARCHAR(50),
					plz char(5),
					city varchar(50),
					street varchar (80)
);
	
	CREATE UNIQUE INDEX "i_Cust_Name" ON Customer (name);
	ALTER TABLE Customer ADD CONSTRAINT "PKEY_USER" PRIMARY KEY ("ID");

Btw. sehe ich starke Parallelen zu der oben geführte Debatte zu UniversalID.
Leute, die das als Best Practice vorschlagen, sagen dass der Primary Key 1 und nur genau 1 Aufgabe hat und genau dafür optimiert werden soll.
Aufgabe: Eindeutigkeit.
Eigenschaften: Performance (als Datentyp ist LongInt für selects, joins, etc. am schnellsten).

Andere Aufgaben packt man nicht da rein.
Dafür nimmt man andere Elemente.
Beispiel: Für die "natürliche" Eindeutigkeit belegt man sogenannte "natural keys" mit einem Unique Constraint.
Titel: Re: Grundsätzliche Frage zur DocumentUniqueID und Speicherkonflikten
Beitrag von: Semeaphoros am 28.04.05 - 08:17:09
Genau darin liegt ein Problem, dass die UNID Mehrfachnutzen aufweist, ich will das aber nicht als Vorwurf an die Architekten des Systems sehen, das ist historisch gewachsen und als man das System entwarf, waren die Kenntnisse noch nicht so weit gefestigt. Man darf dabei nicht vergessen, dass es für diese Art von Datenhaltung keine Tradition vor Notes gibt, im Gegensatz zur relationalen Datenhaltung.
Titel: Re: Grundsätzliche Frage zur DocumentUniqueID und Speicherkonflikten
Beitrag von: MrMagoo am 28.04.05 - 08:51:57
Ui das sind ja viele antworten, danke erstmal
Titel: Re: Grundsätzliche Frage zur DocumentUniqueID und Speicherkonflikten
Beitrag von: MrMagoo am 28.04.05 - 09:22:10
so jetzt sieht die welt schon etwas klarer aus, aber leider nur etwas. Das $ref Feld des ersten Konfliktes verweißt auf den zweiten Konflikt. Aber das $ref Feld des zweiten Konfliktes verweißt auf sich selber. Wie ist das möglich?   
Titel: Re: Grundsätzliche Frage zur DocumentUniqueID und Speicherkonflikten
Beitrag von: Semeaphoros am 28.04.05 - 09:24:11
Ungewöhnlich, kann mich nicht erinnern, schonmal eine Selbstreferenz im Antwortdok gesehen zu haben.