Domino 9 und frühere Versionen > ND6: Entwicklung
Wie synchronisiere ich Dokumente aus verschiedenen DBs am besten?
Mark³:
Ich möchte für jede Datenbank auf unseren Servern automatisch ein Dokument erzeugen und hier manuell zusätzliche Infos reinschreiben. Nach der Anlage der Dokumente sollen diese dann automatisch mit dem tatsächlichen Datenbankbestand aktuell gehalten werden. Es handelt sich also um ein Problem der Synchronisation, also Quelle sind die tatsächlich vorhandenen Datenbanken und Ziel sind meine Dokumente. Löschungen von Datenbanken sollen zu einem Status 'gelöscht' in meinen Dokumenten führen.
Nun suche ich einen optimalen Algorithmus für die Synchronisation. Wir haben ähnliche DBs im Feld, die alle Dokumente in einen Update-Ordner legen. Dann werden alle Dokumente, die in Quelle und Ziel über einen Schlüssel zu finden sind aktualisiert und aus dem Folder entfernt. Alle Datensätze, die in der Quelle, nicht aber im Ziel vorhanden sind werden hinzugefügt und alle die im Update-Ordner liegenbleiben weil sie keine Übereinstimmung hatten müssen also Löschungen sein.
Ist die PutAllInFolder-Geschichte bei einigen Tausend Dokumenten der beste Ansatz oder wie könnte man es besser machen?
Ich habe schon einen Blick auf DWFSync geworfen, das ist aber zu unübersichtlich (oder mächtig) um da brauchbare Teile rauszuschneiden.
Mark³:
0 Antworten bei 23x angeschaut könnte aussagen, dass mein Ansatz so schlecht nicht ist.
Nachdem ich alle Docs in einen Folder packe mache ich
--- Code: ---folder.AutoUpdate=False
folder.refresh
--- Ende Code ---
und nach jedem abgearbeiteten Dokument
--- Code: ---doc.RemoveFromFolder
folder.refresh
--- Ende Code ---
Ist das sinnvoll und bringt Performance oder ist das eher O0 und tut das gleiche wie Autoupdate = true ?
Naja, schaun mer mal am Montag
eknori:
ich habe mir das Thema 22 x angeschaut ;D
was willst du denn aus DWFSYNC "rausschneiden" ?
Du könntest es einfach konfigurieren und für deine Zwecke "nutzen" ...
Mark³:
DWFSync synchronisiert Dokumente aus verschiedenen DBs, ich synchronisiere Eigenschaften der Klasse NotesDBDirectory mit meinen Dokumenten. Den Datenbankkatalog möchte und kann ich aufgrund unserer Infrastruktur hier nicht verwenden.
Zuerst wollte ich mir das Prinzip der Synchronisation aus DWFSync rauskopieren aber das ist so objektmässig programmiert das mir das zu lange dauerte da durchzusteigen (was nicht heißen soll, dass es nicht gut programmiert ist).
Meine jetzige Lösung (ist 30% fertig) ist dagegen viel einfacher, ich traue aber diesem Folder-hin und hergeschiebe nicht so, aber das scheint doch zu klappen.
koehlerbv:
Der 23. Anschauer war wohl ich ... Und ich sehe immer noch nicht durch, was Du da treibst.
--- Zitat ---also Quelle sind die tatsächlich vorhandenen Datenbanken und Ziel sind meine Dokumente. ...
Wir haben ähnliche DBs im Feld, die alle Dokumente in einen Update-Ordner legen.
...
Alle Datensätze, die in der Quelle, nicht aber im Ziel vorhanden sind werden hinzugefügt und alle die im Update-Ordner liegenbleiben weil sie keine Übereinstimmung hatten müssen also Löschungen sein.
--- Ende Zitat ---
Jetzt heisst es
--- Zitat von: mt69clp am 28.10.05 - 16:43:38 ---ich synchronisiere Eigenschaften der Klasse NotesDBDirectory mit meinen Dokumenten.
--- Ende Zitat ---
NotesDBDirectory hat nun gerade zwei Eigenschaften. Dokumente synchronisieren, NotesDBDirectory-Properties mit Dokumenten synchronisieren, DBs legen Dokumente in Folder ...
Auf jeden Fall ist das dauernde Update des Folders (wozu überhaupt ? Aber irgendwie ist es ja eh undurchsichtig formuliert) nicht gerade performant.
Jedoch stellt sich die Frage: Muss die Routine überhaupt superperformant sein ? Soviele DBs habt Ihr ja bestimmt nicht (ein paar Tausend sind auch Pippifax), und die Abarbeitung ist sicherlich sowieso nicht zeitkritisch, also egal, ob nun 90 Sekunden oder 18,3 Sekunden ...
Bernhard
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln