Autor Thema: Replikation, RDBMS, Cloudscape alias Apache.DERBY, SWT Clients,  (Gelesen 2244 mal)

Marinero Atlántico

  • Gast
Hi,

denke schon eine Weile darüber nach, wie man Replikation in RDBMS programmieren kann. Für mich viel wichtiger ist die Möglichkeit der Replikation User <---> Server. Denn das ermöglicht dem User mit organisationsweiten Daten zu arbeiten, ohne dass er irgendwie mit einem Netzwerk verbunden ist.

Ich ahne schon seit geraumer Zeit, dass dies mit den neuen schlanken RDBMS geht (wie Cloudscape, dass IBM nun an Apache verschenkt hat und dann Derby heisst).

Cloudscape ist ähnlich wie HSQLDB (oder so ähnlich) so klein, dass es auf dem Client als jar in eine Java Anwendung gepackt werden kann. Es gibt dann also eine Art RDBMS per User.

Wenn man selbst ein RDBMS Schema erstellt, kann es nicht so schwierig sein, dass so zu machen, dass eine Replizierung wirklich einfach ist.
Bedingung: Jeder Datensatz in jeder Tabelle hat immer eine eindeutige ID, was nicht schwierig ist da moderne RDBMS das automatisch erzeugen. Ausserdem ist das sowieso best practice für Datenbankdesign. Zumindest wiederholen das die von mir quasi-religiös verehrten Gavin King / Andreas Bauer in "Hibernate in Action" quasi gebetsmühlenartig.

Pro Datensatz müsste dann ausserdem ein lastEdited Feld geben.

Der Client initiiert immer die Replizierung und zwar als pull-push.
Der Client hat Zeit/Datum der letzten Replizierung mit dem Server in der Datenbank oder sonstwo gespeichert.
Der Client hält eine Liste der Namen der zur replizierenden Tabellen. Und zwar in einer bestimmten Reihenfolge, um nicht gegen irgendwelche Referentielle Integritäts Constraints zu verstossen. 
Der Client sendet und empfängt immer die Datensätze, die nach dem Zeitpunkt der letzten Replizierung geändert worden sind.
Für die auf den Server gepushten Datensätze müsste in der Server-Haupt-Datenbank eine neue eindeutige ID pro Datensatz erzeugt werden und dann an den Client zurückgesendet werden.

Senden-Empfangen zwischen Client-Server kann sinnvollerweise über Webservices oder sonstwie laufen. Nicht so das Problem.   

hier ist ein Interview von einem Kollegen von Ed.  ::)
http://www-106.ibm.com/developerworks/db2/library/techarticle/dm-0410prial/

Interessant finde ich den Satz:
Zitat
I mentioned that IBM Workplace uses Cloudscape on the client side for automatic replication back to the server.

Ein paar Kollegen von mir waren letztens bei einer IBM Veranstaltung zu Lotus Workplace. Die behaupteten das wäre dort z.Zt. so gelöst, dass zu Beginn einer Connection Client - Server sämtliche Dokumente vom Server zum Client gesendet werden. Das ist ja wohl keine Replikation. Vielleicht haben die sich verhört oder IBM hat das für dieses Produkt im - meiner Meinung nach - Beta-Stadium noch nicht implementiert.

Technisch möglich dürfte es sein. Oder?
« Letzte Änderung: 20.10.04 - 18:09:22 von Marinero Atlántico »

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Hallo Axel!

Das ist ein interessantes Problem, dass du hier aufwirfst. Also ich denke, dass es eher schwierig ist, eine universelle Replikation bei relationalen Datenbanken hinzubekommen, vor allem aufgrund von referentiellen Integritätsproblemen wie du ja bereits festgestellt hast. Ungeheuer problematisch wird es auch mit Replizierkonflikten die ja in Notes elegant durch Antwortdokumente abgebildet werden, was aber in einer relationalen Datenbank schwierig wird. Ich denke, genausowenig wie man mit Notes eine relationale Datenbank nachzustellen versuchen sollte, sollte man mit einer relationalen Datenbank Notes nachbilden.

Grüße

Ralf
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Marinero Atlántico

  • Gast
Hi Ralf,

ich meine das relativ ernst. Es geht mir mehr um eine per Anwendung Replikation als um eine globale Lösung. Darum sollen sich IBM und Apache kümmern.

Ein weiteres Problem sind gleichzeitige Replikations-Inserts von verschiedenen Clients. Das lässt sich aber so lösen, dass das auf dem Server ein Messaging System zwischengeschaltet wird, das die Client->Server-Push-Replikationen nacheinander durchführt.

Lotus Workplace will ja genau das: die lokale Datenhaltung in Cloudscape/Derby.
Ich bin nur laut am Denken.
Muss irgendwann die Zeit und Ruhe finden, dass mal für eine mini-Anwendung durchzucoden.

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Hi Axel!

Das wird sicher heikel, aber wie gesagt, wenn dann muss wie du schon gesagt hast die IBM mit einem vernünftigen Tool dazu rauskommen, denn sonst wird das so ein Riesenaufwand. Und das nicht nur bei der Ersterstellung des Tools sondern vor allem bei der laufenden Wartung. Da du ja dann bei jeder kleinen Datenbankumstellung darauf achten musst ob die Replizierung noch funktioniert.


Grüße

Ralf
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Marinero Atlántico

  • Gast
@Ralf,

ich sehe das nicht als einen Riesenaufwand an:
1. Sollte sich das Datenbankschema relativ schnell im Entwicklungsprozess stabilisieren und es ändert sich nicht soooo oft.
2. Kann man über xml-Binding die Information über die Datenbankstruktur im xml, das ausgetauscht wird, halten. Der Adapter für die xml-(De-)Serialisierung auf beiden Seiten ist dann dumm und macht nur, was im xml steht.
3. Voraussetzung ist jedoch, das auf den Clients die Datenbankstruktur synchron mit dem Server ist.
Da braucht es natürlich geeignete update-Verfahren. Diese Technologie ist aber entweder über Eclipse Workplace oder Java Webstart von Sun schon meiner Meinung nach doppelt vorhanden.

Ich habe inzwischen starke Zweifel, ob dieses "Tools-[zensiert]" von IBM wirklich das Leben grundsätzlich einfacher macht. 
Zitat
With each new release, WebSphere Studio is becoming easier for Domino developers to use, with the addition of technologies like JavaServer Faces (JSF), Service Data Objects (SDO), and Enterprise Generation Language (EGL).
von: http://www-306.ibm.com/software/swnews/swnews.nsf/n/jmae5xnhn9?opendocument
Hey. Das einzige was ich davon schon mal ausprobiert habe ist JSF und ich finde die JSF Tools in WSAD 5.12 brauchbar aber noch entwicklungsfähig.
Der spricht aber von "Domino-Entwicklern". Für nicht-Java Entwickler ist das imho die Happy-Happy-Land Aussage des Jahres. Zumindest aus Entwicklersicht.
Ich find z.B. auch das Deployment von EJBs mit WSAD absolut ok. Nur finde ich es eben mit XDoclets in JBoss noch einfacher.  ;D

IBM benutzt selber openSource für die Fortentwicklung bestimmter Building Blocks ihrer Infrastruktur:
- in WSAD sind massig openSource jars aus ant, junit, struts, log4j und und und
- Eclipse (u.a. auch Basis von WSAD und Lotus Workplace Client)
- Derby

Wenn IBM das macht, vielleicht bringt mir das auch was.

Gruß Axel
 
« Letzte Änderung: 22.10.04 - 10:34:37 von Marinero Atlántico »

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz