Datenbanksynchronisation Master Thesis 2006 1007_MASIT Autoren: Angelo Lo Iudice, Isidoro Lo Iudice Examinator: Bernhard Wyss Co-Examinator: Marc Löwenthal Brugg-Windisch, 31. März 2009 Zusammenfassung Aufgabe Unsere Arbeit beschäftigt sich mit der Datenbanksynchronisation. Die Hauptaufgabe besteht darin, Daten von einer Datenbank auf dem Client wie zum Beispiel PDA, Notebook oder Desktop mit der Hauptdatenbank auf dem Server zu synchronisieren. Dabei müssen die Daten in beider Richtung ausgeglichen werden. Das heisst, die Synchronisation muss bidirektional sein. Als Austauschdaten sollen Koordinaten (Punkten) aus dem Vermessungswesen verwendet werden. Für die Datenverwaltung kommt ein einfaches und zweckmässiges Datenbank-Design zum Zuge. Die Daten werden mit Hilfe unseres Java Prototyps GUI „survey“ erfasst, gelöscht und geändert. Der Prototyp GUI ist für diverse Datenbankmanagementsysteme einsetzbar und kann später mit Berechnungsfunktionen ausgebaut werden. Diese Funktionen sind nicht Bestandteil dieser Arbeit. Systemwahl Drei Systeme haben wir evaluiert. Bei der Auswahl und Aufsetzung dieser Systeme haben wir uns folgende Bedingungen festgelegt: Es soll ein homogenes und ein heterogenes System dabei sein. Beim homogenen System soll der Hersteller alle nötigen Komponenten wie die lokale Datenbank, die Hauptdatenbank und das Synchronisationswerkzeug liefern. Beim heterogenen System sollen die verschiedenen Komponenten aus verschiedenen Herstellern in einem Verbund miteinander arbeiten können. Unsere Recherchen führten zu den drei Synchronisierungssystemen: Oracle Database Lite (homogenes System), Funambol (heterogenes System) und Microsoft Synchronization Services for ADO.NET (eingeschränktes heterogenes System). Die Microsoft Lösung verlangt MS SQL Server Compact 3.5 als Client-Datenbank. Als Back-End-Datenbank kann eine beliebige Datenbank eingesetzt werden, für die ein ADO.NET Provider existiert. System I Das erste System ist ein reines Oracle Produkt, das auf Windows, Linux und Unix Version laufen kann. Oracle Database Lite ist eine Middleware „Mobile Server“, die mit einer Oracle Back-End-Datanbank kommuniziert. Auf dem Client wird eine kleine „footprint“ Oracle Datenbank installiert. Oracle Database Lite ist für unseren Einsatz eine „out of the box“Lösung. Es sind keine Programmieraufgaben notwendig. Aber die Konfiguration beziehungsweise die Installation kann durchaus viel Zeit in Anspruch nehmen, denn die Dokumentation von Oracle ist sehr umfangreich. Oracle Database Lite beinhaltet auch ein Deployment- und ein Package-Management. Mit dem Package-Management kann unser Prototyp GUI zu einem Software-Paket verarbeitet werden. Das Software-Paket kann nun via Deployment-Management auf die Clients sehr einfach verteilt und installiert werden. Diese lassen sich mit dem webbasierten Management-Tool verwalten. Das Besondere an Oracle Database Lite ist, dass der Mobile Client nicht auf der Middleware „Mobile Server“ installiert werden darf und zudem kann pro Gerät nur ein Benutzer zugewiesen werden. Die Synchronisation beim Oracle Database Lite wird über drei Warteschlangen (IN-, OUTund ERROR-Queue) geregelt. Der Mobile Client schickt seine modifizierten Datensätze an den Mobile Server, die in der IN-Queue ankommen. Anschliessend nimmt er von der OUTQueue vorhandene Datensätze in Empfang. Der Message Generator and Processor (MGP), ist das Bindeglied zwischen den verschiedenen Queues und der Hauptdatenbank. Bei Konflikten legt der MGP die Daten in der ERROR-Queue ab. Der Administrator muss später entscheiden, wie die Konflikte gelöst werden sollen. Ausserdem kann zwischen eine manuelle und eine automatische Synchronisation gewählt werden. II System II Funambol ist eine OpenSource Lösung, die in Java programmiert ist. Die Applikation stützt sich auf die SyncML Technologie ab, um die Daten zwischen zwei Anwendungsgeräte auszutauschen. Wie auch Oracle Database Lite ist der Funambol Server als Windows und Linux Version erhältlich. Als Basis des Funambol DS Servers dient entweder der Applikations-Server Tomcat oder der Applikations-Server JBoss. Im Installationsbundle, der von der Website gratis heruntergeladen werden kann, ist bereits Apache Tomcat enthalten. Um Komplikationen zu vermeiden, empfehlen wir den Installationsbundle zu verwenden und nicht die einzelnen Komponenten des Bundles manuell und getrennt zu installieren. Bei der Synchronisation werden vier Komponenten durchlaufen; Sync Adaptor, Pipeline Manager, Sync Engine und Sync Source. Der Sync Adaptor nimmt die XML-basierte SyncML-Nachrichten des Clients entgegen, wandelt sie um und übergibt sie dem Pipeline Manager und/oder der umgekehrte Vorgang, um die Daten zum Client zu senden. Der Pipeline Manager besteht aus zwei Teilen: In- und Out-Pipeline. Diese dienen zur Filterung und Protokollierung der Daten. Die Sync Engine ist das Herz des Funambol DS Servers und befasst sich mit den Funktionen des SyncML Protokolls. Sie wickelt drei Phasen ab: Initialisierung, Datenaustausch und Finalisierung. Der Sync Source bildet die Schnittstelle zur Back-End-Datenbank und greift auf die von einem mobilen Gerät zu synchronisierenden Daten zu. Die Firma Funambol stellt mehrere Clients (sogenannte PIM-Clients) zur Verfügung, um die Daten wie Kalender-, E-Mailsdaten, Dateien zu synchronisieren. Zu unserem Bedauern gibt es kein Client, um die Daten aus einem beliebigen Datenbankschema zu aktualisieren. Funambol hat aber ein API (Application Programming Interface), mit dem wir einen eigenen Synchronisierungs-Client und Connector programmieren können. Auch hier gibt es Dokumente, die uns bei der Programmierung unterstützt haben. Der SynchronisierungsClient kommuniziert zwischen der lokalen Datenbank und dem Funambol-Server. Der Connector baut die Verbindung zwischen dem Funambol-Server und der Haupdatenbank auf. Der Connector entspricht dem oben erwähnten Sync Source. Zurzeit unterstützt Funambol die drei Datenbankmanagement-Systeme MySQL, HSQLDB und PostgreSQL. In unserer Umgebung haben wir MySQL als Back-End-Datenbank und HSQLDB als lokale Datenbank verwendet. Um die korrekte Synchronisation zu ermöglichen, mussten wir unser Datenbankschema erweitern. Zwei weitere Spalten „fmbstatus“ und „fmbtimestamp“ sind in unsere Tabelle „tabkoord“ hinzugefügt worden. Dank dieser Spalten lassen sich der Zeitstempel und die Statusart der manipulierten Datensätze eruieren, die an der Synchronisation teilnehmen müssen. Es ist wichtig, dass in der Hauptdatenbank keine Datensätze gelöscht werden, sondern dass sie als gelöscht markiert sind (Statusart = D). Das Funambol Administration Tool dient zur Verwaltung von Servereigenschaften, Benutzern, Geräten und Module. Geübte Administratoren können die mit dem Administration Tool eingestellten Parameter auch direkt in den XML-basierten Dateien anpassen. Funambol erlaubt, dass ein Benutzer mehrere Geräte verwenden kann und/oder ein Gerät kann von mehreren Benutzern benutzt werden. Leider unterstützt Funambol nur die manuelle Synchronisation. System III Als letztes System haben wir Microsoft Synchronization Services for ADO.NET unter die Lupe genommen. Microsoft Synchronization Services for ADO.NET ist eine Komponente des Microsoft Sync Frameworks, die nur auf den Microsoft Betriebssystemen läuft und basiert auf die ADO.NET-Architektur. Das Framework unterstützt im Wesentlichen zwei Szenarien: offline- und Zusammenarbeits-Szenario. Das offline-Szenario deckt unsere Anforderungen III ab. Der Synchronisations-Client steht in Form eines API zur Verfügung. Wir haben uns mit Hilfe der Microsoft online-Dokumentation und Code-Beispiele (http://msdn.microsoft.com) das Wissen angeeignet, um den Synchronisations-Client zu entwickeln. Als lokale Datenbank muss der kostenlose MS SQL Server Compact 3.5 eingesetzt werden. Als Hauptdatenbank wird in unserem Fall MS SQL Server 2005 Express Edition verwendet. Grund für diesen Entscheid ist, dass für diese ebenfalls kostenlose Datenbank Version ein Verwaltungswerkzeug „Microsoft SQL Server Management Studio Express“ installiert werden kann, das uns erlaubt die Datenbank einfach zu verwalten. Als Back-End-Datenbank können beliebige Datenbanken verwendet werden, für die ein ADO.NET Provider zur Verfügung steht. Ähnlich wie bei Funambol müssen wir auch bei diesem System unser Datenbankschema anpassen. Unsere Tabelle „tabkoord“ muss mit vier zusätzlichen Spalten erweitert werden. Zudem benötigt der Microsoft Synchronization Services eine weitere Tabelle, die als Tombstone in unserem Fall „tabkoord_Tombstone“ bezeichnet wird. Diese Tabelle verwaltet die gelöschten Datensätze. Nebst diesen Anpassungen benötigen wir einen Trigger für die „tabkoord“ Tabelle in der Hauptdatenbank, die die gelöschten Datensätzen aus dieser Tabelle in ihre Tombstone-Tabelle einträgt. Dank dieser Datenbankmodifikation kann die Datenänderungsnachverfolgung (Change Tracking) gewährleistet werden. Zu sagen ist, dass beim Verwenden des MS SQL Server 2008 als Back-End-Datenbank das Schema nicht erweitert werden muss. MS SQL Server 2008 besitzt die Funktion „Change Tracking“, die aktiviert werden kann, um die Datenänderungsnachverfolgung automatisch zu verwalten. Wir wollten uns flexibel halten, deshalb setzten wir die aufwendigere Lösung um. Wegen MS SQL Server Compact 3.5 können wir unser Prototyp GUI „survey“ nicht einsetzen. Diese SQL Server Version unterstützt die Schnittstellen JDBC und ODBC nicht. Und die Java Programmiersprache, mit der wir unseren Prototyp GUI geschrieben haben, unterstützt seinerseits kein ADO.NET. Schliesslich blieb uns nicht anderes übrig als einen neuen Prototyp GUI in C# (CSharp) zu programmieren. Zudem haben wir beschlossen, den Synchronisierungs-Client und den neuen Prototyp GUI als eine Applikation zu entwickeln. Auch bei diesem System wird nur die manuelle Synchronisation unterstützt. Testumgebung, -phase und -resultat Wir haben uns dafür entschieden, die Test-Umgebung zu virtualisieren. Für die Virtualisierung verwenden wir die Software „ESX3i Update 2“ der Firma VMware. Sie kann gratis vom Internet heruntergeladen werden. Zu beachten ist, dass diese Software nicht auf allen Server installiert werden kann. Der Server „Dell PowerEdge 2900 III“ ist für diesen Zweck zum Einsatz gekommen. Jedes zu analysierende Testsystem haben wir auf einem eigenen virtuellen Rechner implementiert. Somit vermeiden wir, dass zwischen den Systemen irgendwelche betrieblichen Konflikte entstehen können. Als Betriebssystem setzen wir MS Windows 2003 (EN) ein. Datenbankserver und Synchronisations-Middleware sind auf derselben Maschine installiert, um die Computer-Landschaft übersichtlicher zu halten. In der realen Welt kann somit an Kosten eingespart werden, falls Software sich auf die gleichen Maschinen installieren lassen. Zu jedem System haben wir je zwei virtuelle Rechner mit MS Windows XP zugewiesen. Diese PCs dienen als Client, die wir während unseren Tests verwendet haben. Um die drei Synchronisierungssysteme zu testen, haben wir uns eine Testreihe mit acht Aufgaben (Fällen) ausgedacht. Pro System haben wir die Tests dreimal durchgespielt. Die Testergebnisse entsprachen unserer Vorstellung. Bei den Aufgaben 3 und 4 sind bei jedem System die Datenkonflikte aufgetreten. Jedes System verwaltet die Konflikte anders. Die übrigen Testfälle sind glimpflich durchgelaufen. Die offline-Fälle 7 und 8 machen nur bei einer automatischen Synchronisation Sinn. Aufgabe 8 entspricht bei einer manuellen Synchronisation der Aufgabe 6. IV Vorwort Im Juni 2008 haben wir gemeinsam eine Grundstücksvermessung für einen Bekannten durchgeführt. Nebst dem technischen Messinstrument verwendete Isidoro Lo Iudice auch ein Vermessungsprogramm für Berechnungen und Messkontrollen, das auf seinem alten Taschenrechner Hewlett Packard 48SX installiert ist. Dieses Programm wurde in den 90er Jahre von zwei Diplomanden an der damaligen Ingenieurschule beider Basel in Muttenz für kommerzielle Zwecke und als Hilfsmittel zum Studium entwickelt. Die Vermessungsstudenten konnten das Programm zu einem günstigen Preis während ihrem Studium von der Schule beziehen. Da der Taschenrechner zwischendurch Probleme beschaffte und Isidoro mit dem Gedanke spielte, ihn zu ersetzen, fragte er vorgängig an der heutigen Fachhochschule nach, ob eine neuere Version der Software gebe. Leider teilte man ihm mit, dass dieses Taschenrechner-Programm seit ein paar Jahren durch eine neue kostspielige Software für PCs ersetzt wurde. Diese Nachricht brachte uns zu der Idee, ein solches Programm für portable Geräte selber zu schreiben. Das Programm soll eine Datenbank besitzen, um die erfassten Daten zu speichern. Da auf jedes mobile Gerät eine eigene lokale Datenbank installiert werden muss, tauchte die Frage der zentralen Datenverwaltung auf. Dabei kamen wir zum Schluss, dass wir zur Lösung von redundanten Daten und Inkonsistenz zu all diesen lokalen Datenbanken eine Hauptdatenbank als Drehscheibe benötigen. Diese Hauptdatenbank steht nicht nur den Anwendern als zentraler Datenspeicherort und -austauschplattform, sondern auch Drittsysteme wie z. B. einem GIS-System (Geografisches Informations-System) zur Verfügung. Diese Überlegungen haben wir unserem Abteilungsleiter, Herrn Bernhard Wyss vorgetragen. Gemeinsam haben wir dann das Thema der Master Thesis erarbeitet. Als Thema kam die Datenbanksynchronisation heraus. Ein kleiner Informatikbestandteil wie die Datenbanksynchronisation gewinnt heutzutage durch den Einsatz von mobilen Geräten für die immer schnell wachsende Kommunikationsgesellschaft an Bedeutung. Während früher der Datenzugriff auf die Datenbankserver aus wirtschaftlichen und technologischen Aspekten stets vor Ort erfolgte (online) und den Alltag entsprach, neigt sich die derzeitige Gesellschaft dank diesen mobilen und raffinierten Geräten auf den offline-Modus zu, denn gerade dieser Modus erlaubt ihr Ortsunabhängigkeit und vermehrte Arbeitsflexibilität. Diejenigen Leute, die ihre Tätigkeit vor allem draussen errichten, sollten sich davon angesprochen fühlen. Damit das alles durchgeführt werden kann, muss der gewünschte Bestandteil des zentralen Datenbestandes (lokal) auf dem mobilen Gerät abgelegt sein. Bei dieser Arbeitsgattung dürfen wir aber eins nicht ausser Acht lassen, dass die Forderungen nach Verfügbarkeit, Datenkonsistenz und Performanz nicht gleichzeitig erreicht werden kann. Auf welche Forderungen mehr Gewicht gelegt wird, hängt von der bestehenden Arbeit jedes Unternehmens ab. Und entsprechend muss dann das Synchronisations- und/oder Replikationsverfahren für sie individuell erschafft werden. Unsere Master Thesis will sich mit dem Synchronisationsverfahren mindestens zweier Systeme befassen. Dabei wollen wir dieses Verfahren analysieren, installieren, testen und miteinander vergleichen. Die Datenbanksynchronisation bietet uns für die Master Thesis eine interessante und anspruchsvolle Arbeit an. Ausserdem waren wir in der Gruppe über das Thema sofort einig und Herr Wyss erklärte sich bereit, die Arbeit zu betreuen. V An dieser Stelle möchten wir uns beim Examinator Bernhard Wyss für seine Ratschläge betreffend der Arbeit und für seine Begleitung während der Arbeit bedanken. Ferner wollen wir uns auch bei Herrn Marc Löwenthal bedanken, der sich als Co-Examinator freundlicherweise zur Verfügung gestellt hat. Dem Sekretariat der Fachhochschule Nordwestschweiz, Frau Doris Senn bedanken wir uns für die Zustellung des FHNW-Logos. Diese Master Thesis möchten wir von ganzem Herzen unserem Vater widmen. Er legte grossen Wert auf Weiterbildung, wie ein Sprichwort besagt: „Man lernt nie aus“. Leider verstarb er, kurz bevor wir mit der Arbeit beginnen konnten. Zum Schluss möge uns die Leserin die Verwendung der rein männlichen Form in dieser Master Thesis verzeihen, aber aus Gründen der einfacheren Lesbarkeit wird im Folgenden auf die Erwähnung der weiblichen Form bewusst verzichtet, was die Stellung der weiblichen Personen aber in keiner Weise abwerten soll. Villmergen, den 31. März 2009 Angelo Lo Iudice Isidoro Lo Iudice VI Inhaltsverzeichnis 1 Einleitung.............................................................................1 2 Pflichtenheft ........................................................................2 2.1 2.2 2.3 2.4 Zielbestimmung ....................................................................2 2.1.1 Muss Kriterien.................................................................................................... 2 2.1.2 Kann Kriterien .................................................................................................... 3 Produkteinsatz ......................................................................3 2.2.1 Anwendungsbereiche ....................................................................................... 3 2.2.2 Zielgruppen ........................................................................................................ 3 2.2.3 Betriebsbedingungen........................................................................................ 4 Produktumgebung ................................................................4 2.3.1 Software.............................................................................................................. 4 2.3.2 Hardware ............................................................................................................ 4 2.3.3 Produktschnittstellen ........................................................................................ 4 Produktfunktionen ................................................................5 2.4.1 Datenbanksynchronisation .............................................................................. 5 2.4.2 Übersicht Use Cases (Datenbanksynchronisation) ....................................... 5 2.4.3 Beschreibungen mit Schablone Use Cases (Datenbanksynchronisation) . 6 2.4.4 Prototyp GUI....................................................................................................... 7 2.4.5 Übersicht Use Cases (Prototyp GUI) ............................................................... 8 2.4.6 Beschreibungen mit Schablone Use Cases (Prototyp GUI).......................... 8 2.5 Produktdaten....................................................................... 10 2.6 Produktleistungen .............................................................. 10 2.7 Benutzungsoberfläche ....................................................... 10 2.8 Qualitäts-Zielbestimmungen .............................................. 11 2.9 Globale Testszenarien und Testfälle ................................. 12 2.10 Entwicklungsumgebung..................................................... 13 2.10.1 Software............................................................................................................ 13 2.10.2 Hardware .......................................................................................................... 13 2.10.3 Entwicklungsschnittstellen ............................................................................ 13 VII 2.11 Ergänzungen ....................................................................... 13 3 Prototyp GUI ......................................................................14 3.1 OOA ..................................................................................... 14 3.1.1 Einleitung ......................................................................................................... 14 3.1.2 Klassendiagramme.......................................................................................... 14 3.1.3 Klassendiagramm GUI-Schicht ...................................................................... 14 3.1.4 Beschreibung GUI-Schicht ............................................................................. 15 3.1.5 Klassendiagramm Business-Schicht ............................................................ 15 3.1.6 Beschreibung Business-Schicht ................................................................... 15 3.1.7 Klassendiagramm Datenbank-Schicht.......................................................... 16 3.1.8 Beschreibung Datenbank-Schicht ................................................................. 16 3.1.9 Sequenzdiagramm........................................................................................... 17 3.1.10 Prototyp GUI..................................................................................................... 18 3.1.11 Testplan ............................................................................................................ 18 3.2 OOD ..................................................................................... 18 3.2.1 Einleitung ......................................................................................................... 18 3.2.2 Übersicht Use Cases (Prototyp GUI) ............................................................. 18 3.2.3 Beschreibungen mit Schablone Use Cases (Prototyp GUI)........................ 19 3.2.4 Gesamtübersicht Klassendiagramme ........................................................... 20 3.2.5 GUI Klassen...................................................................................................... 21 3.2.6 Business Klasse .............................................................................................. 23 3.2.7 Datenbank Klasse............................................................................................ 24 3.2.8 Sequenzdiagramm........................................................................................... 25 3.2.9 Programm......................................................................................................... 26 3.2.10 Test ................................................................................................................... 29 3.2.11 Installation GUI auf dem Rechner .................................................................. 29 4 Systemkonzept..................................................................30 4.1 Einleitung ............................................................................ 30 4.2 Vorgehen ............................................................................. 30 4.3 Systemeigenschaften ......................................................... 30 4.4 Zeitbedarf ............................................................................ 30 4.5 Infrastruktur ........................................................................ 31 4.5.1 Hardware .......................................................................................................... 31 VIII 4.5.2 Software............................................................................................................ 31 4.5.3 Lizenzfragen..................................................................................................... 31 5 Test-Umgebung.................................................................32 5.1 Einleitung ............................................................................ 32 5.2 Vorgehen ............................................................................. 32 5.3 Netzwerk .............................................................................. 33 5.4 Arbeitsgruppe ..................................................................... 34 5.5 Gesamtübersicht der Test-Umgebung .............................. 34 5.6 5.5.1 Netzplan............................................................................................................ 34 5.5.2 Auflistung der Testmaschinen ....................................................................... 35 Hardware und Softwarelizenzen ........................................ 35 6 System I .............................................................................36 6.1 Einleitung ............................................................................ 36 6.2 Aufbau ................................................................................. 36 6.2.1 Übersicht unserer Test-Umgebung ............................................................... 37 6.3 Funktion des Oracle Database Lites.................................. 37 6.4 Funktion der Synchronisation ........................................... 38 6.5 6.6 6.4.1 Manuelle Synchronisation .............................................................................. 39 6.4.2 Automatische Synchronisation...................................................................... 40 Installationsablauf des Systems I ...................................... 41 6.5.1 Installation auf dem Server............................................................................. 41 6.5.2 Einbindung unseres Software-Pakets (Prototyp GUI) im Server-Projekt .. 42 6.5.3 Verwaltung unseres Software Pakets „Mobile Survey“ .............................. 42 6.5.4 Installation auf dem Client.............................................................................. 43 Systemtest I......................................................................... 43 6.6.1 Ausgangslage .................................................................................................. 44 6.6.2 Testfälle ............................................................................................................ 46 6.6.3 Quintesenz der Testfälle beim System I........................................................ 71 7 System II ............................................................................72 7.1 Einleitung ............................................................................ 72 7.2 Aufbau ................................................................................. 72 IX 7.2.1 7.3 SyncML Technologie .......................................................... 73 7.3.1 7.4 7.5 7.6 7.7 7.8 7.9 Übersicht unserer Test-Umgebung ............................................................... 73 SyncML Protokoll ............................................................................................ 74 Funambol DS Server Architektur ....................................... 75 7.4.1 Sync Adaptor (Protocol Transport Mapper) ................................................. 76 7.4.2 Pipeline Manager ............................................................................................. 76 7.4.3 Sync Engine ..................................................................................................... 76 7.4.4 Sync Source ..................................................................................................... 77 Installationsablauf des Systems II ..................................... 77 7.5.1 Installation auf dem Server............................................................................. 77 7.5.2 Starten und Stoppen des Funambol DS Servers ......................................... 80 7.5.3 Installation auf dem Client.............................................................................. 81 Funambol Administration Tool .......................................... 81 7.6.1 Benutzerverwaltung ........................................................................................ 83 7.6.2 Geräteverwaltung ............................................................................................ 85 7.6.3 Principal Verwaltung ....................................................................................... 86 7.6.4 Modulverwaltung ............................................................................................. 90 Der Synchronisationsprozess............................................ 91 7.7.1 Phase Vorbereitung (Preparation) ................................................................. 93 7.7.2 Phase Synchronisation (Synchronization) ................................................... 93 7.7.3 Phase Beendigung (Finalization) ................................................................... 93 Entwicklungsumgebung Connector .................................. 94 7.8.1 Anforderung der Entwicklungsumgebung ................................................... 94 7.8.2 Erstellung des Connector-Projektes „acmeconnector“ .............................. 94 7.8.3 Die wichtigsten Projektdateien im Detail ...................................................... 96 7.8.4 Erstellen des Connector Pakets "acmeconnector" ................................... 105 7.8.5 Installation des Connector Pakets "acmeconnector" ............................... 106 Entwicklungsumgebung SyncML Client ......................... 107 7.9.1 Anforderung der Entwicklungsumgebung ................................................. 107 7.9.2 Erstellung des SyncML Client-Projektes „VermSyncClient“ .................... 107 7.9.3 Die wichtigsten Projektdateien im Detail .................................................... 108 7.9.4 Installation des SyncML Clients „VermSyncClient” .................................. 111 7.10 Systemtest II...................................................................... 111 7.10.1 Ausgangslage ................................................................................................ 111 X 7.10.2 Testfälle .......................................................................................................... 114 7.10.3 Quintesenz der Testfälle beim System II..................................................... 141 8 System III .........................................................................142 8.1 Einleitung .......................................................................... 142 8.2 Aufbau ............................................................................... 142 8.2.1 8.3 8.4 8.5 8.6 8.7 8.8 ADO.NET............................................................................ 143 8.3.1 Dataprovider................................................................................................... 144 8.3.2 DataSet ........................................................................................................... 144 Microsoft Sync Framework .............................................. 145 8.4.1 Übersicht Zusammenarbeitsszenario (collaboration) ............................... 145 8.4.2 Übersicht offline-Szenario (offline access)................................................. 146 Architektur des offline-Szenarios .................................... 147 8.5.1 Die Architektur-Komponenten des Sync Services..................................... 147 8.5.2 Synchronisierungsarten ............................................................................... 149 Installationsablauf des Systems III .................................. 150 8.6.1 Installation auf dem Server........................................................................... 150 8.6.2 Installation auf dem Client............................................................................ 150 Entwicklungsumgebung Synchronisierungs-Client....... 151 8.7.1 Anforderung der Entwicklungsumgebung ................................................. 151 8.7.2 C#-Projekt für den Synchronisations-Client erstellen ............................... 152 8.7.3 Klassendiagramme........................................................................................ 156 Prototyp GUI in C# ............................................................ 170 8.8.1 8.9 Übersicht unserer Test-Umgebung ............................................................. 142 Programm Prototyp GUI ............................................................................... 171 Systemtest III..................................................................... 172 8.9.1 Ausgangslage ................................................................................................ 172 8.9.2 Testfälle .......................................................................................................... 175 8.9.3 Quintesenz der Testfälle beim System III.................................................... 194 9 Datenbanken....................................................................195 9.1 Einleitung .......................................................................... 195 9.2 MS-Access......................................................................... 195 9.3 MySQL ............................................................................... 197 XI 9.4 HSQLDB............................................................................. 199 9.5 Oracle ................................................................................ 202 9.6 Oracle Database Lite......................................................... 203 9.7 Microsoft SQL Server 2005 Express Edition................... 205 9.8 Microsoft SQL Server 2005 Compact Edition ................. 211 10 Schlussdiskussion .........................................................212 10.1 Vergleichen der Systeme ................................................. 212 10.1.1 System I .......................................................................................................... 212 10.1.2 System II ......................................................................................................... 212 10.1.3 System III ........................................................................................................ 213 10.1.4 Übersicht der Systeme.................................................................................. 214 10.1.5 Beurteilung der Systeme .............................................................................. 216 10.2 Vergleich mit Pflichtenheft ............................................... 216 10.2.1 Zielbestimmung ............................................................................................. 217 10.2.2 Produktumgebung......................................................................................... 219 10.3 Zukunftsaussicht .............................................................. 220 10.3.1 Allgemein........................................................................................................ 220 10.3.2 System I .......................................................................................................... 220 10.3.3 System II ......................................................................................................... 220 10.3.4 System III ........................................................................................................ 220 10.3.5 Prototyp GUI................................................................................................... 220 10.4 Ehrlichkeitserklärung ....................................................... 221 11 Literaturverzeichnis ........................................................222 11.1 Literaturangaben für Bücher............................................ 222 11.2 Literaturangaben für Internetseiten................................. 222 12 Glossar.............................................................................223 13 Anhang.............................................................................226 13.1 Abbildungsverzeichnis..................................................... 226 13.2 Projektplan ........................................................................ 232 13.3 Arbeitsjournal Angelo Lo Iudice ...................................... 236 XII 13.4 Arbeitsjournal Isidoro Lo Iudice ...................................... 240 13.5 Sitzungsprotokolle............................................................ 245 13.5.1 Protokoll Nr. 01 / 08 ....................................................................................... 245 13.5.2 Protokoll Nr. 02 / 08 ....................................................................................... 246 13.5.3 Protokoll Nr. 01 / 09 ....................................................................................... 248 13.5.4 Protokoll Nr. 02 / 09 ....................................................................................... 250 XIII Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 1 Einleitung Im Rahmen der Master Thesis geht es um die Analyse, das Aufsetzen, das Testen und das Vergleichen der Datenbanksynchronisation von drei Systemen. Mit der Analyse wollen wir den Aufbau und Ablauf der Datenbanksynchronisation eruieren. Für die Testphasen sollen die Systeme aufgesetzt werden und lauffähig sein. Mit dem Testen wird das Verhalten der Synchronisation verfolgt. Und zum Schluss wollen wir die Verfahren miteinander vergleichen. Für die Bearbeitung der Thesis steht uns ein leistungsstarker Rechner als Werkzeug zur Verfügung. Auf diesem Rechner werden wir pro Synchronisierungssystem eine virtuelle Testumgebung aufsetzen. Für jede Testumgebung gibt es einen virtuellen Datenbankserver mit der Synchronisierungs-Software und zwei virtuelle Client-Maschinen. Jede ClientMaschine wird Remote von einem Laptop aus angesprochen. Die Diplomanden stellen ihre Laptops zur Verfügung. Die virtuellen Rechner werden mit der Software VMware erstellt. Für ein einfaches Handling der Datenabfrage und -erfassung soll uns ein Prototyp GUI zur Seite stehen, welcher wir zu Beginn entwickeln werden. Dieser Prototyp wird auf alle ClientMaschinen verteilt. Parallel zur Prototyp-Entwicklung wird die Testumgebung mit dem ersten Synchronisierungssystem bereits aufgebaut. Nachdem der Prototyp bereit steht, wird das erste System getestet und analysiert. Der Reihe nach werden wir die weiteren Systeme nach derselben Prozedur angehen, das heisst, Testumgebung mit der SynchronisierungsSoftware aufsetzen, Prototyp GUI auf den Client-Maschinen installieren und Testphase starten. Pro System rechnen wir mit einem Zeitbedarf von sieben Wochen. Nebst unserem Pflichtenheft wird uns ein Zeitplan beim Abwickeln der gesamten Thesis-Arbeit begleiten. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 1 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 2 Pflichtenheft Unsere Thesis befasst sich mit dem Thema der Datenbanksynchronisation. Wir benötigen für unsere Arbeit eine Hauptdatenbank (kurz HDB genannt) auf dem Server und lokale Datenbanken (auch LDB genannt) auf den mobilen Geräten, die wir selber erstellen werden. Die Datenbanken werden raumbezogene Daten enthalten. In den Datenbanken kommen folgende Attribute vor: Punktnummer, Y-Koordinate, X-Koordinate. Der Zugriff auf die lokalen Daten soll über eine grafische Oberfläche erfolgen. Dabei ist ein kleiner Prototyp GUI in Java-Sprache zu erstellen, welcher auf einem Laptop, PC oder sogar Handheld läuft. Ferner sind in unserer Thesis folgende Punkte zu berücksichtigen: • Bekannte raumbezogene Daten sollen einerseits aus der Datenbank abgefragt werden, andererseits sollen neue aufgenommene Daten in die Datenbank gespeichert werden. • Die Datenbankabfrage muss auch bei einer netzwerklosen Verbindung (offline) gewährleistet sein. Folglich muss auf dem Client eine zweite Datenbank existieren, die sich mit der Hauptdatenbank regelmässig synchronisiert. • Das Schwergewicht der Arbeit liegt in der Lösungssuche der Datensynchronisation zwischen den mobilen Geräten und der Back-End-Datenbank (Hauptdatenbank). Es sollen mindestens zwei, eventuell drei Evaluationen von verschiedenen Datenbankherstellern aufgebaut und durchgetestet werden. • Hersteller von Datenbanksynchronisations-Applikationen sind nicht vorgegeben. Die Auswahl steht somit frei. 2.1 Zielbestimmung 2.1.1 Muss Kriterien • Client: - mit grafischer Benutzungsoberfläche (Prototyp GUI) ausrüsten - lokale Datenbank (offline-Modus) installieren - automatische und manuelle Synchronisation • Middleware: - Bereitstellen von Eingangs- und Ausgangswarteschlange - Verbindung zur Hauptdatenbank - Verbindung zum Client - bidirektional • Datenbankserver: - Datenbanksoftware installieren - Hauptdatenbank mit Stammdaten • Prototyp GUI: - Der Benutzer kann sich an der lokalen Datenbank an- und abmelden - Der Benutzer kann die Daten einsehen und ändern ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 2 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 2.1.2 Kann Kriterien • Softwareverteilung Prototyp GUI • Heterogene Architektur • Eigene Synchronisationssoftware entwickeln • Direkte Verbindung und Datenmodifikation auf der Back-End-Datenbank via Prototyp GUI 2.2 Produkteinsatz 2.2.1 Anwendungsbereiche An folgende Fälle soll der Anwendungsbereich der Datenbanksynchronisation erklärt werden: Fall 1: Der Vermesser Auf der Baustelle nimmt der Vermesser raumbezogene Daten mit seinem Messinstrument auf und speichert sie in der lokalen Datenbank seines Rechners ab. Zurück im Büro wird seine lokale Datenbank mit der Hauptdatenbank abgeglichen (Synchronisation). Dieser Fall soll uns in unserer Arbeit als Grundlage dienen. Fall 2: Der Aussendienstmitarbeiter Ein Aussendienstmitarbeiter geht auf Kundenbesuch, um neue Bestellungen aufzunehmen. Vorgängig lädt er die Kundendaten von der Hauptdatenbank lokal auf seinem portablen Gerät herunter. Nach seinem Besuch synchronisiert er seine neuen Daten mit der Hauptdatenbank. Fall 3: Der Produktionsleiter In der Produktionsstätte nimmt der Produktionsleiter stichprobenweise Qualitätsmesswerte in seiner lokalen Datenbank auf, welche er nach seinem Rundgang in die Hauptdatenbank übermittelt (Synchronisation). Fall 4: Messestand Während einer Messe werden die Adressen (und weitere Infos) von möglichen Neukunden auf dem Laptop gespeichert. Einst in der Firma zurück können die neu erfassten Daten in der Hauptdatenbank gespeichert werden (Synchronisation), sodass sie für die weitere Bearbeitung dem Customer Service zur Verfügung stehen. 2.2.2 Zielgruppen Personengruppen, die auch bei einer netzwerklosen Verbindung wichtige Geschäftsdaten effizient und sicher erfassen müssen. Das heisst überall dort, wo eine online-Verbindung zur Hauptdatenbank nicht immer möglich ist. Davon sind folgende Zielgruppen betroffen (ohne Anspruch auf Vollständigkeit): • Mitarbeiter im Aussendienst • Mobile Client • Aussenstellen (Datenabgleich) • Heimarbeiter ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 3 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Als Zielgruppe wählen wir für unsere Arbeit den Vermesser (ein Mitarbeiter im Aussendienst) aus. Die Zielgruppe soll Basiskenntnisse im Umgang mit dem PC respektive mobilen Gerät besitzen. 2.2.3 Betriebsbedingungen Hardwarekomponenten der Server und Middleware dürfen nicht zum Flaschenhals werden. Dies gilt auch für die Netzwerktopologie. Einsatz redundanter Hardwarekomponenten, um Betriebsausfälle minimal zu halten. Die Hauptdatenbanksicherung wird vom Administrator manuell durchgeführt. Für den Prototyp GUI sind keine besonderen Betriebsbedingungen verlangt. 2.3 Produktumgebung 2.3.1 Software Generell können alle gängigsten Betriebssysteme wie Windows 2000/2003, XP, Vista, Linux und Sun Solaris zum Einsatz kommen. Wir beschränken uns mit den Betriebssystemen Windows 2003 für Datenbankserver und Middleware und XP für Client. Optional soll Linux als Ergänzung in Betracht gezogen werden. In unserer Arbeit werden zum Aufsetzen der vorgesehenen Betriebssysteme die Virtualisierungssoftware der Firma VMware (entweder VMware Workstation oder VMware ESXi) eingesetzt. 2.3.2 Hardware Für die Realisierung unserer Produktumgebung bestehen keine Hardwareeinschränkungen. Im Prinzip genügen für diese Arbeit übliche Rechner wie Desktop und Notebook. In unsere Testumgebung werden alle notwendigen Maschinen auf einem physischen und leistungsstarken Rechner virtualisiert. Zudem können auch die eigenen Notebooks als Client benutzt werden. Pro Testsystem soll aus Kostengründen sofern möglich die Datenbank- und MiddlewareSoftware auf derselben Maschine installiert werden. 2.3.3 Produktschnittstellen Datenbanksynchronisation Passende Schnittstellen zwischen Client - Middleware und Middleware - Datenbankserver werden im Verlauf der Arbeit eruiert. Prototyp GUI Es gibt keine Schnittstelle zu anderen Produkten. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 4 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 2.4 Produktfunktionen 2.4.1 Datenbanksynchronisation • Über die Benutzungsoberfläche werden Daten erfasst (siehe unter anderem Kapitel 2.4.3). • Der Benutzer kann jederzeit eine manuelle Datensynchronisation auslösen. • Die automatische Datensynchronisation wird über das System gesteuert. • Über die Synchronisation werden die Daten von der Hauptdatenbank in die lokale Datenbank transferiert und umgekehrt. • Das ausgewählte System soll Funktionen zur Verfügung stellen. Verwaltungsaufgaben- und Konfliktmanagement- Optional: • Die Daten können (eventuell via Prototyp GUI) direkt auf die Back-End-Datenbank modifiziert werden. • Das ausgewählte System soll auch ein Softwareverteilungsmanagement anbieten. 2.4.2 Übersicht Use Cases (Datenbanksynchronisation) Das folgende Diagramm gibt eine Übersicht der Anwendungsfälle (Use Cases) für die Systemevaluation: Abbildung 1: Systemkonzept Use Cases Diagramm ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 5 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 2.4.3 Beschreibungen mit Schablone Use Cases (Datenbanksynchronisation) Use Case 100: Lokale Manipulation LDB Nummer: 100 Name: Lokale Manipulation LDB Kurzbeschreibung: DB-User erfasst, ändert und löscht Einträge in der lokalen Datenbank Vorbedingung: Verbindung zur Datenbank muss bestehen Nachbedingung: keine Akteure: DB-User Auslösendes Ereignis: DB-User manipuliert Daten anhand des GUI Ablaufbeschreibung: 1. Punkt in der Tabelle auswählen 2. Punkt manipulieren 3. Punkt speichern, löschen -> entsprechende Schaltfläche betätigen Auswirkungen: Veränderte Daten auf der lokalen Datenbank Use Case 200: Synchronisation Nummer: 200 Name: Synchronisation Kurzbeschreibung: DB-User löst die Datensynchronisation zwischen den Datenbanken manuell aus. Die automatische Synchronisation läuft über eine Maschine. Vorbedingung: Daten müssen entweder in der lokalen Datenbank oder in der Hauptdatenbank geändert sein Nachbedingung: fehlerfrei Akteure: DB-User, Maschine Auslösendes Ereignis: Synchronisation wird durch DB-User manuell gestartet oder die automatische Synchronisation ist aktiviert Ablaufbeschreibung: 1. DB-User startet Synchronisation manuell oder die automatische Synchronisation ist aktiviert Auswirkungen: Daten werden in den Datenbanken aktualisiert. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 6 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Use Case 300: Datentransfer Nummer: 300 Name: Datentransfer Kurzbeschreibung: Daten werden von der lokalen Datenbank in die Hauptdatenbank übertragen und umgekehrt Vorbedingung: Synchronisation muss bestehen Nachbedingung: keine Akteure: DB-User, Maschine Auslösendes Ereignis: Synchronisation wird gestartet oder läuft Ablaufbeschreibung: 1. Automatische Datenübertragung Auswirkungen: Abgleichung der Daten zwischen den Datenbanken Use Case 400: Remote Manipulation HDB Nummer: 400 Name: Remote Manipulation HDB Kurzbeschreibung: Einträge in der Hauptdatenbank erfassen, ändern und löschen Vorbedingung: Verbindung zur Datenbank muss bestehen Nachbedingung: keine Akteure: DB-User Auslösendes Ereignis: Daten werden in der Hauptdatenbank manipuliert Ablaufbeschreibung: 1. Punkt manipulieren 2. Commit auslösen Auswirkungen: 2.4.4 Veränderte Daten auf der Hauptdatenbank Prototyp GUI Der Prototyp muss folgende Funktionen erfüllen: • Der Benutzer muss sich mit verschiedenen Datenbankmanagementsystemen kurz DBMS genannt via Benutzername und Passwort verbinden können. Die DBMS werden im Verlauf der Arbeit eruiert. • Der Benutzer muss Daten erfassen, ändern und löschen können. Die Daten sollen tabellarisch auf dem GUI angezeigt werden. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 7 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 2.4.5 Übersicht Use Cases (Prototyp GUI) Das folgende Diagramm zeigt eine Übersicht der eintreffenden Anwendungsfälle (Use Cases): Abbildung 2: Use Cases Diagramm 2.4.6 Beschreibungen mit Schablone Use Cases (Prototyp GUI) Use Case 100: Datenbankmanagementsystem auswählen Nummer: 100 Name: Datenbankmanagementsystem auswählen Kurzbeschreibung: Anhand der Auswahlbox das entsprechende DBMS auswählen Vorbedingung: keine Nachbedingung: keine Akteure: DB-User Auslösendes Ereignis: Auswahlbox Ablaufbeschreibung: 1. Über die Auswahlbox wählt der User das DBMS aus 2. Anmeldepanel wird geöffnet Auswirkungen: Parameter für DB-Verbindung werden verlangt ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 8 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Use Case 200: Daten erfassen Nummer: 200 Name: Daten erfassen Kurzbeschreibung: Mit dem ListGUI kann ein neuer Datensatz (Punktnummer, Y- und X-Koordinate) in der Datenbank erfasst werden. Dank Observer wird der neue Punkt in der Tabelle gleich aufgelistet und ist in der DB abgespeichert. Vorbedingung: keine Nachbedingung: keine Akteure: DB-User Auslösendes Ereignis: Enter-Button Ablaufbeschreibung: 1. Punktnummer eingeben 2. Y-Koordinate eingeben 3. X-Koordinate eingeben 4. Button Enter drücken 5. Erfasster Punkt erscheint in der Tabelle Auswirkungen: Neuer Punkt wird in der DB gespeichert Use Case 300: Daten ändern Nummer: 300 Name: Daten ändern Kurzbeschreibung: Mit dem ListGUI kann ein bestehender Datensatz (Punktnummer, Y- und X-Koordinate) in der Datenbank geändert werden. Dank Observer wird der geänderte Punkt in der Tabelle gleich aufgelistet und in der DB abgespeichert. Vorbedingung: keine Nachbedingung: keine Akteure: DB-User Auslösendes Ereignis: Enter-Button Ablaufbeschreibung: 1. Punkt in der Tabelle auswählen 2. Daten ändern (Punktnummer, Y- und X-Koordinate) Auswirkungen: Veränderter Punkt wird in der DB gespeichert ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 9 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Use Case 400: Daten löschen Nummer: 400 Name: Daten löschen Kurzbeschreibung: Zu löschender Punkt in der Tabelle des ListGUI auswählen und mit dem Delete-Button löschen Vorbedingung: keine Nachbedingung: keine Akteure: DB-User Auslösendes Ereignis: Delete-Button Ablaufbeschreibung: 1. Punkt in der Tabelle auswählen 2. Delete-Button betätigen Auswirkungen: Punkt wird in der DB gelöscht 2.5 Produktdaten Unsere Produktdaten befinden sich in der Datenbank namens „vermdb“. Die Datenbank besteht zurzeit aus einer Tabelle mit den drei Attributen Punktnummer (PktNr), Y-Koordinate (YKoord) und X-Koordinate (XKoord). Die Tabelle heisst „tabkoord“. Weitere Tabellen können während der Arbeit noch folgen. 2.6 Produktleistungen Die Produktleistungen der Komponenten werden von den Angaben des Produktherstellers entnommen. Unsere eigene Bedingung ist, dass es zu keinen Engpässe kommen darf. 2.7 Benutzungsoberfläche Datenbanksynchronisation Für die Datenbanksynchronisation ist kein GUI erforderlich. Eine Benutzungsoberfläche für Verwaltungsaufgaben (Benutzer, Passwort usw.) soll die ausgewählte SynchronisationsApplikation zur Verfügung stellen. Prototyp GUI Für die Erfassung und Abruf der Daten in der Datenbank ist ein GUI vorgesehen. Die objektorientierte Oberfläche wird zweidimensional erstellt. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 10 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ DatenEingabefelder DatenAnzeigetabelle AuslöserButtons Abbildung 3: Benutzungsoberfläche 2.8 Qualitäts-Zielbestimmungen Datenbanksynchronisation • Einfaches Synchronisations-Handling • Einfaches Aufsetzen der Infrastruktur • Klares Error-Handling • Synchronisationskollisionen minimal halten Prototyp GUI • Robustheit • Zuverlässigkeit • Korrektheit • Benutzungsfreundlichkeit ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 11 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 2.9 Globale Testszenarien und Testfälle Datenbanksynchronisation Die Testumgebung besteht aus dem System und zwei Clients. Abbildung 4: Testumgebung Bei unseren Testfällen gehen wir immer von diesen Bedingungen aus: • Die noch zu erfassenden Stammdaten befinden sich in der Hauptdatenbank • Client X und Y sind online für die Fälle 1-6 • Client X und Y sind offline für die Fälle 7-8 Fall 1: TestclientX fügt einen neuen Punkt ein. Fall 2: TestclientY modifiziert einen bestehenden Punkt. Fall 3: Beide Clients fügen „gleichzeitig“ denselben Punkt aber mit diversen Werten ein. Fall 4: TestclientX löscht einen Punkt und TestclientY ändert unmittelbar danach die Koordinaten dessen Punkts. Fall 5: Lösche einen Punkt direkt aus der Hauptdatenbank ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 12 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Fall 6: Modifiziere die Koordinatenwerte eines Punkts direkt in der Hauptdatenbank Fall 7: Bedingung: Client X & Y sind offline und nur die originalen Stammdaten befinden sich in der Hauptdatenbank TestclientX und TestclientY fügen je zwei neue Punkte mit unterschiedlichen Punktnummern ein. Anschliessend werden die Clients online gesetzt. Fall 8: Die Clients sind offline und in der Hauptdatenbank soll direkt ein Punkt modifiziert werden. Anschliessend werden die Clients online gesetzt. Prototyp GUI Für das Testen des Prototyps GUI wird kein Testplan benötigt. Das eigentliche Testen soll während der objektorientierten Designphase stattfinden. Verschiedene Testwerkzeuge wie Issue-Tracking- und JUnit-Tool werden für dieses Programm nicht eingesetzt. 2.10 Entwicklungsumgebung 2.10.1 Software Datenbanksynchronisation Eine Entwicklungsumgebung für die Datenbanksynchronisation ist nicht vorgesehen. Prototyp GUI Das GUI-Programm wird in Java-Sprache geschrieben. Als Werkzeug steht uns eclipse, Version 3.2 zur Verfügung. 2.10.2 Hardware Der eigene Rechner ist für das Entwickeln des GUI ausreichend. 2.10.3 Entwicklungsschnittstellen Es sind keine besonderen Schnittstellen erforderlich. 2.11 Ergänzungen Anderweitige Vereinbarungen sind schriftlich festzuhalten. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 13 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 3 Prototyp GUI 3.1 OOA 3.1.1 Einleitung Mit der objektorientierten Analyse werden erste Ideen und Skizzen über den zu entwickelnden Prototyp entworfen. Die Ideen und Skizzen werden in groben Zügen anhand von Schreibschablonen (Use Cases siehe Kapitel 2.4.3 des Pflichtenhefts) und Diagrammen (Klassen, Sequenz, usw.) auf Papier festgehalten und dargestellt. Die Entwürfe sollen das Problem beschreiben, für einen Nichtfachmann (Auftraggeber) verständlich und nachvollziehbar sein und im Moment noch keine technischen Lösungen bieten. Für die Beschreibung der Use Cases und Erstellung des Sequenzdiagramms stand uns das „Lehrbuch der Objektmodellierung“ von Heide Balzert zur Seite. 3.1.2 Klassendiagramme Für die Realisierung des Prototyps GUI haben wir beschlossen, das Drei-SchichtenArchitekturmodell anzuwenden. Das Modell sieht die drei Pakete GUI, Business und Datenbank vor. 3.1.3 Klassendiagramm GUI-Schicht Abbildung 5: OOA Klassendiagramm GUI-Schicht ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 14 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 3.1.4 Beschreibung GUI-Schicht Die Klasse GUI stellt unsere Benutzungsoberfläche dar. Mit dieser Benutzungsoberfläche können wir folgende Funktionen ausführen: • Datenbankmanagementsystem auswählen -> Verbindung mit der gewünschten Datenbank • Datenmanipulation, d. h. erfassen, ändern und löschen direkt auf der Benutzungsoberfläche -> Datentabelle anzeigen 3.1.5 Klassendiagramm Business-Schicht Abbildung 6: OOA Klassendiagramm Business-Schicht 3.1.6 Beschreibung Business-Schicht Die Klasse Business ist das Bindeglied zwischen unsere Benutzungsoberfläche und Datenbank. In ihr befinden sich die Setter- und Gettermethoden, die wichtigsten Methoden für die Datenmanipulation und Datenbankverbindungen. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 15 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 3.1.7 Klassendiagramm Datenbank-Schicht Abbildung 7: OOA Klassendiagramm Datenbank-Schicht 3.1.8 Beschreibung Datenbank-Schicht Die Klasse Datenbank enthält die Verbindungen zu den verschiedenen Datenbanksystemen und SQL-Statements. Beim erstmaligen Testen der Benutzungsoberfläche werden wir eine Access-Datenbank via JDBC-ODBC-Bridge anbinden. Die Datenbank soll Daten von folgenden Attributen Punktnummer, Y-Koordinate und X-Koordinate enthalten. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 16 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 3.1.9 Sequenzdiagramm Das folgende Diagramm gibt eine Gesamtübersicht über Sinn und Zweck der Applikation: Abbildung 8: OOA Sequenzdiagramm ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 17 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 3.1.10 Prototyp GUI Unser Prototyp sieht eine Benutzungsoberfläche vor. Darin sind eine Datentabelle, die nötigen Schaltflächen (Buttons) für die Datenmanipulation und ein Datenbankmanagementsystem-Auswahlkästchen implementiert (siehe Kapitel 2.7). 3.1.11 Testplan Wie im Pflichtenheft festgehalten wurde auf einen Testplan verzichtet, da es sich um einen kleinen Prototyp handelt (siehe Kapitel 2.9). 3.2 OOD 3.2.1 Einleitung Die in der OOA definierten Entwürfe werden in dieser Phase verfeinert. Wir befinden uns jetzt in der Phase des objektorientierten Designs. Die in diesem Kapitel beschriebenen Use Cases, Klassen- und Sequenzdiagramme fliessen erst jetzt in den zu entwickelnden Prototyp ein. 3.2.2 Übersicht Use Cases (Prototyp GUI) Abbildung 9: OOD Use Cases Diagramm ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 18 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Für die Realisierung des Prototyps benötigen wir sechs Use Cases. Im Gegensatz zu OOA sind neu zwei weitere Use Cases dazugekommen. Je nach Datenbank werden bestimmte Parameter für eine korrekte Verbindung benötigt. Dieser Umstand wird in einem eigenen Anwendungsfall behandelt. Eine Aktualisierung der Daten aus der Hauptdatenbank wird ebenfalls in einem eigenen Anwendungsfall beschrieben. Für unsere Use Cases kommt nur ein Akteur (DB-User) vor, der mit dem System kommuniziert. 3.2.3 Beschreibungen mit Schablone Use Cases (Prototyp GUI) Use Case 500: Datentabelle im GUI aktualisieren Nummer: 500 Name: Datentabelle im GUI aktualisieren Kurzbeschreibung: Handänderungen in der Datenbank können über den RefreshButton im ListGUI angezeigt werden. Vorbedingung: Daten werden in der Datenbank direkt durch Dritte manipuliert. Nachbedingung: keine Akteure: DB-User Auslösendes Ereignis: Refresh-Button Ablaufbeschreibung: 1. DB-User klickt Refresh-Button. Auswirkungen: Aktuelle Daten werden im GUI angezeigt. Use Case 600: Parameter eingeben Nummer: 600 Name: Parameter eingeben Kurzbeschreibung: Je nach DBMS werden für die DB-Verbindung einige Parameter benötigt wie Host, Port, DB-Name, Username und Passwort. Vorbedingung: DBMS muss ausgewählt sein -> Use Case 100, DB-User muss Parameter kennen. Nachbedingung: Datenbank und DB-Verbindung müssen existieren. Akteure: DB-User Auslösendes Ereignis: DB-User füllt die eingeblendeten Parameterfelder ein. Ablaufbeschreibung: 1. DB-User gibt alle nötigen Parameter an. 2. DB-User schliesst die Eingaben mit dem OK-Button ab. Auswirkungen: DB-Verbindung wird erstellt, Daten werden im GUI angezeigt. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 19 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 3.2.4 Gesamtübersicht Klassendiagramme Abbildung 10: OOD Klassenübersichts-Diagramm ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 20 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Unser Programm baut auf das Drei-Schichten-Architekturmodell auf. Es enthält die drei Pakete vermGUI (GUI), verm (Business) und vermDB (Datenbank). Die Pakete werden im Projekt namens „survey“ verwaltet. Jedem Paket entspricht genau eine Schicht des Modells. Zu oberst haben wir den GUI, in der Mitte unser Business und unten die Datenbank. Diese Schichten können nur im Top-Down oder Bottom-Up miteinander kommunizieren. Der grosse Vorteil schliesslich ist, dass jede Schicht einzeln ausgewechselt werden kann, ohne das ganze Programm auf den Kopf zustellen. Das GUI-Paket besitzt vier Klassen: ListGUI, DialogLogin, DialogLoeschen und DialogWarning, während die anderen Pakete je eine Klasse Point (Business) und VermDb (Datenbank) haben. 3.2.5 GUI Klassen ListGUI Abbildung 11: OOD Klasse ListGUI Die Klasse ListGUI ist unsere Hauptklasse. Sie stellt das Hauptfenster unserer Applikation dar. In ihr werden die Datenbanksysteme ausgewählt, die Daten von der Datenbank angezeigt und die Daten durch Eingabefelder und Knöpfe manipuliert. Sie ist für die Systemevaluationen unser Ausgangspunkt. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 21 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ DialogLogin Abbildung 12: OOD Klasse DialogLogin Je nach DBMS-Anwendung sind einige Parameter wie Host, Port, Datenbankname, Benutzer und Passwort anzugeben. Aus diesem Grund haben wir ein Anmeldefenster kreiert, welches geöffnet wird, sobald das gewünschte DBMS im Auswahlkästchen des ListGUI gewählt wurde. DialogLoeschen Abbildung 13: OOD Klasse DialogLoeschen Beim Löschen eines Datensatzes werden wir gefragt, ob wir ihn tatsächlich löschen möchten. Mit dem OK-Button bestätigen wir den Löschvorgang. Mit dem Abbrechen-Button wird der Löschvorgang gestoppt. DialogWarning Abbildung 14: OOD Klasse DialogWarning Wird ein nicht existierender Datensatz mit dem Delete-Button des ListGUI gelöscht, dann erscheint eine Fehlermeldung. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 22 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 3.2.6 Business Klasse Point Abbildung 15: OOD Klasse Point Die Klasse Point ist unsere Geschäftslogikklasse. Sie steuert den eigentlichen Datenprozess zwischen den Schichten. Sie holt sich die Daten aus der Datenbank und übergibt sie dem ListGUI. Umgekehrt nimmt sie Daten vom ListGUI entgegen und händigt sie der Datenbank aus. Für die Kommunikation zwischen der Business Klasse und GUI Klassen ist der Observer besorgt. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 23 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 3.2.7 Datenbank Klasse VermDb Abbildung 16: OOD Klasse VermDb Die Klasse VermDb ist als Singleton-Klasse implementiert. Sie kommuniziert mit der Datenbanktabelle tabkoord mit den verschiedenen Datenbanksystemen und verwaltet die Punktdaten (Punktnummer, Y-Koordinate, X-Koordinate). Über diese Klasse kann ein neuer Punkt erfasst, ein bestehender Punkt geändert oder gelöscht werden. Zu GUI-Testzwecken stellt sie unter anderem zu Beginn die Schnittstelle zur Access-Datenbank her. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 24 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 3.2.8 Sequenzdiagramm Das folgende Diagramm zeigt das Zusammenspiel aller vorkommenden Klassen aus Sicht der Applikation: Abbildung 17: OOD Sequenzdiagramm ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 25 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 3.2.9 Programm Dieses Kapitel kann auch als User-Manual benutzt werden. Hauptfenster ListGUI DBMS Auswahlbox DatenEingabefelder DatenAnzeigetabelle AuslöserButtons Abbildung 18: Hauptfenster mit Beschreibung DBMS Auswahlbox In der Box stehen sechs Datenbankmanagementsysteme zur Auswahl: Abbildung 19: Panel DBMS Auswahlbox Daten-Eingabefelder Bei der Datenerfassung und -änderung müssen alle drei Felder ausgefüllt sein, ansonsten bleibt der Enter-Button inaktiv. Bei einer Änderung ist auch möglich den zu mutierenden Datensatz in der Anzeigetabelle durch Mausklick auszuwählen und das oder die entsprechenden Textfelder zu ändern. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 26 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Abbildung 20: Panel Daten-Eingabefelder Auslöser-Buttons Datenerfassung und -änderung werden mit dem Enter-Button beendet. Ein Datensatz kann mit der Punktnummereingabe oder durch Auswahl in der Anzeigetabelle und anschliessendem Delete-Button-Betätigung gelöscht werden. Der Refresh-Button dient zum Aktualisieren der Anzeigetabelle, wenn Daten in der Datenbank direkt manipuliert werden. Er wird bei Datenänderungen mit unserem ListGUI nicht benötigt, da der Observer-Pattern implementiert ist. Statt die Schaltfläche über Mausklick zu betätigen, kann jede aktive Schaltfläche mit der Enter-Tastaturtaste bedient werden. Abbildung 21: Panel Auslöser-Buttons Daten-Anzeigetabelle Die Tabelle wird mit den Daten der ausgewählten Datenbank ausgefüllt, sobald die Verbindung da ist. Abbildung 22: Panel Daten-Anzeigetabelle Nebenfenster DialogLogin Bei der Auswahl eines DBMS im ListGUI wird das Anmeldefenster geöffnet. Je nach DBMS sind die benötigten Eingabefelder aktiv. Bei richtiger Eingabe wird mit dem OK-Button eine Datenbankverbindung hergestellt. Das Fenster schliesst sich und die Daten werden im Hauptfenster „ListGUI“ angezeigt. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 27 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Abbildung 23: Nebenfenster DialogLogin Die nachfolgende Tabelle zeigt eine Übersicht der aktiven (= x) Eingabefelder der DBMS: MS-Access* Host DB-Name MySQL* Oracle DB Lite x x x x Port Oracle Funambol DS MySQL Funambol DS HSQL x x x x x x x Benutzer x system x x x Passwort x x x x x * Diese Datenbanken standen nur zu Testzwecken für den Prototyp GUI. Bei Oracle Database Lite ist der Benutzer „system“ standardmässig bereits im Eingabefeld eingetragen. Nebenfenster DialogLoeschen Beim Löschen eines Punkts mit dem Delete-Button erscheint dieses Fenster. Mit „OK“ wird der Löschvorgang bestätigt. Mit „Abbrechen“ kehrt man zum Hauptfenster „ListGUI“ zurück. Abbildung 24: Nebenfenster DialogLoeschen Nebenfenster DialogWarning Dieses Warnfenster erscheint unmittelbar, wenn mit dem OK-Button des Fensters DialogLoeschen ein nicht existierender Punkt gelöscht werden soll. Abbildung 25: Nebenfenster DialogWarning ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 28 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 3.2.10 Test Mit wenig und einfachen Tests gaben wir uns beim Programmieren des Prototyps GUI zufrieden. Die korrekte Funktionalität des Programms testeten wir anhand von System.out.print-Anweisungen auf der Konsole unserer Entwicklungsplattform eclipse. Abwechslungsweise kodierten wir ein wenig und testeten anschliessend gleich. Somit wussten wir rasch, wo wir standen und was zu verbessern war. Nach einigen kleinen Anpassungen und Datenbankschnittstellenerweiterungen nahm das Programm Schritt für Schritt Gestalt an. 3.2.11 Installation GUI auf dem Rechner 1.) Erstelle aus der Entwicklungssoftware Eclipse eine jar-Datei (Java-Archive) des GUI. jar-Datei erstellen 1. Projekt „survey“ auswählen 2. Menü File -> Export auswählen 3. Im Fenster Export (Select) JAR file unter Java auswählen und Button Next klicken 4. Im Fenster JAR Export (JAR File Specification) Pfad und jar-Dateiname angeben Select the export destination: JAR file: D:\IT-Studium\MasterThesisLoIudice\survey.jar Button Next zweimal klicken 5. Im Fenster JAR Export (JAR Manifest Specification) Main class: „vermGUI.ListGUI“ im Browser auswählen und Button Finish klicken 2.) Gemäss jar-Datei-Erstellung ist unsere Datei „survey.jar“ bereits im korrekten Verzeichnis abgelegt. Nun muss noch Java im C:\Program Files installiert sein. Zumindest benötigen wir dort das Ausführungsprogramm jre6 (Java Runtime Environment, jre-6u11-windowsi586-p.exe) im Java-Verzeichnis (siehe Abb. 26). Das Ausführungsprogramm (virtuelle Maschine von Java) ist von der Versionierung der jar-Datei abhängig. Damit unser Prototyp GUI richtig läuft, müssen die entsprechenden Datenbank-Treiber im jre6\lib\extVerzeichnis abgelegt werden (siehe Abb. 27). Abbildung 26: Strukturbaum des JRE Abbildung 27: Ablageort der DB-Treiber ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 29 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 4 Systemkonzept 4.1 Einleitung In diesem Kapitel geht es, um die Erarbeitung eines Konzepts für die Systemevaluation. Da wir vorhaben, zwei bis drei nicht vorgegebene Synchronisationssysteme zu evaluieren, ist es zum jetzigen Zeitpunkt schwierig, ein bereits ausgereiftes Konzeptmodell zu erstellen, welches für alle Systeme gilt. Aus diesem Grund haben wir uns grundsätzlich mit den zwei Themen Systemeigenschaften und Vorgehen befasst, welche in den nachfolgenden Unterkapiteln beschrieben sind. Die im Pflichtenheft beschriebenen Anwendungsfälle (Use Cases, Kapitel 2.4.2) sind Bestandteil unseres Systemkonzepts. 4.2 Vorgehen 1.) Als erstes benötigen wir einen leistungsstarken physischen Rechner für unsere TestUmgebung. Auf diesem Rechner werden für jedes System die dazugehörigen virtuellen Maschinen aufgebaut. Zu jedem System soll mindestens ein Server für die Datenbank und für das Synchronisation-Middleware und zwei Workstations für die Client-Umgebung dienen. 2.) Durch Recherchieren im Internet und Fragen an Informatikleute (z. B. Mitarbeiter, Dozenten, etc.) werden wir die Systeme auswählen. 3.) Der Reihe nach werden die Systeme evaluiert. 4.) Am Schluss werden wir die Systeme miteinander vergleichen. 4.3 Systemeigenschaften Wir haben vor zwei bis drei Systeme innerhalb der festgelegten Thesis-Zeit zu evaluieren. Bei der Auswahl der Systeme wollen wir uns an folgende Rahmenbedingungen festhalten: • Es muss mindestens ein homogenes und ein heterogenes System dabei sein. • Es muss ein kommerzielles berücksichtigt werden. • Im Weiteren muss es eine kostengünstige Lösung sein. Eine sogenannte „out of the box”-Applikation wäre wünschenswert. Wenn möglich sollen die Systeme mit wenigen Anpassungen realisiert werden können. • Wohlgemerkt muss es die Muss-Kriterien gemäss Pflichtenheft erfüllen (Kapitel 2.1.1) und nicht-kommerzielles System (Open Source) 4.4 Zeitbedarf Für jedes System rechnen wir mit einem Zeitbedarf von sieben Wochen. Darin enthalten sind das Einarbeiten (Recherchieren), das Aufsetzen und Aufbauen des Systems, eventuelle Programmierarbeiten von Interfaces, das analytische Testen und die Dokumentation. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 30 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 4.5 Infrastruktur 4.5.1 Hardware Zum Einsatz kommen Server-seitig ein leistungsstarker Rechner und Client-seitig zwei Laptops. Der Server-Rechner (Hersteller offen) muss eingekauft werden. Ferner muss er mindestens folgende Eigenschaften (Prozessor > 2.0 GHz, Arbeitsspeicher 4GB, Festplatte 1TB) aufweisen. Die Laptops stellen die beiden Diplomanden zur Verfügung. 4.5.2 Software Als Betriebssysteme werden Microsoft-Produkte (optional Linux) eingesetzt. Für die Virtualisierung wird VMware verwendet. 4.5.3 Lizenzfragen Für die Systemevaluation eines kommerziellen Herstellers werden wir die Lizenzen vorerst über die Fachhochschule allenfalls über die Firma LO iUDiCE besorgen. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 31 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 5 Test-Umgebung 5.1 Einleitung Für die Evaluierung der Systeme braucht es diverse Computer. Zu dieser Erkenntnis sind wir in der Gruppe recht schnell darauf gekommen. Jedes zu analysierende Testsystem soll auf einem eigenen Rechner implementiert werden, somit vermeiden wir, dass zwischen den Systemen irgendwelche betrieblichen Konflikte entstehen können. Der uns erhoffte Vorteil ist, dass nicht alle Systeme auf einmal zerstört werden und all diese aufwendig wieder neu aufgesetzt werden müssen. Zudem drängt sich aus finanziellen Gründen eine Virtualisierung der Test-Umgebung auf. Als Virtualisierungssoftware haben wir uns für die der Firma VMware entschieden, die wir während des Studiums kennen gelernt haben. 5.2 Vorgehen Am Anfang hatten wir als physischen Rechner einen Dell Inspiron 530 für unsere Testumgebung eingesetzt. Dieser ist mit folgenden Hardware-Komponenten ausgestattet: • Intel Core 2 Quad-Core Prozessor (2.5GHz) • 4GB Arbeitsspeicher • 2 x 500GB (im RAID 1) Festplatten. Dem Rechner haben wir folgende Software installiert: • Windows Server 2003 als Betriebssystem • VMware Workstation 6.5 (30Tage Evaluationsversion) für die Virtualisierung Windows Server 2003 wird als Betriebssystem eingesetzt, da dieses gleichzeitig zwei unabhängige Sitzungen via Remote Desktop Protokoll (RDP) zulässt. Und somit arbeitet jedes Gruppenmitglied in getrennter Umgebung für sich. Nachdem die physische Maschine fertig aufgesetzt war, wurden anschliessend auch die nötigen virtuellen Rechner auf dieser Maschine eingerichtet. Als erstes wurden zwei virtuelle Maschinen mit Windows 2003 Server und Windows XP Workstation installiert, die uns als Basisrechner und Vorlage für weitere Tests dienen. Von diesen Basisrechnern ausgehend können mit wenig Aufwand weitere Maschinen unproblematisch geklont und Zeit gespart werden. Bei diesem Verfahren muss lediglich der Rechnername und die Netzwerkkonfiguration angepasst werden. In der beigelegten DVD befindet sich ein Beschrieb „MT_Installation_Win2k3.pdf“ im Verzeichnis „OperatingSystem\Windows\Install_Docs“, wie unsere Betriebssysteme aufgesetzt und konfiguriert sind. In der Inbetriebnahme unserer Testumgebung stellten wir frühzeitig fest, dass unser physischer Rechner ziemlich rasch am Limit seiner Leistung stand. Die Endstation erreichte der Rechner bereits beim gleichzeitigen Betrieb von drei virtuellen Maschinen. Die Performanz litt stark darunter und ein effizientes Arbeiten war nicht mehr garantiert. Nun standen wir vor der Wahl einen zweiten identischen oder einen neuen leistungsstärkeren Rechner zu beschaffen. Nach diverse Pro und Kontra haben wir uns für die zweite Variante entschieden. Entscheidend waren folgende Kriterien: ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 32 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ • VMware stellt die Software „ESX3i Update 2“ gratis zur Verfügung • ESX3i ist ein eigenes Betriebssystem (-> eine eigene Linux-Distribution) und benötigt kein Basisbetriebssystem wie bei VMware Workstation • Keine Zusatzlizenz für das Betriebssystem des physischen Rechners • Nur 32 MB disk footprint • Da kein zusätzliches Basisbetriebssystem benötigt wird, steigt die Performanz der virtuellen Maschinen Ein Nachteil des ESX3i ist, dass nicht alle Hardware (folglich alle Computer) unterstützt werden. Zur Beschaffung des neuen Rechners mussten wir vorgängig das „Systems Compatibility Guide“ von VMware konsultieren. (http://www.vmware.com/resources/compatibility/docs/vi35_io_guide.pdf). Aus diesem Dokument haben wir uns dann für folgende Maschine entschieden: • Dell PowerEdge 2900 III Mit Hilfe des Dokumentes „ESX Server 3i Installable Setup Guide“ konnte die Applikation problemlos installiert werden. (http://www.vmware.com/pdf/vi3_35/esx_3i_i/r35u2/vi3_35_25_u2_3i_i_setup.pdf) Die bereits erstellten virtuellen Maschinen auf dem ursprünglichen Rechner Dell Inspiron 530 konnten einfach und sicher auf dem neuen Testrechner migriert werden. Dazu stellt VMware gratis den Konverter „VMware Converter 3.0.3 (Starter Edition)“ zur Verfügung, der nicht nur die Fähigkeit hat, virtuelle Maschinen von VMware Workstation zu migrieren, sondern auch aus physischen Rechner einen virtuellen Image erstellen kann. (Für weitere Info siehe http://www.vmware.com/pdf/VMware_Converter_manual302.pdf) Die virtuellen Maschinen auf unserem Testrechner können nicht direkt von der Konsole aus verwaltet werden. Für die Verwaltungsaufgaben dient der Client „VMware Infrastructure Client“, der von unserem Testrechner heruntergeladen werden kann. (Diese Software wird vom der ESX3i Installation mitgeliefert.) Auf den Arbeitsrechnern „Angelo3“ und „Isidoro“ ist die Applikation installiert worden, damit jeder autonom seine Aufgaben abwickeln kann. Via dem „Remote Desktop Connection“ von Microsoft, der Bestandteil von Windows XP ist, kann man sich leicht auf die virtuellen Maschinen anmelden. 5.3 Netzwerk Die physischen Maschinen sind in einem TCP/IP 100Mbit/s Netzwerk untereinander verbunden. Der ADSL-Router (Linksys ADSL Gateway), der uns als Internet-Zugang dient, fungiert zugleich als DHCP Server. Um bei unserer Präsentation Unvorhergesehenes zu vermeiden, haben wir beschlossen, die IP-Adressen der Maschinen fest zu vergeben. Von dieser Regel sind die zwei Arbeitsstationen „Angelo3“ und „Isidoro“ ausgeschlossen. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 33 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 5.4 Arbeitsgruppe Unsere Windows-Rechner sind einfachshalber nicht in einer Domäne vereint, sondern sie gehören der Arbeitsgruppe namens „MASTERTHESIS“ an. Daher muss kein DomainController mit dem Active Directory aufgesetzt werden. Jedoch müssen alle notwendigen Benutzer auf jedem Rechner angelegt werden. Da es zurzeit um wenige Benutzer handelt, fällt dieser Aufwand wenig ins Gewicht. 5.5 Gesamtübersicht der Test-Umgebung 5.5.1 Netzplan Mit dem vorliegenden Netzplan werden die physischen und virtuellen Maschinen abgebildet: Abbildung 28: Netzplanübersicht der Test-Umgebung ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 34 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 5.5.2 Auflistung der Testmaschinen Der Inhalt des Netzplans wird hier als Tabelle aufgelistet: Rechner- / Gerätename Virtuelle Maschinenname Betriebssystem IP-Adresse Arbeitsgruppe Funktion Linksys AG041 - - 192.168.1.1 - Internet-Zugang (Default Gateway) DHCP DNS (nur externe Adressen) VMwareSRV - ESX3i Upgrade 2 192.168.1.2 localdoma VMware Host in Alle virtuellen Maschinen werden auf diesem Rechner verwaltet Angelo3 - Windows 2000 (EN) DHCP LOIUDICE Arbeitsstationen: VMware Infrastructure Client Remote Desktop Connection Eclipse 3.4 Isidoro - Windows XP (EN) DHCP LOIUDICE Arbeitsstationen: VMware Infrastructure Client Remote Desktop Connection Eclipse 3.2 Server_Templ WindowsServ Windows ate er2003Standa 2003 (EN) rd_MyBasic DHCP - Nur Windows 2003 installiert -> Dient als Vorlage. Falls einen weiteren Windows Server benötigt wird, kann er von dieser Vorlage dupliziert werden. WIN2K3ORA 10g WIN2K3ORA 10g Windows 2003 (EN) 192.168.1.12 (fix) MASTER THESIS Oracle 10g Oracle Database Lite 10g - Mobile Server (SSL konfiguriert) - Mobile Development Kit MTDBSERVERTMP MTDBSERVERTMP Windows 2003 (EN) 192.168.1.21 (fix) MASTER THESIS Oracle 10g Oracle Database Lite 10g - Mobile Server (ohne SSL konfiguriert) - Mobile Development Kit WinXP_Temp WindowsXP_ late MyBasic Windows XP (EN) DHCP - Nur Windows XP installiert -> Dient als Vorlage. Falls einen weiteren Client benötigt wird, kann er von dieser Vorlage dupliziert werden. TestclientA TestclientA Windows XP (EN) 192.168.1.63 (fix) MASTER THESIS Testmaschine für Oracle Database Lite 10g TestclientB TestclientB Windows XP (EN) 192.168.1.62 (fix) MASTER THESIS Testmaschine für Oracle Database Lite 10g TestclientC TestclientC Windows XP (EN) 192.168.1.64 (fix) MASTER THESIS Testmaschine für Funambol TestclientD TestclientD Windows XP (EN) 192.168.1.65 (fix) MASTER THESIS Testmaschine für Funambol TestclientE TestclientE Windows XP (EN) 192.168.1.66 (fix) MASTER THESIS Testmaschine für MS Sync Services for ADO.NET TestclientF TestclientF Windows XP (EN) 192.168.1.67 (fix) MASTER THESIS Testmaschine für MS Sync Services for ADO.NET 5.6 Hardware und Softwarelizenzen Die Firma LO iUDiCE hat sowohl beide physische Testrechner wie auch alle notwendigen Microsoft-Softwarelizenzen zur Verfügung gestellt. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 35 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 6 System I 6.1 Einleitung Nach den ersten Recherchen im Internet haben wir beschlossen den Oracle Database Lite zu evaluieren. Schon beim Durchlesen der Kurzbeschreibung und der Eigenschaften haben wir festgestellt, dass die Applikation unseren Anforderungen entspricht. Sie ist eine Schnittstelle zwischen unsere Hauptdatenbank und den lokalen Datenbanken auf den mobilen Geräten und fähig eine bidirektionale Synchronisation zu verwalten, das heisst, Änderungen auf der lokalen Datenbank werden erkannt und in der Hauptdatenbank nachgetragen und umgekehrt. Ein weiteres Plus dieser Applikation ist auch die integrierte Software-Paketisierung. Unter anderem kann die Applikation auf verschiedenen Plattformen (Windows, Unix und Linux) laufen und unterstützt auch diverse Client-Betriebssysteme. Zu ihrem Nachteil muss allerdings erwähnt werden, dass die Oracle Database Lite vorläufig mit Oracle Back-End-Datenbanken eingesetzt werden kann. Oracle Database Lite stellt unter anderem für den Client einen ADO.NET Provider zur Verfügung, mit dem man auf Datenbanken von anderen Herstellern zugreifen kann. 6.2 Aufbau Vorgängig muss eine Oracle Datenbank als Back-End-Datenbank (Oracle9.2, Oracle10g oder Oracle11g) zur Verfügung stehen. Auf einem zweiten Rechner (kann aber auch auf demselben Datenbankserver sein) wird die Applikation Oracle Database Lite bestehend aus den Komponenten Mobile Server und Mobile Development Kit installiert. Auf den mobilen Geräten (wie Notebook, Desktop und Handhelds) wird hingegen den Oracle Database Lite Client, den Prototyp GUI „survey“ und unter anderem auch eine kleine „footprint“ SQL Datenbank installiert, die als lokale Datenbank dient. In unserer Test-Umgebung haben wir beschlossen, die Hauptdatenbank (Back-EndDatenbank) und die Oracle Database Lite auf der gleichen Maschine zu installieren. Wir verwenden Oracle 10g mit Patch 3 als Back-End-Datenbank. Da die Oracle Software auf diverse Betriebssysteme läuft, entschieden wir uns für die Windows Server 2003 Umgebung. Zwei Windows XP Computer dienen als Testclient. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 36 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 6.2.1 Übersicht unserer Test-Umgebung Das nachfolgende Bild zeigt eine Übersicht unserer Test-Umgebung: Abbildung 29: Systemübersicht I der Test-Umgebung 6.3 Funktion des Oracle Database Lites Der Oracle Database Lite Mobile Server hat folgende Funktionen: • Schaltet Benutzer und Geräte frei, die mit der Oracle Database Lite Umgebung arbeiten • Bietet Kundenapplikationen an und verwaltet sie • Verwaltet den Zugriff auf der Hauptdatenbank Mit der Mobile Database Workbench werden Projekte und deren Elemente erstellt, um den Zugriff auf der Hauptdatenbank zu steuern. Hier wird Folgendes definiert: • Datenbankinformationen: DB-Name, DB-Server, Port • Anwendungsschema: Benutzername und Passwort des Datenbankschemas • Tabellen: Welche Tabellen zur lokalen Datenbank veröffentlicht werden • Veröffentlichung der Elemente Mit Hilfe des Packaging Wizards können die Kundenapplikationen verpackt und die dazugehörige Plattform definiert werden. Die Softwarepakete können anschliessend an Oracle Database Lite Benutzern zugewiesen werden und somit steht die Applikation zur Installation bereit. Sobald auf dem Mobilgerät der Oracle Database Lite Client (Mobile Client) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 37 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ aufgesetzt ist, wird beim Aktualisieren des Clients die veröffentliche Applikation heruntergeladen und installiert. 6.4 Funktion der Synchronisation Abbildung 30: Funktion der Synchronisation Quelle Oracle Database Lite Developer's Guide 10g (10.3.0.2) E12089-01 Die Synchronisation via Oracle Database Lite ist bidirektional. Änderungen auf der ClientDatenbank werden zur Hauptdatenbank transferiert und umgekehrt. Das Ganze spielt sich auf dem Mobile Server ab. Der Mobile Server besitzt drei Warteschlangen; die IN-, die OUTund die ERROR-Queue. Abbildung 31: MGP-Status Beim Synchronisieren (ob manuell oder automatisch) werden die Modifikationen vom Client in die IN-Queue abgelegt. Anschliessend überprüft der Mechanismus, ob in der OUT-Queue irgendwelche Änderungen für den Client zur Verfügung stehen. Falls ja, werden die Daten heruntergeladen. Ansonsten endet hier die Aktion. Für den Datentransfer sind zwei in Partnerschaft arbeitende Synchronisations-Werkzeuge Sync Client und Sync Server zuständig. Sync Client befindet sich auf dem Client und Sync Server ist auf dem Mobile Server installiert. Ferner besitzt der Mobile Server noch einen wichtigen Dienst, der sogenannte Message Generator and Processor (MGP). Dieser Dienst sammelt von Zeit zu Zeit die in der IN-Queue hochgeladenen Informationen und leitet sie zur Back-End-Datenbank weiter. Anschliessend richtet er die Änderungen für alle Oracle Database Lite Benutzer her und stellt sie in der OUT-Queue bereit. Bei der nächsten Client-Synchronisation werden die angepassten Daten zum Client heruntergeladen. Tritt beim Abarbeiten der Transaktionen durch den MGP einen Konflikt oder einen Fehler auf, so wandern diese in der ERROR-Queue. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 38 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Abbildung 32: Synchronisationsprozess Quelle Oracle Database Lite Developer's Guide 10g (10.3.0.2) E12089-01 6.4.1 Manuelle Synchronisation Die manuelle Synchronisation kann vom Benutzer auf dem Client jederzeit ausgeführt werden, sobald eine Verbindung zur Hauptdatenbank besteht. Dazu muss die Applikation msync.exe (im Verzeichnis C:\mobileclient\bin) gestartet werden. Abbildung 33: Panel msync Benutzername, Passwort sowie der Name des Mobile Servers müssen angegeben werden, um die Synchronisation über die Schaltfläche „Sync“ starten zu können. Mit „Apply“ können die Einstellungen gespeichert werden. Mit „Exit“ verlässt man die Applikation. Beim Abschluss der Synchronisation erscheint das unten abgebildete Dialog-Fenster: Abbildung 34: Sync Result Dialog ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 39 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Mit der Schaltfläche „Show Log“ kann die History der Synchronisation angezeigt werden. Abbildung 35: Panel Show Log 6.4.2 Automatische Synchronisation Beim Erstellen oder Modifizieren des Software-Projekts, das mit der Mobile Database Workbench (MDW) erstellt wird, kann die automatische Synchronisation ein- respektive ausgeschaltet werden. Abbildung 36: Synchronisationsoption ein- und ausschalten Mit der aktivierten Option führt der Mobile Server eine Synchronisation automatisch durch, sobald die definierten Ereigniswerte überschritten werden. Der Mobile Server unterstützt zwei Ereignisse, die die Synchronisation auslösen können: • Wenn die Anzahl der geänderten Datensätze in der Client-Datenbank den Schwellenwert überschreiten. • Wenn die Anzahl von geänderten Datensätze in der OUT-Queue auf dem Server den Schwellenwert überschreiten. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 40 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Abbildung 37: Synchronisationsereignisse ein- und ausschalten Mittels MDW können im Deployment-Projekt die zwei Ereignisse aktiviert und ihre Schwellenwerte definiert werden. Für das Auslösen der automatischen Synchronisation haben wir beschlossen, die Schwellenwerte auf 1 zu setzen, damit jede Änderung gleich ausgeglichen wird. 6.5 Installationsablauf des Systems I 6.5.1 Installation auf dem Server Vorbedingung: Der Datenbankserver MT-DBServer-TMP (Windows Server 2003) steht als virtuelle Maschine bereit. 1.) Installiere die Oracle 10g Software auf dem Server. (siehe Dokument „MT_Installation_Oracle10g.pdf“ im Verzeichnis „OracleDatabaseLite\Install_Docs“ auf der beigelegten DVD) 2.) Installiere den TNS-Listener und verwende den Standard-Port 1521 (siehe Dokument „MT_Installation_Oracle10g.pdf“ im Verzeichnis „OracleDatabaseLite\Install_Docs“ auf der beigelegten DVD) 3.) Erstelle eine neue Datenbank mit dem Namen „vermdb“ (siehe Dokument „MT_Create_Database_Vermdb.pdf“ im Verzeichnis „OracleDatabaseLite\Install_Docs“ auf der beigelegten DVD) Verwende dazu die eigenen sql-Skripten, die im Verzeichnis „OracleDatabaseLite\ORAscripts2CreateDB\scripts“ auf der beigelegten DVD sind. (Es besteht die Möglichkeit die Datenbank auch mit dem Konfigurations-Assistenten zu erstellen.) 4.) Erstelle den Dienstnamen in die TNSNAMENS.ORA Datei. (siehe Dokument „MT_Configure_TNSNAMENS.pdf“ im Verzeichnis „OracleDatabaseLite\Install_Docs“ auf der beigelegten DVD) 5.) Erstelle den Datenbankbenutzer „VERMSYS“ (siehe Dokument „MT_Create_User_vermsys.pdf“ im Verzeichnis „OracleDatabaseLite\Install_Docs“ auf der beigelegten DVD) 6.) Erstelle die Tabelle „tabkoord“ in das Schema „vermsys“ (siehe Dokument „MT_ Create_Table_tabkoord.pdf“ im Verzeichnis „OracleDatabaseLite\Install_Docs“ auf der beigelegten DVD) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 41 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 7.) Installiere den „Mobile Development Kit“ (siehe Dokument „MT_Installation_OLite.pdf“ im Verzeichnis „OracleDatabaseLite\Install_Docs“ auf der beigelegten DVD) 8.) Installiere den „Mobile Server“ (siehe Dokument „MT_Installation_OLite.pdf“ im Verzeichnis „OracleDatabaseLite\Install_Docs“ auf der beigelegten DVD) 6.5.2 Einbindung unseres Software-Pakets (Prototyp GUI) im Server-Projekt Vorbedingung: Die survey.jar ist erstellt und ist auf dem Datenbankserver MT-DBServerTMP kopiert. Alle notwendigen Schritte sind im Dokument „MT_Start_Mobile_Database_Workbench.pdf“ im Verzeichnis „OracleDatabaseLite\Install_Docs“ auf der beigelegten DVD beschrieben. 1.) Erstelle ein neues „Mobile Database Workbench Projekt“ namens „survey“ 2.) Erstelle ein Publikationselement namens „tabkoord“ 3.) Erstelle die Publikation namens „SURVEY“ und definiere den Namen der ClientDatenbank „localvermdb“ 4.) Erstelle das Software-Paket „Mobile Survey“, wähle die Publikation „SURVEY“ aus, die unter dem Punkt 3 kreiert wurde, und schliesse unsere Applikation „survey.jar“ in das Paket ein. Wichtiger Hinweis: Falls bei der Installation des Mobile Servers das Kommunikationsprotokoll "Secure Sockets Layer" (SSL) aktiviert wurde, kann die Erstellung des Pakets nicht erfolgreich durchgeführt werden. Die Anmeldung mit dem Mobile Server schlägt fehl. Fazit: Wir haben diese Erfahrung gemacht. Da wir das SSL nicht mehr ausschalten und kein Hinweis zum Problem finden konnten, haben wir den Mobile Server nochmals neu aufgesetzt. Später aber fanden wir im Dokument „Oracle Database Lite Administration and Deployment Guide 10g“ Kap. 12.4.3, S. 12-9 folgende Oracle-Bemerkung: …If you enable the Mobile Server to be SSL-Enabled, then you have to change the configuration on the host where the Packaging Wizard is located in order for it to successfully communicate with the Mobile Server. In order for Packaging Wizard to be SSL-Enabled, set the SSL parameter to TRUE in the webtogo.ora file located on the host where the MDK is installed... 6.5.3 Verwaltung unseres Software Pakets „Mobile Survey“ Alle notwendigen Schritte sind im Dokument „MT_Start_Mobile_Database_Workbench.pdf“ im Verzeichnis „OracleDatabaseLite\Install_Docs“ auf der beigelegten DVD beschrieben. 1.) Starte das Mobile Server Manager. Öffne dafür einen Internet-Browser und trage die Adresse ein: „http://mt-dbserver-tmp/webtogo 2.) Editiere die Applikation „Mobile Survey“ 3.) Definiere die korrekten Datenbankverbindungsinformationen 4.) Erstelle die Applikationsbenutzer (falls nicht schon vorhanden) 5.) Weise die Applikation den Benutzern zu ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 42 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 6.5.4 Installation auf dem Client Installiere unsere Applikation „Mobile Survey“ auf dem Client Vorbedingung: Die Testrechner TestclientA (Windows XP) und TestclientB (Windows XP) stehen als virtuellen Maschinen bereit. Alle notwendigen Schritte sind im Dokument „MT_Start_Mobile_Database_Workbench.pdf“ im Verzeichnis „OracleDatabaseLite\Install_Docs“ auf der beigelegten DVD beschrieben. 1.) Installiere den Oracle Database Lite Client auf der Maschine „TestclientA“. Öffne dafür einen Internet-Browser und trage die Adresse ein: „http://mt-dbserver-tmp/webtogo/setup 2.) Wähle die richtige Plattform aus (-> Oracle Lite WIN32, EN) 3.) Trage den Oracle Database Lite Benutzer und sein Passwort ein. 4.) Installiere die Applikation auf dem mobilen Gerät. 5.) Starte das Werkzeug „sync“ auf dem Client, um die Daten zu synchronisieren respektive um die Applikation zu aktualisieren. 6.) Installiere die Applikation „Mobile Survey“ auf dem Client. 7.) Überprüfe, ob die lokale DB exisitert und ob der ODBC-Eintrag erstellt wurde 8.) Wiederhole Schritt 1-7 für den TestclientB. -> Verwende einen anderen Benutzernamen! Achtung! Oracle verweist auf Folgendes gemäss Dokument „Oracle Database Lite Developer's Guide 10g“ Kap. 9.5.1, S.9-19: …You have to install the Mobile Client on a machine which does not host the Mobile Server installation. You can configure only one device for a particular platform per user… 6.6 Systemtest I Oracle Database Lite bietet sowohl eine automatische wie auch eine manuelle Synchronisierung an. Wir haben zuerst die Testfälle mit der automatischen Synchronisation durchgeführt. Mit der Wahl der Automatisierung konnten die Prozesse der Aufgaben nicht eindeutig analysiert werden. Die Prozesse waren für uns nicht transparent. Die erwarteten Konfliktsituationen wie zum Beispiel Aufgaben 3 und 4 kamen nicht zum Vorschein. Das Resultat der automatischen Synchronisation „MT_OLite_autom_Testverfahren.pdf“ befindet sich im Verzeichnis „OracleDatabaseLite\Testfälle“ auf der beigelegten DVD. Wir haben die Tests mit der manuellen Synchronisation dreimal wiederholt und sind zu folgendem Ergebnis gekommen, wie nachfolgend in den Unterkapiteln beschrieben. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 43 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 6.6.1 Ausgangslage Bei unseren Testfällen gehen wir gemäss Pflichtenheft von diesen Bedingungen aus: • Die Stammdaten befinden sich in der Hauptdatenbank • Client A und B sind online für die Fälle 1-6 • Client A und B sind offline für die Fälle 7-8 Anhand folgendes Skriptinhalts (siehe Dokument „Stammdaten.sql“ im Verzeichnis „SQLSkripte“ auf der beigelegten DVD) werden die Stammdaten in der Hauptdatenbank importiert: DELETE FROM tabkoord; COMMIT; SELECT * FROM tabkoord; INSERT INTO tabkoord (pktnr, ykoord, xkoord) VALUES (1, 660634.772, 244641.123); INSERT INTO tabkoord (pktnr, ykoord, xkoord) VALUES (2, 660617.409, 244653.457); INSERT INTO tabkoord (pktnr, ykoord, xkoord) VALUES (3, 660675.128, 244607.968); INSERT INTO tabkoord (pktnr, ykoord, xkoord) VALUES (4, 660661.096, 244653.276); INSERT INTO tabkoord (pktnr, ykoord, xkoord) VALUES (5, 660660.782, 244601.123); COMMIT; SELECT * FROM tabkoord; ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 44 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Auf die Bildschirme des Servers und der Clients sehen die Startsituationen folgendermassen aus. Startsituation in der Hauptdatenbank: Abbildung 38: Startsituation in der Hauptdatenbank (Ausgangslage) Startsituation auf dem TestclientA: Abbildung 39: Startsituation TestclientA (Ausgangslage) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 45 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Startsituation auf dem TestclientB: Abbildung 40: Startsituation TestclientB (Ausgangslage) 6.6.2 Testfälle Fall 1: TestclientA: Fügt einen neuen Punkt 6 mit den Koordinaten 10.0 und 11.0 ein: Abbildung 41: Punkt einfügen TestclientA (Fall 1) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 46 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Abbildung 42: Neuer Punkt TestclientA (Fall 1) Manuelle Synchronisation starten (verwende die Applikation C:\mobileclient\bin\msync.exe) Abbildung 43: Start msync.exe bei TestclientA (Fall 1) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 47 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Situation in der Hauptdatenbank: Abbildung 44: Situation in der Oracle Hauptdatenbank (Fall 1) Situation TestclientB: Manuelle Synchronisation starten (verwende die Applikation C:\mobileclient\bin\msync.exe) Abbildung 45: Start msync.exe bei TestclientB (Fall 1) Refresh-Button auf dem GUI klicken ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 48 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Abbildung 46: Neuer Punkt TestclientB (Fall 1) Fall 2: TestclientB: Modifiziere den bestehenden Punkt 3 mit folgenden Werten: Y-Koordinaten = 10.0 und X-Koordinaten = 110.0 Selektiere Punkt 3 Abbildung 47: Punkt 3 modifizieren TestclientB (Fall 2) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 49 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Ändere Koordinatenwerte von Punkt 3 Abbildung 48: Situation TestclientB (Fall 2) Punkt 3 ist lokal gespeichert. Manuelle Synchronisation wird gestartet. (verwende die Applikation C:\mobileclient\bin\msync.exe) Abbildung 49: Start msync.exe bei TestclientB (Fall 2) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 50 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Situation in der Hauptdatenbank Abbildung 50: Situation in der Oracle Hauptdatenbank (Fall 2) Situation TestclientA: Manuelle Synchronisation starten (verwende die Applikation C:\mobileclient\bin\msync.exe) Abbildung 51: Start msync.exe bei TestclientA (Fall 2) Refresh-Button auf dem GUI klicken ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 51 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Abbildung 52: Situation TestclientA (Fall 2) Fall 3: Beide Clients fügen „gleichzeitig“ denselben Punkt 7 aber mit diversen Werten ein: TestclientA: Y-Koordinaten = 13.0 und X-Koordinaten = 130.0 Abbildung 53: Situation TestclientA (Fall 3) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 52 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ TestclientB: Y-Koordinaten = 14.0 und X-Koordinaten = 140.0 Abbildung 54: Situation TestclientB (Fall 3) Situation in der Hauptdatenbank: Abbildung 55: Situation in der Oracle Hauptdatenbank (Fall 3) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 53 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Beim gleichzeitigen Synchronisieren entsteht ein Konflikt. Die Daten des Clients B sind permanent gespeichert worden, da er ein bisschen schneller war. Die Daten des Clients A hingegen befinden sich in der ERROR-Queue. Abbildung 56: Fehler-Queue-Datensätze bearbeiten (Fall 3) Nun ist es Aufgabe des Administrators zu entscheiden, welche Daten korrekt sind und in der Datenbank gespeichert werden müssen. Die ERROR-Queue bietet die Möglichkeit die Information entweder zu löschen, zu aktualisieren oder in der Datenbank als weiterer Punkt hinzuzufügen. Wir spielen die Rolle des Administrators und betrachten die Werte des Clients A als korrekt. Um die Werte des Clients A in der Hauptdatenbank zu speichern, geht man wie folgt vor: Wähle „Aktualisieren“ (1), da der Punkt bereits in der Hauptdatenbank mit falschen Werten existiert und speichere (2) die Einstellung. 2 1 Abbildung 57: Fehler-Queue-Datensatz-Detail (Fall 3) Anschliessend klickt man auf „Ausführen“ im Fenster „Fehler-Queue-Transaktionen“. Die Werte des Clients B werden von denen des Clients A in der Hauptdatenbank überschrieben. Abbildung 58: Fehler-Queue-Transaktion (Fall 3) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 54 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Situation TestclientB: Führe jetzt die manuelle Synchronisation beim Client B aus und klicke auf den Refresh-Button des GUI. Das GUI zeigt die Werte von A an! Abbildung 59: Refresh-Situation TestclientA (Fall 3) Um den eigentlichen MGP-Prozess der Konfliktbehebung besser zu verstehen, haben wir die Aufgabe mehrmals wiederholt. Dabei sind wir für unser Testszenarium zu folgendem Fazit gekommen. Fazit: Bei der Erfassung neuer Datensätze durch diverse Clients muss sichergestellt werden, dass die Clients unterschiedliche Punktnummer verwenden. Das entspricht auch die Praxis im Vermessungswesen. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 55 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Fall 4: TestclientA: Löscht den Punkt 3 Abbildung 60: Startsituation TestclientA (Fall 4) Abbildung 61: Endsituation TestclientA (Fall 4) Manuelle Synchronisation starten (verwende die Applikation C:\mobileclient\bin\msync.exe) Refresh-Button auf dem GUI klicken ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 56 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Situation in der Hauptdatenbank Abbildung 62: Situation in der Oracle Hauptdatenbank (Fall 4) Punkt 3 existiert nicht mehr! In der OUT-Queue steht die Information des gelöschten Punkts 3 für den Client B (Benutzer ANGELO) zur Verfügung. Abbildung 63: Out Queue-Publikationen ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 57 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Detail der Information Abbildung 64: Out Queue-Detailinformation (Fall 4) TestclientB: Unmittelbar danach ändert die Koordinaten des Punkts 3 (Y=1234; X=4321) Selektiere Punkt 3 Abbildung 65: Startsituation TestclientB (Fall 4) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 58 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Ändere Koordinatenwerte von Punkt 3 Abbildung 66: Punkt 3 modifizieren TestclientB (Fall 4) Situation TestclientB: Abbildung 67: Endsituation TestclientB (Fall 4) Manuelle Synchronisation starten (verwende die Applikation C:\mobileclient\bin\msync.exe) Refresh-Button auf dem GUI klicken ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 59 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Situation in der Hauptdatenbank Abbildung 68: Situation in der Oracle Hauptdatenbank (Fall 4) Der aktualisierte Punkt 3 vom Client B erscheint nicht in der Hauptdatenbank, weil er einen Konflikt ausgelöst hat. Im OUT-Queue stand die Information des gelöschten Punkts 3 (vom Client A) für ihn bereit. Gleichzeitig setzt der Client B den Punkt 3 in der IN-Queue. Daraus erfolgt der Konflikt! Abbildung 69: Fehler-Queue Info (Fall 4) Abbildung 70: Fehler-Queue-Datensatz-Detail (Fall 4) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 60 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Fazit: Ähnlich wie bei der Aufgabe 3 muss nun der Administrator entscheiden, wie der Konflikt zu lösen ist. Wir beschliessen den Punkt 3 des Clients B in die Datenbank zu speichern. Wähle im Feld „DML aktualisieren“ diesmal „Einfügen“ (1), da der Punkt in der Hauptdatenbank nicht mehr existiert und speichere (2) die Einstellung. 1 2 Abbildung 71: Fehler-Queue-Datensatz „Einfügen“ (Fall 4) Anschliessend klickt man auf „Ausführen“ im Fenster „Fehler-Queue-Transaktionen“ (für Ausführungsdetails siehe Aufgabe 3). Abbildung 72: In Queue Info (Fall 4) Der MGP-Prozess bearbeitet die IN-Queue und stellt die Modifikation in der OUT-Queue für den betroffenen Client bereit. Dann synchronisiert der Client A erneut. Und er besitzt wieder den Punkt 3 in seiner lokalen Datenbank. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 61 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Fall 5: Lösche den Punkt 3 direkt aus der Hauptdatenbank Abbildung 73: Verbindung mit der Oracle Hauptdatenbank (Fall 5) Abbildung 74: Punkt 3 in der Oracle Hauptdatenbank löschen (Fall 5) Manuelle Synchronisation starten (verwende die Applikation C:\mobileclient\bin\msync.exe) Refresh-Button auf dem GUI klicken ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 62 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Situation TestclientA & B: Abbildung 75: Situationen TestclientA & B (Fall 5) Fall 6: Modifiziere die Koordinatenwerte des Punkts 6 direkt in der Hauptdatenbank Y = 1234 und X = 4321 Abbildung 76: Verbindung mit der Oracle Hauptdatenbank (Fall 6) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 63 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Abbildung 77: Punkt 6 in der Oracle Hauptdatenbank modifizieren (Fall 6) Abbildung 78: Situation in der Oracle Hauptdatenbank (Fall 6) Manuelle Synchronisation starten (verwende die Applikation C:\mobileclient\bin\msync.exe) Refresh-Button auf dem GUI klicken ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 64 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Situation TestclientA & B: Abbildung 79: Situationen TestclientA & B (Fall 6) Fall 7: Bemerkung: Die Clients müssen bei einer manuellen Synchronisation nicht offline gesetzt werden, denn die Synchronisierung findet erst beim Starten der Applikation msync statt. Bedingung: Vorgängig wird die ursprüngliche Ausgangslage wiederhergestellt. Skript „Stammdaten.sql“ in die Hauptdatenbank importieren TestclientA: Füge 2 neue Punkte ein Punkt 6 (Y = 1234; X = 4321) und Punkt 7 (Y = 9876; X = 6789) TestclientB: Füge 2 weitere Punkte ein Punkt 8 (Y = 1234; X = 4321) und Punkt 9 (Y = 9876; X = 6789) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 65 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Situation in der Hauptdatenbank: Abbildung 80: Situation in der Oracle Hauptdatenbank (Fall 7) Situation TestclientA & B: Abbildung 81: Situationen TestclientA und TestclientB (Fall 7) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 66 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Trage die entsprechenden Punkte in den jeweiligen Client ein. TestclientA: Abbildung 82: Punkte 6 und 7 einfügen TestclientA (Fall 7) TestclientB: Abbildung 83: Punkte 8 und 9 einfügen TestclientB (Fall 7) Manuelle Synchronisation auf beide Clients gleichzeitig starten (verwende die Applikation C:\mobileclient\bin\msync.exe) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 67 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Situation in der IN-Queue: Abbildung 84: Situation in der In Queue (Fall 7) Situation in der Hauptdatenbank „vermdb“ nach dem der MGP-Prozess beendet ist: Abbildung 85: Situation in der Oracle Hauptdatenbank (Fall 7) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 68 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Situation in der OUT-Queue nach dem der MGP-Prozess beendet ist: OUT-Queue für TestclientB (User ANGELO) Abbildung 86: Situation in der Out Queue für TestclientB (Fall 7) OUT-Queue für TestclientA (User ISIDORO) Abbildung 87: Situation in der Out Queue für TestclientA (Fall 7) Manuelle Synchronisation auf beide Clients gleichzeitig starten (verwende die Applikation C:\mobileclient\bin\msync.exe) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 69 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Situation TestclientA: Nach dem Klicken des „Refresh“-Buttons auf unserem GUI erscheinen nun auch die Punkte des TestclientB. Punkte, die vom Client B stammen Abbildung 88: Refresh-Situation TestclientA (Fall 7) Situation TestclientB: Nach dem Klicken des „Refresh“-Buttons auf unserem GUI erscheinen nun auch die Punkte des TestclientA. Punkte, die vom Client A stammen Abbildung 89: Refresh-Situation TestclientB (Fall 7) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 70 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Fall 8: Aufgabenstellung Die Clients sind offline und in der Hauptdatenbank soll direkt ein Punkt modifiziert werden. Änderung: Punkt 3 mit Koordinaten Y = 7654.321 und X = 1234.567 Bemerkung: Die Clients müssen bei einer manuellen Synchronisation nicht offline gesetzt werden, denn die Synchronisierung findet erst beim Starten der Applikation msync statt. Fazit: Die Aufgabe 8 entspricht der obigen Aufgabe 6 und endet somit hier. 6.6.3 Quintesenz der Testfälle beim System I Die gesamte Testprozedur wurde mindestens dreimal durchlaufen. Am Anfang haben wir unsere Tests mit der automatischen Synchronisation durchgeführt. Und die Tests liefen alle glimplfich ab. Es gab überhaupt keine Konflikte. Dies entsprach nicht unsere Erwartung. Deshalb untersuchten wir den Fall näher. Mit den von uns festgelegten Schwellenwerten wurde nach jeder Änderung eine automatische Synchronisation gestartet. Somit kam es nie zu Konflikten. Erst bei der Durchführung der manuellen Synchronisation traten bei den Fällen 3 und 4 die erwarteten Konflikte auf. Zum Nachteil für die Clients, werden sie darüber vom System gar nicht informiert. Aber mit Hilfe der ERROR-Queue kann der Administrator diese Konflikte leicht ermitteln und auch einfach beheben. In einem kleinen Benutzerumfeld sollten die Konfliktfälle sehr selten auftreten. Die Wahrscheinlichkeit, dass zwei Clients den gleichen Datensatz gleichzeitig ändern und synchronisieren, ist klein. Ausserdem muss bei der Erfassung neuer Datensätze durch diverse Clients sichergestellt werden, dass die Clients unterschiedliche Punktnummer verwenden. Das entspricht auch die Praxis im Vermessungswesen. Mit regelmässigem Synchronisieren in kurzen Zeitabständen können zusätzlich Konflikte vermieden werden. Ein gleichzeitiges Synchronisieren ist zu vermeiden! Sollten dennoch Konflikte entstehen, löst diese schliesslich der Administrator nach Rücksprache mit den Anwendern auf. Die offline-Fälle 7 und 8 machen nur bei einer automatischen Synchronisation Sinn. Aufgabe 8 entspricht bei einer manuellen Synchronisation der Aufgabe 6. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 71 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 7 System II 7.1 Einleitung Als nächstes System haben wir beschlossen ein Open Source-System zu evaluieren. Bei der Suche dieses Systems haben wir uns zu Beginn folgende Bedingungen festgelegt: • Das System muss eine analoge Testumgebung respektive Aufbau wie Oracle Database Lite anbieten, aber gegenüber Oracle Database Lite ein heterogenes System sein. • Es soll kosten- und lizenzfrei sein. Während unserem Studium lernten wir nebst der Datenbank Oracle auch MySQL kennen. Aus diesem Grund nahmen wir als erstes MySQL als Open Source-System unter Betracht. Wir wollten wissen, ob MySQL eine analoge Systemumgebung wie Oracle bot. Leider stellten wir rasch fest, dass MySQL eine Umgebung mit Drittanbieter und bidirektionale Synchronisation zur Verfügung stellt, welche aber mit Kosten verbunden ist. Standardmässig sind die MySQL-Funktionen für Replikationen von einem MySQL-Datenbankserver (Master) zu einem oder mehreren MySQL-Datenbankserver (Slave) nur auf einer EinwegSynchronisation (asynchron) eingestellt. Da MySQL keine bidirektionale Synchronisation unterstützt, suchten wir im Internet nach einem geeigneten System weiter. Bei den Firmen Synthesis AG und Funambol sind wir dann auf Produkten gestossen, welche unseren Anforderungen am Nächsten entsprachen. Obwohl die Produkte beider Firmen sich sehr ähneln, fiel die Wahl auf Funambol aus. Es war auch eine schnell beschlossene Sache, da die Produkte von der Firma Synthesis kostenpflichtig sind. Bei einem Gespräch konnte zudem unser Examinator Herr Wyss einige Input über Funambol liefern. Dies machte uns auch die Auswahl leichter. Funambol bietet die Schnittstelle zwischen eine Hauptdatenbank und den lokalen Datenbanken auf den mobilen Geräten und die bidirektionale Synchronisation an, läuft ebenfalls auf die Plattformen (Windows und Linux), ist 100prozentig auf Java entwickelt worden und unterstützt die Datenbanken MySQL, HSQLDB und PostgreSQL. Ferner stellt sie mehrere PIM-Clients (Personal Information Manager) für die Synchronisation von Kalender-, E-Mailsdaten usw. standardmässig zur Verfügung. Zu ihrem Nachteil besteht aber kein Client für unsere Aufgabe. Wir entwickelten daher aus den Funambol-Dokumentationen einen eigenen Client und Connector. 7.2 Aufbau Auf dem physischen Rechner wird ein VMware-Rechner mit Windows Server 2003 Betriebssystem aufgesetzt. Dort wird der Funambol Server (Server Bundles) samt Komponenten (unter anderem unser eigen entwickelte Connector) installiert. Ebenfalls auf dieser virtuellen Maschine befindet sich unsere Back-End-Datenbank. Als Back-EndDatenbank wird MySQL über XAMPP verwendet. XAMPP ist eine Ansammlung von Open Source-Software, welche verschiedene Server (Apache Webserver, FTP-, FileZilla-, Mercury-Server), MySQL Datenbank und Verwaltungsfunktionen bietet. Auf dem mobilen Gerät wie Notebook und Desktop wird unser entwickelte Funambol-Client mit der HSQL Datenbank, die als lokale Datenbank dient und unser Prototyp GUI „survey“ installiert. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 72 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 7.2.1 Übersicht unserer Test-Umgebung Das nachfolgende Bild zeigt eine Übersicht unserer Test-Umgebung: Abbildung 90: Systemübersicht II der Test-Umgebung 7.3 SyncML Technologie Die SyncML Technologie ermöglicht den Datenaustausch zwischen zwei Anwendungsgeräten. Veränderte Daten werden zwischen zwei Datenbanken abgeglichen beziehungsweise eine lokale Datenbank wird von der Hauptdatenbank aktualisiert oder umgekehrt. Das bekannteste Beispiel ist die Synchronisierung von PIM-Daten zwischen einem Desktop und einem Handheld-Gerät. PIM steht für Personal Information Manager und ist eine Software, die persönliche Daten wie Kontakte, Termine, Aufgaben, Notizen und E-Mails verwaltet. SyncML geht sogar noch weiter und synchronisiert jede Art von Daten. Allerdings ist der häufigste Einsatz somit verbunden, dass jedes Gerät seine Änderungen einem Server in unserem Fall dem Funambol DS Server (DS steht für Data Synchronization) mitteilt. Die Back-End-Datenbank enthält immer die neuesten up-to-date Datensätze, damit andere Clients ihren Datenbestand aktualisieren können. Durch diese einfache SynchronisierungsTechnologie muss jedes Gerät nur einen Server kennen. Die untere Abbildung gibt einen Überblick über SyncML. Auf der linken Seite sind die verschiedenen Geräte vom HandheldGerät bis zum Desktop-PC zu sehen. Diese kommunizieren mit dem SyncML-Protokoll über das Internet und/oder über mobile Netze mit dem Funambol DS Server. Alle Geräte synchronisieren mit dem Server über eine 1:1-Synchronisierung. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 73 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Abbildung 91: SyncML Technologie Quelle Funambol Data Synchronization Server Overview 7.3.1 SyncML Protokoll Das SyncML Protokoll basiert auf XML. Das Transport-Protokoll kann HTTP-oder OBEX (Object Exchange Protocol) sein. Eine SyncML-Sitzung besteht aus vier Phasen: 1.) Die Server-Benachrichtigungs-Phase (Server Alert Phase) ist optional und kann als PreInitialisierungs-Phase betrachtet werden. Sein Hauptzweck ist es, einen Client zu informieren, dass der Server zur Synchronisierung bereit steht. 2.) Die Initialisierungs-Phase (Initialization Phase) wird vom Client (mobiles Gerät) gestartet. Eine SyncML-Sitzung wird aufgebaut, um die Clientdaten mit dem Server zu synchronisieren. In dieser Phase werden die Benutzer-Authentifizierung, die Datenbankzugriff-Autorisierung, die Austauschfähigkeit, der Synchronisierungsinhalt und -art und eine Übereinstimmungsprüfung behandelt. 3.) Die Datenaustausch-Phase (Data Exchange Phase) führt die eigentliche Datenübertragung aus. Als erster startet der Client und übergibt seine Änderungen dem Server. Der Server seinerseits nimmt die Daten entgegen und überprüft sie auf Widersprüche (Konflikt). Anschliessend schickt der Server seine Änderungen dem Client zu. 4.) Bei der Abschluss-Phase (Completion Phase) wird dem Server mitgeteilt, welches Abbild (Mapping) abgefertigt wurde. Der Server stimmt mit dem Acknowledge zu und schliesst somit die Sitzung ab. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 74 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Abbildung 92: SyncML Protokoll Quelle Funambol Data Synchronization Server Overview Das obige Abbild stellt eine zeitlich basierte Anordnung der vier Phasen. 7.4 Funambol DS Server Architektur Der Funambol DS Server läuft entweder mit den Applikations-Servern Tomcat oder JBoss. Der Applikations-Server bildet die Basis. Auf diesem Applikations-Server wird der Funambol DS Server aufgesetzt. Im Bundle ist bereits Apache Tomcat enthalten. Weiter enthält der Bundle folgende Komponenten: • Java Runtime Environment (JRE) • Hypersonic (JDBC-compliant) Database (HSQLDB) • Funambol Administration Tool • Software-Zubehör für Anwendung von Datensynchronisation Der Funambol DS Server unterstützt neben der Standarddatenbank HSQLDB auch noch MySQL und PostgreSQL als Back-End-Datenbanken. Bei der Anwendung von MySQL oder PostgreSQL muss sowohl die Datenbank-Software wie auch den notwendigen JDBC-Treiber installiert werden. Der Funambol DS Server besteht aus folgenden Komponenten: • Sync Adaptor • Input- und Output Pipeline Manager • Sync Engine • Sync Source ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 75 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Die untenstehende Grafik zeigt die Zusammenhänge sowie den Datenaustausch der Synchronisation. Abbildung 93: Funambol DS Server Architektur Quelle Funambol Data Synchronization Server Overview 7.4.1 Sync Adaptor (Protocol Transport Mapper) Der Sync Adaptor nimmt XML-basierte SyncML-Nachrichten aus der HTTP-TransportSchicht entgegen, wandelt sie um und übergibt sie dem Input Pipeline Manager. Auf der anderen Seite nimmt der Sync Adaptor vom Output Pipeline Manager ausgehende Nachrichten entgegen, wandelt sie zu SyncML-Nachrichten um und sendet sie via HTTP zum Gerät. 7.4.2 Pipeline Manager Der In- und Output Pipeline Manager ist im Prinzip gleich. Ihr einzige Unterschied besteht darin, dass ein für eingehende Nachrichten und der andere für ausgehende Nachrichten zuständig ist. Ferner verrichten sie folgende Arbeiten: • Fehlerhafte Nachrichten werden detektiert • Eingehende Nachrichten werden blockiert, die man nicht bearbeiten möchte • Die Prozesse werden protokolliert 7.4.3 Sync Engine Die Sync Engine ist das Herz des Funambol DS Servers und befasst sich mit den Funktionen des SyncML Protokolls. Sie wickelt drei Phasen ab: Initialisierung, Datenaustausch und Finalisierung und weist die Funktionen wie Autorisierung, Erkennung, Konfliktlösung, und ID-Mapping auf. Der Benutzer kann die Zugriffs- und Konfliktlösungsfunktionen ändern. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 76 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 7.4.4 Sync Source Der Sync Source (auch als Connector bezeichnet) bildet die Schnittstelle zur Back-EndDatenbank und greift auf die von einem mobilen Gerät zu synchronisierenden Daten zu. Eine Sync Engine kann mehrere Sync Sources haben. Auch können mehrere Sync Sources auf die gleichen Daten eingesetzt werden. Dies kann nützlich sein, wenn die abgerufenen Daten in der Sync Source zusätzlich verarbeiten werden müssen. Für einen sicheren Zugriff auf die Datenspeicherung muss der Connector auf die jeweilige Anwendung erweitert respektive angepasst werden. Seine Hauptaufgabe ist die SyncML relevanten Protokollausgaben zu maskieren und mit den bekannten Methoden get/create/update/delete zu operieren. Der Connector wird als Modul im Funambol DS Server implementiert. 7.5 Installationsablauf des Systems II 7.5.1 Installation auf dem Server Vorbedingung: Der Funambol Server MT-FUNAMBOL (Windows Server 2003) steht als virtuelle Maschine bereit. 1.) Installiere die Funambol DS auf dem Server (siehe Dokument „MT_ Installation_Funambol.pdf“ im Verzeichnis „Funambol\Install_Docs“ auf der beigelegten DVD). 2.) Installiere die Software-Zusammenstellung XAMPP auf dem Server, damit die MySQL Datenbank zur Verfügung steht (siehe Dokument „MT_Installation_XAMPP.pdf“ im Verzeichnis „Funambol\Install_Docs“ auf der beigelegten DVD). 3.) Starte mit Hilfe des XAMPP-Control-GUI den Apache Web-Server und die MySQL Datenbank Abbildung 94: XAMPP Control-GUI Panel ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 77 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 4.) Erstelle eine neue Datenbank mit dem Namen „vermdb“ entweder mit dem XAMPP Portal (http://localhost), siehe 4.a) oder über die Kommando-Konsole, siehe 4.b). a.) Das Portal bietet das Werkzeug „phpMyAdmin“, um die Datenbanken zu verwalten. Abbildung 95: XAMPP phpMyAdmin Tool Abbildung 96: XAMPP Create new database Ausschnitt b.) Um die Datenbank zu erstellen, muss man sich zuerst mit der MySQL Datenbank verbinden: mysql -uroot Anschliessend erzeuge die neue Datenbank “vermdb” mit dem Befehl: CREATE DATABASE vermdb; Abbildung 97: Kommando-Konsole create database vermdb 5.) Erstelle die Tabelle „tabkoord“ in das Schema „vermsys“. Es gibt dabei zwei Möglichkeiten entweder über das XAMPP-Portal, siehe 5.a) oder über die KommandoKonsole, siehe 5.b). Verwende für beide Fälle den SQL Statement: CREATE TABLE tabkoord (pktnr VARCHAR(4) NOT NULL, ykoord VARCHAR(9) NOT NULL, xkoord VARCHAR(9) NOT NULL, fmbstatus CHAR(1) NOT NULL, fmbtimestamp TIMESTAMP NOT NULL, PRIMARY KEY (pktnr)); ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 78 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ a.) Via XAMPP-Portal: Abbildung 98: XAMPP phpMyAdmin SQL query b.) via Kommando-Konsole: Verbinden mit der neuen Datenbank „vermdb“ mysql -uroot use vermdb; Abbildung 99: Kommando-Konsole create table tabkoord 6.) Erstelle den Datenbankbenutzer „VERMSYS“ mit Passwort Verwende dafür die SQL Statements: CREATE USER vermsys; SET PASSWORD FOR vermsys = PASSWORD('vermsys'); GRANT all ON vermdb.* TO vermsys; ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 79 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Auch diese Statements können entweder mit dem XAMPP Portal oder mit der Kommando-Konsole ausgeführt werden. (siehe Vorgehen im Punkt 5.)) 7.) Konfiguriere den Funambol-Zugriff auf die MySQL Datenbank. Dabei muss die Datei „Funambol\ds-server\install.properties“ editiert werden. Eine Kopie der Datei befindet sich im Verzeichnis „Funambol\Config-Files“ auf der beigelegten DVD. Folgende Anpassung ist in den Zeilen notwendig: dbms=mysql jdbc.classpath=../tools/jre-1.5.0/jre/lib/ext/mysql-connector-java-5.0.3-bin.jar jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost/vermdb?characterEncoding=UTF-8 jdbc.user=vermsys jdbc.password=vermsys Tipp: Wir schlagen vor, die zu ändernden Zeilen zu kopieren und die Originalzeilen mit dem Hash-Zeichen(‚#’) auszukommentieren. Hier ein Beispiel: # dbms=hypersonic dbms=mysql 8.) Kopiere den JDBC-Treiber für MySQL „mysql-connector-java-5.0.3-bin.jar“ im Verzeichnis „Funambol\tools\jre-1.5.0\jre\lib\ext“. 9.) Erzeuge das notwendige Funambol-Schema in die MySQL Datenbank. Starte aus der Kommando-Konsole die cmd-Datei „Funambol\bin\install.cmd“. Bestätige mit „y“ (für yes) die Installation jedes Moduls. 7.5.2 Starten und Stoppen des Funambol DS Servers Bedingung: Die Back-End-Datenbank muss hochgefahren sein. Auf dem Windows-Server kann die Applikation über die Verknüpfung gestartet und gestoppt werden: Abbildung 100: Funambol DS Server starten und stoppen Oder es besteht die Möglichkeit den Funambol DS Server via Kommando-Zeile zu starten respektive zu stoppen. ...\Funambol\bin\restartall.cmd ...\Funambol\bin\stopall.cmd ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 80 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 7.5.3 Installation auf dem Client Vorbedingung: Die Testrechner TestclientC (Windows XP) und TestClientD (Windows XP) stehen als virtuelle Maschinen bereit. Java Runtime Environment (JRE) 6 (jre-6u11-windowsi586-p.exe) muss auf den Testclient installiert sein. 1.) HSQLDB Datenbank: Entpacke die Datei „hsqldb_1_8_0_10.zip“ und kopiere das Verzeichnis hsqldb direkt auf der C:\ Partition des Testclients. Um die Datenbank hochzufahren, muss unser bat-File „Start_HSQLDB_Server.bat“ gestartet werden, welche man im Verzeichnis C:\hsqldb kopiert. Das bat-File startet HSQLDB im Server Modus. Inhalt des Files „Start_HSQLDB_Server.bat“: set JAVA_HOME=C:\Program Files\Java\jre6 set HSQLDB_HOME=C:\hsqldb cd C:\hsqldb java -cp %HSQLDB_HOME%\lib\hsqldb.jar org.hsqldb.Server -database.0 file:localvermdb dbname.0 localvermdb Eine Kopie der Datei befindet sich im Verzeichnis „Tools\Databases\hsqldb“ auf der beigelegten DVD. 2.) Prototyp GUI: Erstelle ein neues Verzeichnis namens „survey“ direkt auf der C:\ Partition und kopiere unser survey.jar hinein. Eine Kopie der Datei befindet sich im Verzeichnis „PrototypGUI_Java\Client\survey“ auf der beigelegten DVD. 3.) SyncML Client: Erstelle ein neues Verzeichnis „C:\VermSyncClient“ und kopiere den Inhalt vom Verzeichnis „target“ aus unserem „VermSyncMLClient“ Projektverzeichnis. Das Verzeichnis „target“ wurde durch die Build-Prozedur von ANT erstellt. Eine Kopie von unserem Synchronisierungs-Client befindet sich im Verzeichnis „Funambol\VermSyncClient“ auf der beigelegten DVD. 4.) Editiere die Datei C:\VermSyncClient\config\spds\syncml.properties und passe die Variablen username, password und device-id je nach Bedürfnissen an. Als Beispiel für den TestclientD: username=test1 password=test1 device-id=Sync4jVerm1 7.6 Funambol Administration Tool Um den Funambol DS Server zu verwalten, kann das Funambol Administration Tool eingesetzt werden. Mit seiner Hilfe können sehr einfach die Servereigenschaften, die Benutzer, die mobilen Geräte, die Principals (Kombination aus Benutzer und Gerät) und die Module verwaltet werden. Während unserer Master Thesis haben wir uns nur ein bisschen mit den Aufgaben der Benutzer-, Geräte- und Modulverwaltung befasst. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 81 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Abbildung 101: Funambol Administration Tool GUI Das Hauptfenster besteht links aus dem Navigations-, rechts aus dem Konfigurations- und unten aus dem Nachrichtenbereich. Navigationsbereich Sobald man mit dem Funambol-Server angemeldet ist, wird er im Navigationsbereich angezeigt. Die zu konfigurierenden Aufgaben werden in einer baumförmigen Struktur darunter angezeigt. Konfigurationsbereich Die Eigenschaften der im Navigationsbereich selektierten Aufgabe werden angezeigt. Hier können ihre Werte angepasst werden. Nebst der Modifikation der Werte können auch Benutzer und Geräte hinzugefügt oder gelöscht werden. Nachrichtenbereich Die Statusnachrichten des Administration Tools werden hier angezeigt. Um sich mit dem Funambol DS Server zu verbinden, wählt man das Menü „File | Login“ aus: Abbildung 102: Anmelden an Funambol Administration Tool Das Anmelde-Fenster wird gestartet. Man gibt den Namen und das Passwort eines Administrators (Standard: Admin/sa) an, um die Verbindung zu erlauben. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 82 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Abbildung 103: Anmeldepanel Funambol Administration Tool 7.6.1 Benutzerverwaltung Mit einem Doppelklick auf das Menü „Users“ im Navigationsbereich wird das Suchfenster der Benutzer geöffnet. Mit Hilfe von Filtereinstellungen können nach bestimmten Benutzern gesucht und angezeigt werden. Zudem besteht die Möglichkeit weitere Benutzer anzulegen („Add“), bestehende Benutzer zu modifizieren („Edit“) oder sie zu löschen („Delete“). Abbildung 104: Administration Tool - Search Users ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 83 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Mit „Add“ kann ein Benutzer hinzugefügt werden. Alle Felder (Username, Password, Lastname usw.) im neu öffnenden Fenster „Add User“ müssen ausgefüllt werden, ansonsten wird der neue Benutzer nicht angelegt. Dem Anwender muss eine der zwei Rollen zugewiesen werden (selektiere die entsprechende Rolle). Abbildung 105: Administration Tool - Add User Ein Benutzer mit der Rolle „User“ ist berechtigt, die Synchronisation mit dem Server abzuwickeln. Ein Benutzer mit der Rolle „Administration“ besitzt die Rechte, sich mit dem Funambol Administration Tool am Server zu verbinden und ihn zu verwalten. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 84 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Abbildung 106: Add User mit selektierter Rolle 7.6.2 Geräteverwaltung Mit einem Doppelklick auf das Menü „Devices“ im Navigationsbereich wird das Suchfenster der Geräte geöffnet. Auch hier kann mit den Filtereinstellungen nach Geräten gesucht werden. Bestehende Geräte können geändert („Edit“) oder gelöscht („Delete“) werden. Neue Geräte können hinzugefügt werden („Add“). Wir raten ab, es manuell zu tun, denn bei der ersten Synchronisierung wird das Gerät automatisch erfasst. Die Eigenschaften der Datei „syncml.properties“ des SyncML Clients dienen als Info zur Erstellung des Eintrags. Mit „Capabilities“ wird nur die Fähigkeit des Geräts angezeigt. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 85 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Abbildung 107: Administration Tool - Search Devices 7.6.3 Principal Verwaltung Funambol verwendet beim Synchronisieren das “Principal“-Verfahren. Mit diesem Verfahren werden die zu synchronisierenden Daten nicht am falschen Gerät übergeben. Principal ist eine Kombination aus dem Funambol-Benutzer und dem mobilen Gerät. Jede Kombination ist eindeutig im System hinterlegt. Dieses Verfahren erlaubt, dass ein Benutzer mehrere Geräte verwenden kann oder dass ein Gerät von mehreren Benutzern verwendet wird. Mit einem Doppelklick auf dem Menü „Principal“ im Navigationsbereich wird das Suchfenster geöffnet, wie unteres Abbild zeigt. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 86 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Abbildung 108: Administration Tool - Search Principals Mit Hilfe der Filtereinstellung können nach bestimmten Benutzer/Gerät-Kombinationen gesucht und angezeigt werden. Ohne Einstellung und Sucheingabe können alle Daten angezeigt werden. Funambol erstellt automatisch bei der ersten Synchronisierung den Principal. Die manuelle Erstellung des Principals soll nur bei Ausnahmen durchgeführt werden. Add Wie nachfolgendes Bild zeigt, kann mit „Add“ manuell ein Principal hinzugefügt werden. Abbildung 109: Administration Tool - Add Principals ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 87 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Auch hier kann mit der Filtereinstellung gearbeitet werden. Links werden die Benutzer und rechts werden die mobilen Geräte angezeigt, die bereits im System erfasst sind. Um einen neuen Principal zu erzeugen, selektiert man den Benutzer und das Gerät und klickt zum Schluss auf die Schaltfläche „Add Principal“. Abbildung 110: Selektierter Benutzer und Gerät Der soeben erstellte Principal erhält eine eindeutige ID-Nummer. Abbildung 111: Neuer Principal hinzugefügt Delete Mit „Delete“ können Principals gelöscht werden. Das Löschen eines „Principal“-Eintrags zwingt den Funambol Server bei der nächsten Synchronisation zu einer sogenannten „Slow“Synchronisation (auch als „Full“ Synchronisation bezeichnet). Alle Daten des Servers und des Clients nehmen an der Synchronisation teil. Dieser Prozess wird auch automatisch ausgeführt, sobald ein Gerät die allererste Synchronisation zum Server startet. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 88 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Details Mit „Details“ werden die Informationen der letzten Synchronisation angezeigt. Abbildung 112: Administration Tool - Last Synchronization Timestamps Jede Spalte wird hier in der unteren Tabelle kurz erklärt: Spaltenname Beschreibung Database Gibt den vom Principal verwendeten SyncSource an. In unserem Fall heisst er acme1. Sync Type Zeigt die Art der Synchronisation an: - TWO_WAY - SLOW - ONE_WAY_FROM_CLIENT - REFRESH_FROM_CLIENT - ONE_WAY_FROM_SERVER - REFRESH_FROM_SERVER Status Zeigt den Synchronisationsstatus-Code an: - 200 -> TWO_WAY - 201 -> SLOW - 202 -> ONE_WAY_FROM_CLIENT - 203 -> REFRESH_FROM_CLIENT - 204 -> ONE_WAY_FROM_SERVER - 205 -> REFRESH_FROM_SERVER Client anchor Zeigt den zuletzt verwendeten Client anchor (Verankerung) an. Server anchor Zeigt den zuletzt verwendeten Server anchor (Verankerung) an. Start Zeigt die Startzeit der letzten Synchronisation an. End Zeigt die Endzeit der letzten Synchronisation an. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 89 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Refresh Mit „Refresh“ kann die Information aktualisiert werden. Reset Mit „Reset“ wird die Synchronisationsinformation gelöscht und zwingt den Client bei der nächsten Synchronisation alle Elemente zu aktualisieren (Full-Synchronisation). 7.6.4 Modulverwaltung Die Baumstruktur der Module im Navigationsbereich wird beim Installieren des Moduls erstellt. Dabei dient die Information aus der Datei „init_schema.sql“. Rechter Mausklick auf dem Sync Source Typ um einen neuen Modulverwaltungs-Fenster zu erzeugen. Abbildung 113: Administration Tool - Add SyncSource Und fülle die entsprechende Werte aus und klicke auf „Add“: Abbildung 114: Administration Tool - Edit My SyncSource Mit einem Doppelklick auf dem Connector im Navigationsbereich wird das Eigenschaftsfenster des Connectors geöffnet. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 90 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Abbildung 115: Selektiere SyncSource Abbildung 116: Speichern der Anpassung Die Eigenschaften des Moduls werden in der XML-basierte Datei „Funambol\config\<modulName>\<Connector-Name>\<SyncSourceType>\<sourceURL>.xml auf dem Funambol Server festgehalten. In unserem Fall befindet sich die Datei „acme1.xml“ im Verzeichnis „C:\Funambol\config\acme\acmeconnector\mymergeablesyncsource“. Wir haben unsere Konfigurationen direkt in der Datei „acme1.xml“ durchgeführt und haben somit das Administration Tool fast nicht verwendet. Wir haben auch zusätzliche Variablen händisch hinzugefügt. Eine Kopie der Datei befindet sich im Verzeichnis „Funambol\ConfigFiles“ auf der beigelegten DVD. 7.7 Der Synchronisationsprozess Der Synchronisationsprozess besteht aus drei Phasen, die von Funambol der Reihe nach verarbeitet und koordiniert ausgeführt werden. Hier die drei Phasen: 1. Vorbereitung (Preparation) 2. Synchronisation (Synchronization) 3. Beendigung (Finalization) Es gibt verschiedene Synchronisationsarten. Die für uns wichtigen Arten sind die „Slow“ Synchronisation (auch als „Full“ Synchronisation bekannt) und die „Fast“ Synchronisation. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 91 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Die „Fast“ Synchronisation berücksichtigt nur die Elemente, die seit der letzten Synchronisation modifiziert respektive erstellt wurden. Hingegen nehmen bei der „Full“ Synchronisation (unabhängig von vorherigen Synchronisationen) alle Elemente an dem Datenausgleich teil. Beide Synchronisationen können folgendes Verhalten aufweisen: • Client zum Server: - Der Server aktualisiert seine Daten mit der des Clients. Er sendet aber seine Änderungen nicht an den Client. • Server zum Client: - Der Server sendet seine Änderungen an den Datenänderungen des Clients hingegen nicht. • Client und bekommt die TWO_WAY: - Beide (Server und Client) tauschen ihre Änderungen aus. Hier die Synchronisierungsarten, die vom SyncML Protokoll verwendet werden: Synchronisierungsarten Beschreibung TWO_WAY sync (fast) Client und Server tauschen die Information der modifizierten Daten aus, die seit der letzten Synchronisation entstanden ist. Zuerst sendet der Client seine Änderung. SLOW sync SLOW sync ist ebenfalls eine TWO_WAY sync, bei denen alle Daten beteiligt sind. Die Daten werden im sogenannten Field-by-Field-Verfahren analysiert. Das heisst, der Client sendet alle seine Daten an den Server. Dieser vergleicht sie Feld für Feld mit seiner Daten. ONE_WAY sync nur vom Client Der Client sendet seine Änderung an den Server, aber der Server sendet seine Änderung nicht zurück. REFRESH sync nur vom Client Der Client sendet alle seine Daten an den Server. Der Server aktualisiert seine Daten mit denjenigen des Clients. ONE_WAY sync nur vom Server Der Client erhält die Änderung vom Server. Der Client sendet aber seine geänderten Daten nicht an den Server zurück. REFRESH sync nur vom Server Der Server sendet alle seine Daten an den Client. Der Client aktualisiert seine Daten mit denjenigen des Servers. Server Alerted sync Der Server benachrichtigt den Client, um eine spezifizierte Synchronisation mit ihm zu starten. Wie schon oben erwähnt, sind die TWO_WAY Synchronisationen die wichtigsten Arten. Die übrigen sind von ihnen abgeleitet. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 92 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 7.7.1 Phase Vorbereitung (Preparation) Die Vorbereitungsphase analysiert die Differenz zwischen zwei oder mehrere Datenquellen (auch als SyncSources bezeichnet), um eine Liste der Synchronisationsoperationen zu erhalten. Diese Funktionen kommen während der Synchronisation gezielt zum Einsatz. Abbildung 117: Phase Vorbereitung (Preparation) Quelle Funambol Developer's Guide funambol-developers-guide.pdf 7.7.2 Phase Synchronisation (Synchronization) In der Synchronisationsphase werden die Operationen ausgeführt, die während der Vorbereitungsphase ermittelt wurden. Das Ausführen der Funktion bestätigt die erforderliche Änderung in der beteiligten Datenquelle. Diese Aktion wird von der Synchronisationsmaschine (sync engine) abgewickelt. 7.7.3 Phase Beendigung (Finalization) Diese Phase ist der letzte Schritt, der den Synchronisierungsprozess durchläuft. Während dieser Phase sind Säuberungsaktionen vorgesehen. Weiter sendet der Client die LUID-GUID mapping der soeben durchgeführten Synchronisation. ID Verwaltung Die Daten sind in einer zentralen Datenbank abgelegt und stehen allen Beteiligten zur Verfügung. Jedes Element ist vom System mit einer ID eindeutig identifizierbar. Client und Server generieren ihre eigenen IDs. Client-seitig werden die IDs als Local Unique IDentifiers (LUID) und auf dem Server als Global Unique IDentifiers (GUID) bezeichnet. Ein Abbild von beiden Systemen wird aufrechterhaltet. Das Abbild zwischen den Local Unique IDentifiers und den Global Unique IDentifiers (GUID) wird als LUID-GUID mapping bezeichnet. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 93 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 7.8 Entwicklungsumgebung Connector Da Funambol kein geeigneter Connector für unsere Bedürfnisse besitzt, müssen wir ihn selber entwickeln. Dazu stellt Funambol die Dokumente (Funambol Developer's Guide und Funambol DS Server SyncSource API) zur Verfügung. 7.8.1 Anforderung der Entwicklungsumgebung Bevor wir unser Connector erstellen, müssen die folgenden Applikationen aufgesetzt und lauffähig sein. • Funambol DS Server 7.x • Funambol Software Development Kit 7.0.x • Java 2 SDK Version 1.5.x oder neuer • Apache Maven 7.8.2 Erstellung des Connector-Projektes „acmeconnector“ Funambol schlägt vor, das Connector-Projekt mit Hilfe von Maven zu erstellen. Wir sind diesem Vorschlag gefolgt und haben Apache Maven und Java 2 SDK auf unserem Arbeitsrechner installiert. Anschliessend haben wir das Connector-Projekt eingerichtet, indem wir in der Kommando-Konsole folgenden Befehl eingegeben haben: mvn archetype:create -DarchetypeGroupId=funambol -DarchetypeArtifactId=funambol-module-archetype -DarchetypeVersion=7.0.0 -DgroupId=acme -DartifactId=acmeconnector -DarchetypeRepository=http://m2.funambol.org/repositories/artefacts -Dversion=1.0.0 Achtung: Der obige Befehl muss in einer Zeile eingegeben werden und die Argumente sind mit einem Leerschlag zu trennen. Maven erzeugt das Projekt im Verzeichnis namens „acmeconnector“ und im aktuellen Verzeichnis. Das Projekt besteht aus: • eine normale SyncSource • eine "mergeable" SyncSource • einem input/output synclet • alle Konfigurations- und SQL-Dateien ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 94 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Abbildung 118: Projektstruktur acmeconnector Im Ursprungsprojekt existiert das Verzeichnis „acmeconnector/src/main/sql/mysql“ nicht. Da wir beschlossen haben, MySQL als Back-End-Datenbank zu verwenden, kann zum Beispiel das Verzeichnis „hypersonic“ kopiert und als „mysql“ umbenannt werden. Die untenstehende Tabelle erklärt die Funktion jeder Projektdatei: File Beschreibung LICENSE.txt AGPL Lizenzdatei pom.xml Maven-Projekt Datei für den Connector acmeconnector/src/main/config/co m/funambol/server/engine/pipeline/i nput/000.000.mysynclet.xml Einfache Input Synclet-Konfiguration acmeconnector/src/main/config/co m/funambol/server/engine/pipeline/ output/000.000.mysynclet.xml Einfache Output Synclet-Konfiguration acmeconnector/src/main/external/r eadme.txt Readme für den Verzeichnisinhalt acmeconnector/src/main/install/inst all.xml Modulinstallationsfile acmeconnector/src/main/java/acme /MyMergeableSyncSource.java Einfache "mergeable" SyncSource acmeconnector/src/main/java/acme /MySynclet.java Einfache synclet ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 95 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ acmeconnector/src/main/java/acme /MySyncSource.java Einfache SyncSource acmeconnector/src/main/java/acme /MySyncSourceAdminPanel.java Einfache Administrationspanel für MySyncSource und MyMergeableSyncSource acmeconnector/src/main/sql/*/sche ma.sql SQL Skript zur Erstellung der Datenbanktabellen. acmeconnector/src/main/sql/*/drop _schema.sql SQL Skript zur Löschung der Datenbanktabellen. acmeconnector/src/main/sql/*/init_s chema.sql SQL Skript zur Initialisierung der Datenbanktabellen. Ist für das Modul erforderlich. Alle Projektdateien befinden sich auf der beigelegten DVD im Verzeichnis „Funambol\Code\Connector\acmeconnector“. 7.8.3 Die wichtigsten Projektdateien im Detail MySyncSource.java Der MySyncSource Typ ist die wichtigste Komponente des Connectors. Der Quellcode, der durch das Artefakt erstellt wird, ist sehr schlicht aufgebaut. Der Inhalt besteht aus den wichtigsten Methoden, die von den Funambol-Funktionen verwendet werden. Weiter besitzt jede Methode bereits wenige Logging-Informationen, damit ihre Ausführung einfacher verfolgt werden kann. Der Kern der SyncSource-Architektur ist das Interface com.funambol.framework.engine.source.SyncSource. Dieses Interface kann für beliebige Datentypen (File, E-Mail, Kontakte, Termine und andere Datensätze) eingesetzt werden. Folglich sind seine Implementierungen für den Zugriff auf die darunterliegende Datenspeicherung völlig offen. Eine SyncSource wird aus dem eindeutigen Namen und dem eindeutigen sourceURI identifiziert. Der sourceURI ist der URI (Uniform Resource Identifier), der ein SyncML Client angeben muss, um die Synchronisation mit der SyncSource durchführen zu können. Ferner ist die SyncSource mit einem MIME Typ verknüpft, der den Datentyp behandelt. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 96 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Abbildung 119: Klasse SyncSource << interface >> Quelle Funambol DS Server SyncSource API Das SyncSource Interface erbt von zwei weiteren Interfaces namens „MergeableSyncSource“ und „FilterableSyncSource“ und wird aus der abstrakten Klasse „AbstractSyncSource“ implementiert. Hier tabellarisch die wichtigsten Methoden aufgelistet: Methode Beschreibung beginSync() Diese ist die erste SyncSource Methode, die die Sync Engine aufruft. Sie spezifiziert, wer synchronisiert und welche Synchronisierungsart angewendet wird. endSync() Diese ist die letzte SyncSource Methode, die die Sync Engine aufruft und wird verwendet, um Abschlussarbeiten zu verrichten. commitSync() Wird von der Engine aufgerufen, um die Änderung, die während der Synchronisierungssitzung durchgeführt wurde, zu bestätigen. getUpdatedSyncItems() Wird von der Engine aufgerufen, um die aktualisierten SyncItems von einem Gerät und seit einem bestimmten Zeitpunkt zu ermitteln. getUpdatedSyncItemKeys() Wird von der Engine aufgerufen, um den ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 97 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ SyncItemKey (Schlüssel) des aktualisierten Datensatzes (Item) von einem Gerät und seit einem bestimmten Zeitpunkt zu ermitteln. getNewSyncItems() Wird von der Engine aufgerufen, um die neuen SyncItems von einem Gerät und seit einem bestimmten Zeitpunkt zu ermitteln. getNewSyncItemKeys() Wird von der Engine aufgerufen, um den SyncItemKey (Schlüssel) des neuen Datensatzes (Item) von einem Gerät und seit einem bestimmten Zeitpunkt zu ermitteln. getDeletedSyncItems() Wird von der Engine aufgerufen, um die gelöschten SyncItems von einem Gerät und seit einem bestimmten Zeitpunkt zu ermitteln. getDeletedSyncItemKeys() Wird von der Engine aufgerufen, um den SyncItemKey (Schlüssel) des gelöschten Datensatzes (Item) von einem Gerät und seit einem bestimmten Zeitpunkt zu ermitteln. getAllSyncItems() Wird von der Engine aufgerufen, um alle SyncItems von einem Gerät und seit einem bestimmten Zeitpunkt zu ermitteln. addSyncItem() Wird von der Engine aufgerufen, um neue Datensätze einzufügen. setSyncItem() Wird von der Engine aufgerufen, um den angegebenen Datensatz einzufügen oder zu aktualisieren. setSyncItems() Wird von der Engine aufgerufen, um angegebene Datensätze einzufügen oder zu aktualisieren. removeSyncItem() Wird von der Engine aufgerufen, um den angegebenen Datensatz zu löschen. removeSyncItems() Wird von der Engine aufgerufen, um die angegebenen Datensätze zu löschen. getSyncItemFromTwin() Wird von der Engine aufgerufen, um die Datensätze zu ermitteln, die die gleichen Informationen wie der angegebene Datensatz haben. Sie wird bei einer Konfliktermittlung verwendet, die während einer "SLOW" Synchronisation stattfindet. Die SyncSource kann Attribute wie zum Beispiel der Name des Connectors, der sourceURI , der MIME-Typ, der JDBC-Driver, die JDBC-URL und die Datenbank-Login-Informationen aus der XML-Konfigurationsdatei lesen. Somit müssen solche Attribute nicht fest im Code integriert sein. Stattdessen benötigt der Quellcode die entsprechenden Getter/Setter Methoden. Die Datei muss im config-Verzeichnis des Funambol DS Servers abgelegt sein. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 98 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Wir mussten den Quellcode gemäss unseren Anforderungen erweitern, damit die Synchronisierungsprozedur die Daten korrekt in der Back-End-Datenbank ablegt. SyncItem Die Elemente (Items), die von der SyncSource zurückgegeben werden, sind Objekten, die aus der Funambol-Klasse com.funambol.framework.engine.source.SyncItem stammen. Ein SyncItem ist die unteilbare Einheit, die während einer Synchronisierung ausgetauscht wird. Er wird durch einen eindeutigen Schlüssel (SyncItemKey) identifiziert und mit einem Status (state) verknüpft. Ein SyncItem hat die folgenden Eigenschaften: • state • content • type • format • timestamp Funambol bietet dazu eine Standard-Implementierung des SyncItem Interfaces an, das sich in der Klasse com.funambol.framework.engine.SyncItemImpl befindet. Abbildung 120: Klasse SyncItem << interface >> Quelle Funambol DS Server SyncSource API ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 99 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ In der untenstehenden Tabelle sind die Methoden des Interfaces aufgelistet: Methode Beschreibung getKey() Gibt den Schlüssel des Items zurück getParentKey() Gibt den Schlüssel des „Vater“-Objektes -> Hierarchie-Aufbau (Parent/Child) getState() Gibt den Status des Items an. setState() Setzt den Status des Items. getContent() Gibt den Inhalt des Items an. setContent() Setzt den Inhalt des Items. getFormat() Gibt das Format des Items an. setFormat() Setzt das Format des Items. getType() Gibt den Typ des Items an. setType() Setzt den Typ des Items. getTimestamp() Gibt den Zeitstempel des Items an. setTimestamp() Setzt den Zeitstempel des Items. GetSyncSource() Gibt die SyncSource an, an welche der Item gehört. Die Eigenschaften „Key“ und „ParentKey“ sind Objekte der Klasse com.funambol.framework.engine.SyncItemKey und identifizieren das Element (Item) oder das „Vater“-Element (ParentItem). Das ParentItem wird bei einer hierarchischen Synchronisation verwendet, um die Parent/Child Struktur zu aktualisieren. Die Eigenschaft „State“ bestimmt den Status des Elementes und kann folgende Werte besitzen: Statuswert Beschreibung SyncItemState.NEW Das Objekt wurde neu erstellt. SyncItemState.UPDATED Das Objekt wurde aktualisiert. SyncItemState.DELETED Das Objekt wurde gelöscht. SyncItemState.SYNCHRONIZED Das Objekt wurde bereits synchronisiert. SyncItemState.UNKNOWN Das Objekt befindet sich in einem unbekannten Status. SyncItemState.NOT_EXISTING Das Objekt existiert zurzeit nicht. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 100 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ SyncItemState.CONFLICT Das Objekt befindet sich in einem Konfliktstatus. SyncItemState.PARTIAL Das Objekt besitzt nur ein Teil des Inhalts. SyncSource verwendet nur den Status NEW, UPDATED und DELETED. Die übrigen Statusbezeichnungen werden vom Synchronisierungsmechanismus (Sync Engine) verwendet. Die Eigenschaft „Timestamp“ ist der Zeitstempel der letzten Änderung. Die Eigenschaft „Content“ ist der Inhalt des Items, der in einem Objekt verkapselt zurückgegeben wird. Die Eigenschaft „Type“ entspricht dem MIME-Typ (Multipurpose Internet Mail Extensions) des Inhalts. SyncContext Eine neue Synchronisation ruft als erstes die Methode beginSync auf und verwendet SyncContext als Input-Parameter. Der SyncContext beinhaltet folgende Information: • principal (of type com.funambol.framework.security.Principal) • syncMode (of type int) • filter (of type com.funambol.framework.filter.Filter) • conflictResolution • sourceQuery Principal: Ist eine Zusammensetzung aus dem Geräte- und Benutzernamen, aus der die Synchronisierung ausgelöst wird. Der Grund für diese Zusammenstellung ist, ein Benutzer kann diverse Geräte verwenden oder dasselbe Gerät kann von verschiedenen Benutzern bedient werden. SyncMode: Der Modus gibt an wie die Synchronisierung ausgeführt werden soll. Dabei stehen die folgenden Synchronisierungstypen zur Verfügung: syncMode Synchronisierungstyp 200 TWO_WAY 201 SLOW 202 ONE_WAY_FROM_CLIENT 203 REFRESH_FROM_CLIENT 204 ONE_WAY_FROM_SERVER 205 REFRESH_FROM_SERVER Filter: Der Filter entspricht die Filtereinstellung des Clients. Er verhält sich wie folgt, falls beide Bedingungen zutreffen. Beim Client ist der Filter gesetzt und die SyncSource ist vom Typ FilterableSyncSource: ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 101 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ • Die Methoden getAllSyncItemKeys, getDeletedSyncItemKeys, getNewSyncItemKeys und getUpdatedSyncItemKeys geben nur die Elemente zurück, die dem Filterkriterium entsprechen. • Die Methoden getSyncItemsFromId und getSyncItemsFromTwin berücksichtigen den Filter nicht. ConflictResolution: Das Konfliktverhalten bei der Synchronisation kann Server-seitig definiert werden. Dabei gilt: • SyncContext.CONFLICT_RESOLUTION_SERVER_WINS – Konfliktauflösung mit Serverdaten. • SyncContext.CONFLICT_RESOLUTION_CLIENT_WINS – Konfliktauflösung mit ClientDaten. • SyncContext.CONFLICT_RESOLUTION_MERGE_DATA – Konfliktauflösung, indem die Daten aus dem Server und dem Client vereinigt werden. Dabei muss die SyncSource vom Typ MergeableSyncSource sein. MyMergeableSyncSource.java Funambol stellt zwei Sub-Typen von SyncSource MergeableSyncSource und FilterableSyncSource. Interfaces Das MergeableSyncSource Interface ist ein Bestandteil com.funambol.framework.engine.source.MergeableSyncSource. zur des Verfügung: Pakets Das Interface soll verwendet werden, um Konfliktdaten miteinander zu vereinigen. Die Vereinigung wird ausgeführt, sobald ein Konflikt ermittelt wird. Das Resultat wird auf dem Server abgelegt und dann zum Client zurückgesendet. Methode Beschreibung mergeSyncItem() Wird aufgerufen, wenn ein Konflikt entsteht. Die Konfliktdaten werden vereinigt. Auf dem Server wird die Änderung in der Back-End-Datenbank gespeichert. Falls die Daten auf dem Client aktualisiert werden müssen, gibt die Methode „true“ zurück und schreibt den neuen Inhalt in dem ClientElement (Item). MySynclet.java MySynclet implementiert eine Eingangs- und eine Ausgangs-Synclet. Die Synclet wird sowohl bei eingehenden als auch ausgehenden Nachrichten aufgerufen. Sie ist sehr einfach aufgebaut und sie protokolliert die Nachrichten in den funambol.myconnector Logger. Diese Synclet können dann in jeder beliebigen Position der Pipeline eingebaut werden, um zu ermitteln, wie sich während der Pipeline-Prozesse eine Nachricht verändert hat. MySyncSourceAdminPanel.java Funambol bietet die Möglichkeit unsere MySyncSource via dem Funambol Administration Tool zu konfigurieren. Dies ist dank der Klasse MySyncSourceAdminPanel möglich. MySyncSourceAdminPanel erbt von SourceManagementPanel, die eine Klasse von Funambol Admin Framework ist. SourceManagementPanel ist ein JPanel und besitzt daher ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 102 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ alle Swing Panel Methoden. Zusätzlich besitzt es einen JButton, um neue SyncSources hinzuzufügen oder um die geänderten Werten einer existierenden SyncSource zu speichern. Abbildung 121: Panel Funambol Administration Tool Die Attribute und ihre Werte werden in die Konfigurationsdatei auf dem Funambol DS Server gespeichert. In unserem Fall heisst die Konfigurationsdatei mit Pfadangabe: Funambol\config\acme\acmeconnector\mymergeablesyncsource\acme1.xml Das File enthält die Attribute wie Name des Connectors, der sourceURI (entspricht den Uniform Resource Identifier), der MIME-Typ. Weitere Attribute wie zum Beispiel der JDBCDriver, die JDBC-URL, Login-Informationen (User/Passwort), Datenbanktabelleninformationen (Tabellennamen, Spaltennamen, Primary Key, ...) können ebenfalls in der Konfigurationsdatei gespeichert werden. Spricht ein SyncML Client einen Connector an, so liest die SyncSource die Attribute mit ihren Werten aus diesem Konfigurationsfile heraus. Daher müssen in unsere Klasse MySyncSource die entsprechenden Getter/Setter Methoden geschrieben werden. Nicht alle obigen Attribute werden mit dem Standard-AdminPanel angezeigt. Durch eine Erweiterung der Klasse MySyncSourceAdminPanel können auch diese Attribute sichtbar und editierbar gemacht. Diese Datei namens „acme1.xml“ kann auch manuell und nicht unbedingt via Funambol Administration Tool bearbeitet werden (siehe beigelegte DVD im Verzeichnis „Funambol\Config-Files“). SQL Skripte Da wir beschlossen haben, MySQL als Back-End-Datenbank zu verwenden, haben wir das Verzeichnis „hypersonic“ kopiert und als „mysql“ umbenannt. Im Verzeichnis befinden sich folgende Dateien: • acmeconnector/src/main/sql/mysql/schema.sql • acmeconnector/src/main/sql/mysql/drop_schema.sql • acmeconnector/src/main/sql/mysql/init_schema.sql Wir benötigen die Skripte schema.sql und drop_schema.sql momentan nicht, da unser Datenbankschema manuell gepflegt wird. Folglich sind diese Dateien noch leer. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 103 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Das dritte File „init_schema.sql“ wird verwendet, um den Connector in der Back-EndDatenbank zu registrieren. Dabei werden folgende Datenbanktabellen ausgefüllt: • fnbl_module -> für die Modulinformation • fnbl_connector -> für die Connector Information • fnbl_sync_source_type -> für die SyncSource-Typ Information • fnbl_connector_source_type -> Für den Connector-SyncSource Typ Zuweisung • fnbl_module_connector -> Für Modul-Connector Zuweisung Die zwei letztere Tabellen dienen für die Erstellung der hierarchischen Struktur des Connector-SyncSource Typs im Funambol Administration Tool. Abbildung 122: hierarchische Modulstruktur des Connectors Mit den folgenden SQL-Befehlen erhält man die Hierarchie: 1.) Modul-Registrierung delete from fnbl_module where id='acme'; insert into fnbl_module (id, name, description) values ('acme','acme','acme Module'); 2.) SyncConnector-Registrierung delete from fnbl_connector where id='acmeconnector'; insert into fnbl_connector (id, name, description) values ('acmeconnector','acmeconnector','acmeconnector Connector'); 3.) Der Connector “acmeconnector” gehört dem Modul “acme“ an. delete from fnbl_module_connector where module='acme' and connector='acmeconnector'; insert into fnbl_module_connector (module, connector) values ('acme','acmeconnector'); 4.) SyncSource Typ Registrierung delete from fnbl_sync_source_type where id='mysyncsource'; insert into fnbl_sync_source_type (id, description, class, admin_class) values ('mysyncsource','MySyncSource','acme.MySyncSource','acme.MySyncSourceAdminPanel'); delete from fnbl_sync_source_type where id='mymergeablesyncsource'; ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 104 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ insert into fnbl_sync_source_type(id, description, class, admin_class) values ('mymergeablesyncsource','MyMergeableSyncSource','acme.MyMergeableSyncSource','acme. MySyncSourceAdminPanel'); 5.) Der SyncSource Typ gehört dem Connector “acmeconnector” an. delete from fnbl_connector_source_type where connector='acmeconnector' and sourcetype='mysyncsource'; insert into fnbl_connector_source_type (connector, sourcetype) values ('acmeconnector','mysyncsource'); delete from fnbl_connector_source_type where connector='acmeconnector' and sourcetype='mymergeablesyncsource'; insert into fnbl_connector_source_type (connector, sourcetype) values ('acmeconnector','mymergeablesyncsource'); pom.xml Maven ist ein Projektmanagement-Werkzeug und basiert auf dem Konzept eines Project Object Model (POM). Um einen Build-Prozess eines Projekts auszuführen, nimmt Maven die notwendigen Angaben aus der XML-Datei pom.xml heraus. Die unter dem Kapitel 7.8.2 erstellte pom.xml-Datei muss für unsere Bedürfnisse erweitert werden. Wir benötigen noch das SyncClient-Paket „jse-sdk“ von Funambol und müssen daher ein weiteres dependency-Element einfügen: <dependency> <artifactId>jse-sdk</artifactId> <groupId>funambol</groupId> <version>7.0.5</version> </dependency> 7.8.4 Erstellen des Connector Pakets "acmeconnector" Man öffnet eine Shell-Konsole und wechselt in das Projektverzeichnis „acmeconnector“. Als nächstes gibt man den Maven-Befehl ein, um den Build-Prozess zu starten: • mvn package Nachdem die Erstellungsprozedur erfolgreich abgeschlossen ist, existiert im Projektverzeichnis ein neues Unterverzeichnis namens „target“, das das kompilierte Modul „acmeconnector-1.0.0.s4j“ enthält. Funambol Modul Ein Funambol Modul ist ein zip-Paket mit der folgenden Namenkonvention: • <module-name>-<major-version>.<minor-version>.s4j Erklärungen: • <module-name> entspricht dem Namen des Moduls und darf keine Leerzeichen enthalten. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 105 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ • <major-version> entspricht der Major Versionsnummer • <minor-version> entspricht der Minor Versionsnummer Bei einer neuen Versionsnummer mit der Minor Nummernbezeichnung sollen die Änderungen rückwärts kompatibel sein. Hingegen Änderungen in einer Major Version deuten eventuell auf eine Migration hin. 7.8.5 Installation des Connector Pakets "acmeconnector" Bedingung: Der Funambol DS Server muss gestartet sein. 1.) Das soeben erstellte Modul „acmeconnector-1.0.0.s4j“ muss im Modul-Verzeichnis „C:\Funambol\ds-server\modules“ auf dem Funambol DS Server kopiert werden. 2.) Auf dem Funambol DS Server muss die Datei „C:\Funambol\ds-server\install.properties“ editiert und mit dem neuen Modulnamen ergänzt werden. Trage den Namen des Moduls an der Zeile modules-to-install ein. # # Modules definitions # modules-to-install=content-provider-7.0.3,email-connector-7.0.6,foundation-7.0.6,phonessupport-7.0.4,webdemo-7.0.6,acmeconnector-1.0.0 Hinweis: Die Module werden dazwischen mit Kommas und ohne Leerzeichen getrennt. Die Dateierweiterung .s4j darf nicht angegeben werden. 3.) Speichere die Änderung ab und schliesse die Datei „install.properties“. 4.) Öffne die Kommando-Konsole und gebe folgenden Befehl ein: C:\Funambol\bin\install-modules.cmd 5.) Während der Installation wird man gefragt, ob die Module installiert werden sollen. Gebe „y“ (für yes) für die Installation des Moduls "acmeconnector" ein. Für die übrigen Module gebe „n“ (für no) ein. Automatisierung der Installation Da bei jedem Test unseres Connectors das Modul neu verpackt (s4j-File) und auf dem Funambol DS Server neu installiert werden muss, haben wir beschlossen ein kleines Skript zu schreiben, um die Installationsphase zu beschleunigen. Unser bat-Skript: @echo on set JAVA_HOME=C:\Sun\SDK\jdk set FUNAMBOL_HOME=C:\Funambol\ds-server set FUNAMBOL_BIN=C:\Funambol\bin cd C:\maven-projects\acmeconnector start /wait mvn package copy .\target\acmeconnector-1.0.0.s4j %FUNAMBOL_HOME%\modules start /wait %FUNAMBOL_BIN%\install-modules.cmd ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 106 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Eine Kopie der Datei „compile_acme_module.bat“ befindet sich auf der beigelegten DVD im Verzeichnis „Funambol\Scripts“. 7.9 Entwicklungsumgebung SyncML Client Da Funambol kein geeigneter SyncML Client für unsere Bedürfnisse besitzt, müssen wir ihn auch selber entwickeln. Dazu stehen wiederum dieselben Dokumente (Funambol Developer's Guide und Funambol DS Server SyncSource API) wie beim Connector zur Verfügung. 7.9.1 Anforderung der Entwicklungsumgebung Bevor wir unser SyncML Client erstellen, müssen die folgenden Applikationen aufgesetzt und lauffähig sein. • Funambol DS Server 7.x • Apache ANT oder eine bevorzugte integrierte Entwicklungsumgebung (IDE) z. B. Eclipse 7.9.2 Erstellung des SyncML Client-Projektes „VermSyncClient“ Mit Hilfe von Eclipse entwickeln wir den SyncML Client auf dem eigenen Laptop und testen ihn anschliessend auf einem Testrechner. Damit die Compilierung stets identisch und schnell durchläuft, erstellen wir das Software-Paket mit ANT. Abbildung 123: Projektstruktur VermSyncClient Die untenstehende Tabelle erklärt die Funktion jeder Projektdatei: File Beschreibung VermSyncClient\build.bat bat-File, um das ANT Buildprozess zu starten VermSyncClient\build\build.properties Apache ANT Konfigurationsdatei, zur Definition von zusätzlichen Variablen, die in der Konfigurationsdatei (sogenannte Build-Datei) verwendet werden. VermSyncClient\build\build.xml Apache ANT Konfigurationsdatei (sogenannte Build-Datei) VermSyncClient\build\vermsync.bat bat-File, um den SyncML Client ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 107 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ “VermSyncClient“ zu starten VermSyncClient\config\application.properties Konfigurationsdatei des SyncML Clients VermSyncClient\config\spds\syncml.properties Konfigurationsdatei des SyncML Clients VermSyncClient\config\spds\sources\vermsync. properties Konfigurationsdatei des SyncML Clients VermSyncClient\lib\core-framework-7.0.0.jar Bibliothek: Funambol Framework VermSyncClient\lib\hsqldb.jar Bibliothek: JDBC-Treiber für HSQLDB VermSyncClient\lib\jse-sdk-7.0.5.jar Bibliothek: Funambol SyncClient VermSyncClient\lib\sync4j-clientframework2.3.jar Bibliothek: Funambol SyncClient VermSyncClient\lib\mysql-connector-java-5.0.3bin.jar Bibliothek: JDBC-Treiber für MySQL VermSyncClient\src\verm\syncclient\VermClient. java Main-Klasse VermSyncClient\src\verm\syncclient\VermClient SyncSource.java SyncSource-Klasse Alle Projektdateien befinden sich auf der „Funambol\Code\Sync_Client\VermSyncClient“. 7.9.3 beigelegten DVD im Verzeichnis Die wichtigsten Projektdateien im Detail VermClient.java Die VermClient-Klasse enthält die main() Methode und die Verbindung zum Funambol DS Server für die Synchronisation. Das Konfigurationsstammverzeichnis „config“ wird als Eigenschaft (Property) gesetzt, damit die notwendigen XML-basierten Konfigurationsdateien (application.properties, syncml.properties und vermsync.properties) gefunden werden. Mit Hilfe der Dateien wird die Verbindung zum Funambol DS Server oder zur lokalen Datenbank konfiguriert. VermClientSyncSource.java Der SyncSource Typ ist die wichtigste Komponente des SyncML Clients. Der Kern der SyncSource-Architektur ist das Interface com.funambol.syncclient.spds.engine.SyncSource. Wie beim SyncSource-Interface des Connectors kann auch dieses Interface für beliebige Datentypen (File, E-Mail, Kontakte, Termine und andere Datensätze) eingesetzt werden. Folglich sind seine Implementierungen für den Zugriff auf die darunterliegende Datenspeicherung völlig offen. Die SyncSource des SyncML Clients ist identisch aufgebaut wie die SyncSource des Connectors, die im Kapitel 7.8.3 ausführlich beschrieben ist. Ebenfalls das Verhalten der SyncItems und SyncContext ist gleich. Daher wird auf eine wiederholte Beschreibung verzichtet. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 108 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Hier tabellarisch die wichtigsten Methoden aufgelistet: Methode Beschreibung beginSync() Diese ist die erste SyncSource Methode, die die Sync Engine aufruft. Sie spezifiziert, wer synchronisiert und welche Synchronisierungsart angewendet wird. endSync() Diese ist die letzte SyncSource Methode, die die Sync Engine aufruft und wird verwendet, um Abschlussarbeiten zu verrichten. commitSync() Wird von der Engine aufgerufen, um die Änderung, die während der Synchronisierungssitzung durchgeführt wurde, zu bestätigen. getUpdatedSyncItems() Wird von der Engine aufgerufen, um die aktualisierten SyncItems von einem Gerät und seit einem bestimmten Zeitpunkt zu ermitteln. getNewSyncItems() Wird von der Engine aufgerufen, um die neuen SyncItems von einem Gerät und seit einem bestimmten Zeitpunkt zu ermitteln. getDeletedSyncItems() Wird von der Engine aufgerufen, um die gelöschten SyncItems von einem Gerät und seit einem bestimmten Zeitpunkt zu ermitteln. getAllSyncItems() Wird von der Engine aufgerufen, um alle SyncItems von einem Gerät und seit einem bestimmten Zeitpunkt zu ermitteln. addSyncItem() Wird von der Engine aufgerufen, um neue Datensätze einzufügen. setSyncItem() Wird von der Engine aufgerufen, um den angegebenen Datensatz einzufügen oder zu aktualisieren. setSyncItems() Wird von der Engine aufgerufen, um angegebene Datensätze einzufügen oder zu aktualisieren. removeSyncItem() Wird von der Engine aufgerufen, um den angegebenen Datensatz zu löschen. getSyncItemFromTwin() Wird von der Engine aufgerufen, um die Datensätze zu ermitteln, die die gleichen Informationen wie der angegebene Datensatz haben. Sie wird bei einer Konfliktermittlung verwendet, die während einer "SLOW" Synchronisation stattfindet. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 109 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Die Attribute wie zum Beispiel der Name und der sourceURI des zu verwendenden Connectors, der MIME-Typ, der JDBC-Driver, die JDBC-URL und die Datenbank-LoginInformationen werden aus der XML-Konfigurationsdatei „VermSyncClient\config\spds\ sources\vermsync.properties“ gelesen. Und müssen nicht fest im Code integriert sein. Der Quellcode muss lediglich die entsprechenden Setter/Getter-Methoden besitzen. application.properties Die XML-basierte Konfigurationsdatei application.properties befindet sich im Verzeichnis VermSyncClient\config und enthält die Information zum erstellten Client: applicationAuthor=LO IUDICE applicationDisplayName=VermSyncClient applicationSupportMail= applicationSupportUrl= syncml.properties Die XML-basierte Konfigurationsdatei syncml.properties befindet sich im Verzeichnis VermSyncClient\config\spds und enthält die erforderliche Information, damit sich der SyncML Client mit dem Funambol DS Server verbinden kann. Eigentlich ist der SyncManager für die korrekte Verbindung zuständig. Er liest die Information aus der Konfigurationsdatei heraus und stellt die Verbindung her. Der Sync Manager wird von der main()-Methode in der Klasse VermClient erzeugt. Folgende Variablen müssen für unsere Verbindung angepasst werden, wobei username, password und device-id pro Installation verschieden sein sollen: syncml-url=http://mt-funambol:8080/funambol/ds target-local-uri=http://mt-funambol:8080/funambol/ds username=test password=test device-id=Sync4jVerm first-time-sync-mode=two-way vermsync.properties Die XML-basierte Konfigurationsdatei vermsync.properties befindet sich im Verzeichnis VermSyncClient\config\spds\sources und enthält die erforderliche Information, um die Verbindug zur lokalen Datenbank aufzubauen. Hier wird der Name der SyncSource-Klasse (in unserem Fall die Klasse verm.syncclient.VermClientSyncSource) mitgegeben, damit die Synchronisationsprozedur, die erforderlichen Methoden aufrufen kann. Der SyncManager entnimmt die Information aus dieser Datei und baut die Verbindung zur lokalen Datenbank auf. Nebst den Verbindungsinformationen befinden sich noch die Angaben des JDBCTreibers und -URL, über den Namen und sourceURI des Connectors, über den MIME-Typ und über den Aufbau der Datenbanktabelle „tabkoord“: ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 110 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ sourceClass=verm.syncclient.VermClientSyncSource type=text/plain sourceURI=vermdb name=vermdb jndiName= jdbcDriver=org.hsqldb.jdbcDriver urlConnection=jdbc:hsqldb:hsql://localhost/localvermdb userConnection=vermsys passwordConnection=vermsys tableName=tabkoord keyColumnName=pktnr timestampColumnName=fmbstatus stateColumnName=fmbtimestamp moreColumnNames=ykoord,xkoord encode=true build.xml Zum Testen unseres SyncML Client haben wir immer wieder eine neue jar-Datei erstellt und diese Datei mit den notwendigen Konfigurationsdateien auf dem TestclientC kopiert. Um Zeit zu sparen, haben wir beschlossen, das Projekt mit ANT zu kompilieren. Wir haben die Build-Datei und ihre Property-Datei gemäss unseren Anforderungen erstellt und beide Dateien im Verzeichnis „build“ abgelegt. Mit Hilfe der build.bat-Datei wird Apache ANT aufgerufen und das Paket erzeugt. ANT legt ein neues Verzeichnis namens „target“ an. Und alle notwendigen Dateien werden dort hinein kopiert respektive erstellt. 7.9.4 Installation des SyncML Clients „VermSyncClient” Das mit ANT erstellte Verzeichnis „target“ kann auf die Testmaschine kopiert werden. Mit einem Doppelklick auf die Datei vermsync.bat kann es gestartet werden. Bedingung: Auf dem Testclient muss die Java Runtime (JRE 1.5 oder höher) installiert sein. 7.10 Systemtest II 7.10.1 Ausgangslage Bei unseren Testfällen gehen wir gemäss Pflichtenheft von diesen Bedingungen aus: • Die Stammdaten befinden sich in der Hauptdatenbank • Client C und D sind online für die Fälle 1-6 • Client C und D sind offline für die Fälle 7-8 Bedingung: Skript „Stammdaten_Funambol.sql“ (siehe im Verzeichnis „SQL-Skripte“ auf der beigelegten DVD) in die Hauptdatenbank einspielen. Auf den Clients muss die lokale Datenbank „localvermdb“ mit der Tabelle „tabkoord“ vorhanden sein. Der Datenbankbenutzer „vermsys“ mit der entsprechenden Berechtigung muss ebenfalls angelegt sein. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 111 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Anhand folgendes Skriptinhalts „Stammdaten_Funambol.sql“ werden die Stammdaten in der Hauptdatenbank importiert: DELETE FROM tabkoord; COMMIT; SELECT * FROM tabkoord; INSERT INTO tabkoord (pktnr, ykoord, xkoord, fmbstatus) VALUES (1, 660634.772, 244641.123, 'N'); INSERT INTO tabkoord (pktnr, ykoord, xkoord, fmbstatus) VALUES (2, 660617.409, 244653.457, 'N'); INSERT INTO tabkoord (pktnr, ykoord, xkoord, fmbstatus) VALUES (3, 660675.128, 244607.968, 'N'); INSERT INTO tabkoord (pktnr, ykoord, xkoord, fmbstatus) VALUES (4, 660661.096, 244653.276, 'N'); INSERT INTO tabkoord (pktnr, ykoord, xkoord, fmbstatus) VALUES (5, 660660.782, 244601.123, 'N'); COMMIT; SELECT * FROM tabkoord; Auf die Bildschirme des Servers und der Clients sehen die Startsituationen folgendermassen aus. Startsituation in der Hauptdatenbank: Abbildung 124: Startsituation in der MySQL Hauptdatenbank Der Inhalt der Back-End-Datenbank wird mit dem Webinterface von XAMPP angezeigt. Startsituation auf den TestclientC & D Um die Daten in der lokalen Datenbank anzuzeigen, verwenden wir auch das VerwaltungsTool von HSQLDB (C:\hsqldb\demo\runManager.bat). ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 112 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Abbildung 125: Verwaltungs-Tool HSQL Database Manager (runManager) Im Moment sind die Datenbanken auf den Clients leer. Also holen wir uns die Daten aus der Hauptdatenbank mit der manuellen Synchronisation auf unsere Client-Datenbanken: Starte C:\VermSyncClient\vermsync.bat Startsituation auf dem TestclientC Abbildung 126: Startsituation TestclientC (Ausgangslage) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 113 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Startsituation auf dem TestclientD Abbildung 127: Startsituation TestclientD (Ausgangslage) 7.10.2 Testfälle Fall 1: TestclientC: Fügt einen neuen Punkt 6 mit den Koordinaten 10.0 und 11.0 ein: Abbildung 128: Punkt einfügen TestclientC (Fall 1) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 114 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Abbildung 129: Neuer Punkt TestclientC (Fall 1) Manuelle Synchronisation auf dem TestclientC auslösen: Starte C:\VermSyncClient\vermsync.bat Situation in der Hauptdatenbank Abbildung 130: Situation in der MySQL Hauptdatenbank (Fall 1) Situation TestclientD: Manuelle Synchronisation auf dem TestclientC auslösen: Starte C:\VermSyncClient\vermsync.bat Refresh-Button auf dem GUI klicken ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 115 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Abbildung 131: Neuer Punkt TestclientD (Fall 1) Fall 2: TestclientD: Modifiziere den bestehenden Punkt 3 mit folgenden Werten: Y-Koordinaten = 10.0 und X-Koordinaten = 110.0 ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 116 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Selektiere Punkt 3 Abbildung 132: Punkt 3 modifizieren TestclientD (Fall 2) Ändere Koordinatenwerte von Punkt 3 Abbildung 133: Situation TestclientD (Fall 2) Punkt 3 ist lokal gespeichert. Manuelle Synchronisation auf dem TestclientC auslösen: Starte C:\VermSyncClient\vermsync.bat ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 117 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Situation in der Hauptdatenbank Abbildung 134: Situation in der MySQL Hauptdatenbank (Fall 2) Bemerkung: Wie erwartet wurde der Status des Punkts 3 auf U (Update) gesetzt. Situation TestclientC: Manuelle Synchronisation auf dem TestclientC auslösen: Starte C:\VermSyncClient\vermsync.bat Refresh-Button auf dem GUI klicken Abbildung 135: Situation TestclientC (Fall 2) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 118 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Fall 3: Beide Clients fügen „gleichzeitig“ denselben Punkt 7 aber mit diversen Werten ein: TestclientC: Y-Koordinaten = 13.0 und X-Koordinaten = 130.0 Abbildung 136: Situation TestclientC (Fall 3) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 119 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ TestclientD: Y-Koordinaten = 14.0 und X-Koordinaten = 140.0 Abbildung 137: Situation TestclientD (Fall 3) Manuelle Synchronisation auf beide Testclients auslösen: Starte C:\VermSyncClient\vermsync.bat Situation in der Hauptdatenbank Abbildung 138: Situation in der MySQL Hauptdatenbank (Fall 3) In der Hauptdatenbank sind die Daten des Clients D gespeichert. Siehe Begründung am Schluss dieser Aufgabe. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 120 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Situation TestclientC: Abbildung 139: Refresh-Situation TestclientC (Fall 3) Nach dem Refresh sind die Daten unverändert! Siehe Begründung am Schluss dieser Aufgabe. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 121 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Situation TestclientD: Abbildung 140: Unveränderte Situation TestclientD (Fall 3) Die Daten sind unverändert, da seine Werte in der Hauptdatenbank permanent gespeichert sind. Begründung: Wenn zwei Client gleichzeitig synchronisieren, übernimmt Funambol die Steuerung der Synchronisierung. Ein externer Einfluss ist ausgeschlossen. Somit ist der Synchronisierungsprozess zufällig und kann beim erneuten gleichzeitigen Synchronisieren variieren. Diese Aufgabe wurde von uns mehrmals wiederholt. Durch die Wiederholung stellten wir fest, dass die Synchronisation unter anderem auch Client dominant ist. Das heisst, der Server akzeptiert stillschweigend die Änderungen des Clients. Anhand des Log-Files des Servers konnten wir den Synchronisierungsablauf analysieren. Der zeitliche Ablauf ist grafisch unten abgebildet. Das Bild erklärt zudem das Resultat dieser Aufgabe. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 122 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ TestclientC TestclientD (test/Sync4jTest) (test1/Sync4jverm1) MT-Funambol 1 Client C angemeldet t = 2009-01-12 10:41:10,859 2 Client D angemeldet t = 2009-01-12 10:41:11,015 Synchronisation mit Client D gestartet t = 2009-01-12 10:41:11,015 letzte sync: 2009-01-12 10:34:37.25 neue sync: 2009-01-12 10:41:10.843 3 Synchronisation mit Client C gestartet t = 2009-01-12 10:41:11,062 letzte sync: 2009-01-12 10:37:25.671 neue sync: 2009-01-12 10:41:10.796 4 Synchronisation mit Client D abgeschlossen t = 2009-01-12 10:41:11,125 5 Synchronisation mit Client C abgeschlossen t = 2009-01-12 10:41:11,187 6 7 Zeit t Zeit t Zeit t Abbildung 141: Zeitlicher Ablauf der Synchronisation (Fall 3) 1.) TestclientC (Principal: test/Sync4jTest) meldet sich am Funambol Server an. Anmeldezeit um: 2009-01-12 10:41:10,812 2.) TestclientD (Principal: test1/Sync4jverm1) meldet sich am Funambol Server an. Anmeldezeit um: 2009-01-12 10:41:10,859 3.) TestclientD beginnt mit dem Server zu synchronisieren. t = 2009-01-12 10:41:11,015 Dabei werden die Elemente synchronisiert, die sich während der Zeitspanne 2009-01-12 10:34:37.25 und 2009-01-12 10:41:10.843 verändert haben. In unserem Fall wird der Punkt 3 des Clients D in der Hauptdatenbank aktualisiert. Die Aktualisierung setzt auf ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 123 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ dem Punkt 3 in der Hauptdatenbank einen neuen Zeitstempel (fmbtimestamp, Tabellenfeld von „tabkoord“), der etwas grösser als 2009-01-12 10:41:11,015 ist. 4.) TestclientC beginnt mit dem Server zu synchronisieren. t = 2009-01-12 10:41:11,062 Dabei werden die Elemente synchronisiert, die sich während der Zeitspanne 2009-01-12 10:37:25.671 und 2009-01-12 10:41:10.796 verändert haben. Der neue Punkt 3 in der Hauptdatenbank besitzt nun einen Zeitstempel (fmbtimestamp), der höher liegt als die von der Synchronisierung involvierte Zeitspanne. Folglich wird der Punkt aus der Synchronisation ausgeschlossen und wird nicht aktualisiert. 5.) Die Synchronisation mit dem Client D wird abgeschlossen. t = 2009-01-12 10:41:11,125 Zudem wird die Zeit t = 2009-01-12 10:41:11,125 als letzte Synchronisierung mit dem Client D gesetzt. Zur Erinnerung: Der Zeitstempel des Punkts 3 (fmbtimestamp) ist unterhalb der markierten letzten Synchronisation. fmbtimestamp < t = 2009-01-12 10:41:11,125 6.) Die Synchronisation mit dem Client C wird abgeschlossen. t = 2009-01-12 10:41:11,187 Zudem wird die Zeit t = 2009-01-12 10:41:11,187 als letzte Synchronisierung mit dem Client C gesetzt. 7.) Eine erneute Synchronisation wird den Punkt 3 ebenfalls nicht mehr aktualisieren, da der Zeitstempel des Punkts (fmbtimestamp) unterhalb des Zeitpunkts der zuletzt ausgeführten Synchronisation ist. Auszug aus dem Server Log-File „ds-server.log“: … [2009-01-12 10:41:10,812] [funambol.handler] [INFO] [A6B79048FCAFF2332B2FB13EF80BB699] [Sync4jTest] [test] [] test/Sync4jTest logged in. .... [2009-01-12 10:41:10,859] [funambol.handler] [INFO] [7C76E127DCC32A4284DB9DFE26730059] [Sync4jverm1] [test1] [] test1/Sync4jverm1 logged in. [2009-01-12 10:41:11,015] [funambol.engine] [INFO] [7C76E127DCC32A4284DB9DFE26730059] [Sync4jverm1] [test1] [] Starting synchronization ... ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 124 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ [2009-01-12 10:41:11,015] [funambol.ourConnector] [INFO] [7C76E127DCC32A4284DB9DFE26730059] [Sync4jverm1] [test1] [acme1] since: 2009-01-12 10:34:37.25 [2009-01-12 10:41:11,015] [funambol.ourConnector] [INFO] [7C76E127DCC32A4284DB9DFE26730059] [Sync4jverm1] [test1] [acme1] to: 2009-01-12 10:41:10.843 .... [2009-01-12 10:41:11,062] [funambol.engine] [INFO] [A6B79048FCAFF2332B2FB13EF80BB699] [Sync4jTest] [test] [] Starting synchronization ... [2009-01-12 10:41:11,062] [funambol.ourConnector] [INFO] [A6B79048FCAFF2332B2FB13EF80BB699] [Sync4jTest] [test] [acme1] since: 2009-01-12 10:37:25.671 [2009-01-12 10:41:11,062] [funambol.ourConnector] [INFO] [A6B79048FCAFF2332B2FB13EF80BB699] [Sync4jTest] [test] [acme1] to: 2009-01-12 10:41:10.796 .... [2009-01-12 10:41:11,125] [funambol.engine] [INFO] [7C76E127DCC32A4284DB9DFE26730059] [Sync4jverm1] [test1] [] Sync4jverm1/test1: synchronization completed [2009-01-12 10:41:11,187] [funambol.engine] [INFO] [A6B79048FCAFF2332B2FB13EF80BB699] [Sync4jTest] [test] [] Sync4jTest/test: synchronization completed Aufgrund unserer Analyse und Feststellung kommen wir zu folgendem Fazit: Ein gleichzeitiges Synchronisieren ist zu vermeiden! ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 125 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Fall 4: TestclientC: Löscht den Punkt 3 Abbildung 142: Startsituation TestclientC (Fall 4) Abbildung 143: Endsituation TestclientC (Fall 4) Manuelle Synchronisation auf beide Testclients auslösen: Starte C:\VermSyncClient\vermsync.bat ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 126 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ TestclientD: Unmittelbar danach ändert die Koordinaten des Punkts 3 (Y=1234; X=4321) Selektiere Punkt 3 Abbildung 144: Startsituation TestclientD (Fall 4) Ändere Koordinatenwerte von Punkt 3 Abbildung 145: Punkt 3 modifizieren TestclientD (Fall 4) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 127 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Abbildung 146: Endsituation TestclientD Fall 4 Manuelle Synchronisation auf beide Testclients auslösen: Starte C:\VermSyncClient\vermsync.bat Situation in der Hauptdatenbank Abbildung 147: Situation in der MySQL Hauptdatenbank (Fall 4) Der Punkt 3 ist in der Hauptdatenbank mit den geänderten Werten des TestclientD ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 128 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Situation TestclientC: Abbildung 148: Unveränderte Situation TestclientC (Fall 4) Der Punkt 3 ist weiterhin nicht in der lokalen Datenbank vorhanden und verleitet vom Standpunkt des TestclientC zu einer korrekten Annahme. Im Bezug zur Hauptdatenbank hat die lokale Datenbank aber einen Datenunterschied. Achtung: Was passiert bei der nächsten Synchronisation? Starte erneut die Synchronisation. Abbildung 149: Neue Situation TestclientC (Fall 4) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 129 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Punkt 3 wurde mit den aktuellen Werten aus der Back-End-Datenbank wiederhergestellt. Nun ist die Datendifferenz wieder aufgehoben. Die Situation auf dem TestclientD bleibt unverändert. Fall 5: Lösche den Punkt 3 direkt aus der Hauptdatenbank Achtung: In der Back-End-Datenbank von Funambol dürfen keine Datensätze gelöscht werden. Ansonsten werden sie von der nächsten Synchronisation nicht erfasst und können somit auf den Clients nicht entfernt werden. Fazit: Datenleichen! Ein gelöschter Datensatz wird mit dem Status „D“ für Delete vermerkt. Zugleich wird in der Spalte „fmbtimestamp“ die Zeit der Änderung (CURRENT_TIMESTAMP) registriert. Diese Eigenschaft spielt eine wesentliche Rolle beim Synchronisieren von verschiedenen lokalen Datenbanken zur Hauptdatenbank. Folglich muss der Punkt 3 mit dem Status D (Delete) versehen werden! Abbildung 150: Update-Statement auf Kommandokonsole (Fall 5) Abbildung 151: Situation in der MySQL Hauptdatenbank (Fall 5) Manuelle Synchronisation auf beide Testclients auslösen: Starte C:\VermSyncClient\vermsync.bat ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 130 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Situation TestclientC & D: Abbildung 152: Situationen TestclientC & D (Fall 5) Auf dem Client wird der Punkt 3 definitiv aus der lokalen Datenbank localvermdb gelöscht. Da die Information als „gelöscht“ zur Client transferiert wurde, besteht kein Grund diesen Punkt weiter in der Client-Datenbank zu speichern. Unser Synchronisierungs-Client bereinigt in der Methode commitSync(), die als gelöscht markierten Datensätze (fmbstatus = D) aus der lokalen Datenbank. Weiter versehen wir die bereits synchronisierenden Daten mit dem Status „synchronized“ (fmbstatus = S). Abbildung 153: Neue Status-Situation auf den Clients (Fall 5) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 131 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Fall 6: Modifiziere die Koordinatenwerte des Punkts 6 direkt in der Hauptdatenbank Y = 1234 und X = 4321 Befehl: Abbildung 154: Update-Statement auf Kommandokonsole (Fall 6) Resultat in der Hauptdatenbank vermdb: Abbildung 155: Situation in der MySQL Hauptdatenbank (Fall 6) Situation TestclientC & D: Abbildung 156: Startsituationen TestclientC & D (Fall 6) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 132 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Manuelle Synchronisation auf beide Testclients auslösen: Starte C:\VermSyncClient\vermsync.bat Situation TestclientC & D: Abbildung 157: Endsituationen TestclientC & D (Fall 6) Situation in der lokalen Datenbank localvermdb: Der soeben aktualisierte Punkt wird unter anderem auch mit dem Status U versehen. Abbildung 158: Neue Status-Situation auf den Clients (Fall 6) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 133 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Fall 7: Unser Synchronisierungs-Client läuft als manuelle Synchronisation. Für eine automatische Synchronisation wird unser bat-File mit Hilfe des Betriebssystems in den „geplanten Jobs“ (> Start | All programs | Accessories | System Tools | Scheduled Tasks) eingetragen. Um eine automatische Synchronisation auszulösen, kann periodisch die Synchronisierung gestartet werden. Weiter kann schon beim Anmelden die Synchronisation auch gestartet werden, indem man unser bat-File in den sogenannten „Autostart“ verlinkt. Bedingung: Gegenüber dem Pflichtenheft müssen die Client nicht offline gesetzt werden, da die Synchronisation zurzeit manuell ausgelöst wird. Wir haben in unsere Testclients keine Einträge in den „geplanten Jobs“ erstellt. Folglich werden keine Daten transferiert, bevor der Synchronisationsprozess händisch gestartet wird. Praktisch unterscheidet sich der Ablauf dieser Aufgabe nicht mit den vorherigen Aufgaben 1 bis 6. Ausgangslage: Lösche alle Daten in den lokalen Datenbanken. Skript „Stammdaten_Funambol.sql“ in die Hauptdatenbank einspielen. Starte die manuelle Synchronisation auf beide Testclients Situation in der Hauptdatenbank: Abbildung 159: Situation in der MySQL Hauptdatenbank (Fall 7) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 134 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Situation auf beiden Clients: Abbildung 160: Situationen TestclientC & D (Fall 7) TestclientC: Füge 2 neue Punkte ein Punkt 6 (Y = 1234; X = 4321) und Punkt 7 (Y = 9876; X = 6789) TestclientD: Füge 2 weitere Punkte ein Punkt 8 (Y = 1234; X = 4321) und Punkt 9 (Y = 9876; X = 6789) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 135 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Situation TestclientC: Abbildung 161: Punkte 6 und 7 einfügen TestclientC (Fall7) Situation TestclientD: Abbildung 162: Punkte 8 und 9 einfügen TestclientD (Fall 7) Client D startet die manuelle Synchronisation: Starte C:\VermSyncClient\vermsync.bat ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 136 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Situation in der Hauptdatenbank: Abbildung 163: Situation in der MySQL Hauptdatenbank nach D (Fall 7) Client C startet die manuelle Synchronisation: Starte C:\VermSyncClient\vermsync.bat Situation in der Hauptdatenbank: Abbildung 164: Situation in der MySQL Hauptdatenbank nach C (Fall 7) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 137 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Situation TestclientC: Punkte, die vom Client D stammen Abbildung 165: Refresh-Situation TestclientC (Fall 7) In der lokalen Datenbank „localvermdb“ auf dem Client C sind die Punkte gespeichert. Abbildung 166: Situation TestclientC mit runManager betrachten (Fall 7) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 138 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Situation TestclientD: Abbildung 167: Unveränderte Situation TestclientD (Fall 7) bleibt unverändert! Client D startet erneut die manuelle Synchronisation, um die zugeführten Punkten des Clients C zu erhalten: Starte C:\VermSyncClient\vermsync.bat Situation TestclientD: Nach dem Klicken des „Refresh“-Buttons auf unserem GUI erscheinen nun auch die Punkte des Clients C. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 139 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Punkte, die vom Client C stammen Abbildung 168: Refresh-Situation TestclientD (Fall 7) In der lokalen Datenbank „localvermdb“ auf dem Client D sind die Punkte gespeichert. Abbildung 169: Situation TestclientD mit runManager betrachten (Fall 7) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 140 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Fall 8: Die Clients sind offline und in der Hauptdatenbank soll direkt ein Punkt modifiziert werden. Änderung: Punkt 3 mit Koordinaten Y = 7654.321 und X = 1234.567 Anschliessend werden die Clients online gesetzt. Da die Synchronisierung manuell gestartet wird, verhält sich diese Aufgabe gleich wie die Aufgabe 6. Somit kann die Aufgabe hier beendet werden. 7.10.3 Quintesenz der Testfälle beim System II Die Testreihe wurde auch bei diesem System dreimal wiederholt. Diesmal stimmten die Tests mit unseren Erwartungen überein. Es trat ein Konflikt beim Fall 3 auf. Beim Fall 4 trat kein Konflikt auf, da der Punkt 3 in der Hauptdatenbank permanent vorhanden ist. Zur Erinnerung: In der Hauptdatenbank werden keine Datensätze gelöscht, sondern sie werden mit dem Status „D“ für Delete gekennzeichnet. Funambol stellt für die Konfliktanalyse leider kein passendes Werkzeug wie Oracle zur Verfügung. Mühsam mussten wir selber den Datenaustausch anhand des Log-Files aufzeichnen. Unsere detaillierte Analyse ist in den Fällen ausführlich beschrieben. Wir sind der Meinung, dass diese Arbeit nicht dem Benutzer alleine überlassen werden kann und dass Funambol hier noch Entwicklungspotenzial hätte. Zudem ist eine solche Auswertung in einer produktiven Umgebung zu aufwendig. Genauso wie beim System I ist Folgendes zu sagen, dass in einem kleinen Benutzerumfeld die Konfliktfälle sehr selten auftreten sollten. Die Wahrscheinlichkeit, dass zwei Clients den gleichen Datensatz gleichzeitig ändern und synchronisieren, ist klein. Ausserdem muss bei der Erfassung neuer Datensätze durch diverse Clients sichergestellt werden, dass die Clients unterschiedliche Punktnummer verwenden. Das entspricht auch die Praxis im Vermessungswesen. Mit regelmässigem Synchronisieren in kurzen Zeitabständen können zusätzlich Konflikte vermieden werden. Ein gleichzeitiges Synchronisieren ist zu vermeiden! Die Clients werden vom System auf keiner Weise über die Konflikte informiert. Ferner bietet Funambol keine automatische Synchronisation an. Aber mit Hilfe des Betriebssystems (Scheduled Tasks = geplante Jobs) kann eine automatische Synchronisierung erzielt werden (siehe unter anderem Fall 7). Erwartungsgemäss macht die Aufgabe 8 nur bei einer automatischen Synchronisation Sinn, denn bei einer manuellen Synchronisation entspricht dieser Fall die Aufgabe 6. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 141 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 8 System III 8.1 Einleitung Ausgehend aus der Diskussionsrunde mit unserem Examinator Herr Wyss haben wir beschlossen, ein weiteres Synchronisationssystem basierend auf ADO.NET unter die Lupe zu nehmen. 8.2 Aufbau Auf dem physischen Rechner wird ein VMware-Rechner mit Windows Server 2003 Betriebssystem aufgesetzt. Auf diesem Server installieren wir nur die Back-End-Datenbank (MS SQL 2005 Express Edition). Es ist uns bewusst, dass Windows XP auch als Betriebssystem in unserem System III eingesetzt werden konnte. Um eine Einheit über alle Systeme zu haben, kommt Windows XP nicht in Frage. Auf den virtuellen Workstation installieren wir den SQL Server Compact 3.5 SP1. Diese Datenbankserver-Version beinhaltet schon das Microsoft Sync Framework. Anschliessend wird unser Prototyp GUI „survey“, den wir neu in C# programmiert haben, auf den Clients kopiert. 8.2.1 Übersicht unserer Test-Umgebung Das nachfolgende Bild zeigt eine Übersicht unserer Test-Umgebung: Abbildung 170: Systemübersicht III der Test-Umgebung ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 142 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 8.3 ADO.NET ADO.NET ist praktisch eine Weiterentwicklung des ActiveX Data Objects (ADO) und ist heute Bestandteil des Microsoft .NET Framework 2.0. Abbildung 171: Die Struktur des .NET Frameworks Quelle Software Architecture .NET Framework, Version 1.0, Ronald Tanner Im Wesentlich besteht es aus einer Ansammlung von Programmklassen, die den Zugriff auf relationalen Datenbanken ermöglicht. Seine Hauptkomponente sind Dataprovider und DataSet. Abbildung 172: ADO.NET Architektur Quelle http://msdn.microsoft.com/en-us/library/aa719511.aspx ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 143 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 8.3.1 Dataprovider Der Dataprovider ist das Interface zur Datenbank und kennt die Eigenschaft von ihr. Es gibt unterschiedliche Dataprovider zu den jeweiligen Datanbanken. Standardmässig sind die Provider für MS SQL Server und OLE DB im .NET Framework integriert. Es gibt auch noch weitere Dataprovider wie zum Beispiel für Oracle und für MySQL. Diese müssen aber zusätzlich installiert werden. Der Dataprovider besitzt vier Komponenten: Komponente Beschreibung Connection Baut die Verbindung zur Datenbank auf. Command Führt Anweisungen zur Datenbank; SELECT, INSERT, UPDATE und DELETE DataAdapter Dient als Brücke zwischen der Datenbank und dem DataSet. Das heisst, der Adapter füttert den DataSet mit den Daten aus der Datenbank. DataReader Erlaubt nur einen Lesezugriff auf die Daten. Navigieren durch die Datensätze ist nicht möglich, da der Lesevorgang sequenziell abgearbeitet wird. 8.3.2 DataSet Der DataSet ist ein Speicherabbild der Datenbank. Mit Hilfe des DataAdapters werden die Datenbankeinträge im DataSet gespeichert und stehen der eigentlichen Applikation für die weitere Verarbeitung zur Verfügung. Hier die wichtigsten Klassen des DataSets: Klasse Beschreibung DataSet Entspricht dem Schema. DataTable Entspricht einer Tabelle (single table). DataView Dient zur Sortierung und Filterung der Daten. DataColumn Entspricht der Tabellenspalte mit dem Spaltennamen und -typ. DataRow Entspricht der Tabellenzeile und erlaubt das Lesen und das Ändern der Werte aus der Zeile. DataRowView Entspricht einer einzige Zeile aus dem DataView DataRelation Ist eine Beziehung zwischen den Tabellen (-> Primary-Key und Foreign-Key). Constraint Beschreibt die Eigenschaft von Datenbanken; Primary-Key, NOT NULL, usw. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 144 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 8.4 Microsoft Sync Framework Während unserer Einarbeitung im ADO.NET sind wir auf die Synchronisationsplattform von Microsoft gestossen, das sogenannte Microsoft Sync Framework. Beim Einlesen in dem MSDN-Forum stellten wir fest, dass dieses Framework eine solide Basis für unser drittes System bietet. Desweiteren steht das Sync Framework auch kostenlos und franko zur Verfügung. Die Plattform unterstützt zwei Szenarien: offline access (offline-Zugriff) und collaboration (Zusammenarbeit), die in Applikationen oder Diensten integriert werden können. Die Beschreibung der zwei Szenarien wird in den nachfolgenden Kapiteln näher gebracht. Die Microsoft Sync Framework stützt sich auf die fünf Technologien ab: Technologie Beschreibung Kernkomponenten von Sync Framework Dient zum Erstellen von Synchronisierungsanwendungen, die einen beliebigen Datenspeichertyp verwendet. Microsoft Sync Services for ADO.NET Dient zur Synchronisierung von Datenbanken. Metadatenspeicherdienst Dient zur Speicherung von Synchronisierungsmetadaten in einem Lightweight-Datenspeicher (LDAP). Sync Services for File Systems Dient zur Synchronisierung von Dateien und Ordner in einem Filesystem. Sync Services for FeedSync Dient zur Synchronisierung von RSS- und AtomFeeds mit Daten in einem lokalen Speicher. Für unsere Arbeit kommt die Technologie „Microsoft Sync Services for ADO.NET“ in Frage. 8.4.1 Übersicht Zusammenarbeitsszenario (collaboration) Sync Services for ADO.NET synchronisiert die Daten zwischen beliebigen Geräten (Peers), ohne die Änderungen über einen zentralen Server umzuleiten. Die Daten können direkt von einem Peer zum anderen Peer (peer-to-peer) aktualisiert werden. Deshalb kann bei dem Zusammenarbeitsszenario ebenfalls von einer Peer-to-Peer-Synchronisation gesprochen werden. Während der Synchronisation können jeweils nur ein Paar von Peers gemeinsam die Daten austauschen. Bei einer Verknüpfung mit vielen Geräten kann die Gesamtsynchronisation länger dauern als bei einer Client/Server-Synchronisation. Als Peerdatenbank kann ein beliebiges Datenbanksystem verwendet werden, für den ein ADO.NET Provider existiert. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 145 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Abbildung 173: Übersicht Zusammenarbeitsszenario (collaboration) Quelle http://msdn.microsoft.com/en-us/library/bb902818.aspx Im Augenblick kommt dieses Szenario für unsere Arbeit nicht zum Zuge. 8.4.2 Übersicht offline-Szenario (offline access) Das offline-Szenario ist nicht anderes als ein Client/Server-Gebilde. Da die Clients nicht immer mit dem zentralen Server verbunden sind, müssen sie eine Kopie der Serverdaten auf dem Client besitzen. Zudem kann die lokale Kopie der Daten mit dem zentralen Server synchronisiert werden, sobald eine Verbindung mit dem Server aufrecht steht. Die Clients tauschen ihre Änderungen nicht direkt miteinander aus. Sie synchronisieren stets nur mit dem Server (das gleiche Vorgehen wie bei den Systemen I und II). Der Microsoft Sync Services for ADO.NET benötigt Client-seitig ein SQL Server Compact 3.5 SP1 als lokale Datenbank. Server-seitig kann ein beliebiges Datenbanksystem verwendet werden, für das ein ADO.NET Provider zur Verfügung steht. Abbildung 174: Übersicht Offlineszenario (offline access) Quelle http://msdn.microsoft.com/en-us/library/bb902818.aspx Das offline-Szenario entspricht unserer Vorstellung, und wir verfolgen diese Lösung für unser drittes System. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 146 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 8.5 Architektur des offline-Szenarios Sync Services for ADO.NET synchronisiert die Daten zwischen einer lokalen Datenbank (SQL Server Compact 3.5 SP1) auf dem Client und der Back-End-Datenbank auf dem Server, die eine beliebige Datenbank sein kann, die über einen ADO.NET Provider angesprochen werden kann. Sync Services unterstützt für die Synchronisation entweder eine 2-Ebene- (two-tier) oder eine n-Ebene- (n-tier) Architektur. Wir verwenden für unser Synchronisierungssystem die 2-Ebene-Architektur. Abbildung 175: 2-Ebene-Architektur mit Client- und Back-End-Datenbank Quelle http://msdn.microsoft.com/en-us/library/bb726025.aspx Die oben abgebildeten Komponenten sind Sync Services Klassen, die in den folgenden DLLDateien gespeichert sind: DLL-Datei Komponenten Microsoft.Synchronization.Data.dll - Synchronization Agent - Synchronization Tables - Synchronization Groups Microsoft. Synchronization.Data.SqlServerCe.dll - Client Synchronization Provider Microsoft. Synchronization.Data.Server.dll - Server Synchronization Provider - Synchronization Adapters Die aufgelisteten DLL-Dateien benötigen auch die Dateien System.dll und System.Data.dll aus dem .NET Framework 2.0. 8.5.1 Die Architektur-Komponenten des Sync Services Die Architekur des Sync Services besteht aus fünf Komponenten. Nachfolgend werden diese einzeln erklärt. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 147 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Synchronization Agent (Synchronisierungs-Agent) Der Synchronisierungs-Agent steuert die Synchronisation, indem er wie folgt vorgeht: • Zuerst durchläuft er in einer Schlaufe jede Tabelle, die synchronisiert werden soll. • Anschliessend ruft er den Client Synchronization Provider auf, um die Änderungen in der Client-Datenbank zu ermitteln respektive zu speichern. • Als letztes ruft er den Server Synchronization Provider auf, um die Änderungen in der Back-End-Datenbank zu ermitteln respektive zu speichern. • Zudem verwaltet der Synchronization Agent sitzungsspezifische Informationen für die Synchronisation und teilt der Anwendung Informationen wie Fehler-, Erfolgsmeldungen und Statistiken mit. Client Synchronization Provider (Clientsynchronisierungsanbieter) Der Client Synchronization Provider baut die Verbindung zur Client-Datenbank auf. Der Sync Services besitzt bereits einen Provider für den SQL Server Compact 3.5 SP1. Seine Aufgaben sind: • Auf dem Client speichert er die Informationen der Tabellen, die in der Synchronisation beteiligt sind. • Er ermittelt die Änderungen in der Client-Datenbank, die seit der letzten Synchronisation entstanden sind. • Er erkennt auch Konflikte. Server Synchronization Provider (Serversynchronisierungsanbieter) Der Server Synchronization Provider baut die Verbindung zur Server-Datenbank auf. Es kann eine beliebige Server-Datenbank verwendet werden, für die ein ADO.NET Provider zur Verfügung steht. Der Server Synchronization Provider führt die gleichen Aufgaben wie der Client Synchronization Provider aus. Synchronization Table and Synchronization Group (Synchronisierungstabelle und Synchronisierungsgruppe) Eine Synchronisierungstabelle wird für jede Tabelle definiert, die synchronisiert wird. Die Synchronisierungstabelle dient für die Speicherung der Synchronisationsrichtung (nur download, nur upload oder bidirektional) und andere Einstellungen. Die definierten Synchronisierungstabellen können in Synchronisierungsgruppen erfasst werden. Die Synchronisierungsgruppe ist ein Kontrollmechanismus, das die Änderungsübertragung für einen Satz Tabellen übernimmt. Das heisst, Änderungen an den Tabellen werden als Einheit transferiert und als Einzeltransaktion übernommen. Zum Beispiel schlägt der Änderungstransfer in der Gruppe fehl, dann wird bei der nächsten Synchronisation die Änderung der gesamten Gruppe erneut gesendet. Synchronization Adapter (Synchronisierungsadapter) Für jede zu synchronisierende Tabelle wird ein Synchronisierungsadapter definiert, der die spezifischen Kommandos (DeleteCommand, InsertCommand, SelectCommand und UpdateCommand) zur Verfügung stellt, um mit der Datenbank zu interagieren. Der Synchronisierungsadapter basiert auf dem Datenadapter des ADO.NET und kann jede von ADO.NET unterstützte Befehlsstruktur verwenden. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 148 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 8.5.2 Synchronisierungsarten Sync Services for ADO.NET unterstützt vier Synchronisierungsarten: snapshot, download, upload und bidirectional. Sync Services erlaubt unterschiedliche Tabellen mit unterschiedlichen Synchronisierungsarten festzulegen, somit erhöht sich seine Flexibilität. Snapshot-Synchronisierung Bei jeder vom Client angefordeten Synchronisation werden immer alle Daten vom Server zum Client übertragen. Download-Synchronisierung Änderungen, die in der Back-End-Datenbank durchgeführt wurden, werden nur zur ClientDatenbank transferiert. Beim Synchronisieren werden nur die Daten übertragen, die sich seit der letzten Synchronisation geändert haben. (Vergleichbar mit der one-way_from_server Synchronisierungsart bei Funambol). Upload-Synchronisierung Änderungen, die in der Client-Datenbank durchgeführt wurden, werden nur zur Back-EndDatenbank transferiert. Beim Synchronisieren werden nur die Daten übertragen, die sich seit der letzten Synchronisation geändert haben. (Vergleichbar mit der one-way_from_client Synchronisierungsart bei Funambol) Bidirektionale Synchronisierung Die Daten, die sowohl auf dem Client wie auch auf dem Server geändert wurden, werden aktualisiert. (Vergleichbar mit der two-way Synchronisierungsart bei Funambol) Die Synchronisierungsrichtung kann mit Hilfe der SyncDirection-Eigenschaft definiert werden. Dazu stehen die folgenden Werten: Wert Synchronisierungsart Snapshot Snapshot-Synchronisierung DownloadOnly Download-Synchronisierung UploadOnly Upload-Synchronisierung Bidirectional Bidirektionale Synchronisierung Beispiel für C#- Code: SyncTable customerSyncTable = new SyncTable("tabkoord"); // Download the data only from the server // customerSyncTable.SyncDirection = SyncDirection.DownloadOnly; // Upload the data only to the server // customerSyncTable.SyncDirection = SyncDirection.UploadOnly; // Upload and Download the data to/from the server customerSyncTable.SyncDirection = SyncDirection.Bidirectional; ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 149 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 8.6 Installationsablauf des Systems III 8.6.1 Installation auf dem Server Vorbedingung: Der Datenbankserver MT-MSSQL (Windows Server 2003) steht als virtuelle Maschine bereit. Die Softwareplattform .NET Framework 2.0 muss auf dem Server installiert sein. Alle notwendigen Schritte sind im Dokument „MT_Installation_MSSQL2005Express.pdf“ beschrieben (siehe DVD, Verzeichnis „MS_SyncServices\Install_Docs“). 1.) Installiere den MS SQL Server 2005 Express Edition auf dem Server 2.) Installiere den Microsoft SQL Server Management Studio Express 3.) Erstelle die Datenbank, das Datenbankschema, die Tabellen, die Trigger und die Prozeduren Verwende dazu das eigene sql-Skript „MSSQL_CreateDB_Tables_Triggers_Stammdaten.sql“ (unsere Skriptdatei befindet sich im Verzeichnis „SQL-Skripte“ auf der beigelegten DVD) 4.) Konfiguriere den Zugang zum SQL Server 5.) Erstelle den Datenbankbenutzer „vermsys“ 6.) Konfiguriere den Dienst „SQLBrowser“ 7.) Öffne die Ports 1121 und 1434 8.6.2 Installation auf dem Client Vorbedingung: Die Testrechner TestclientE (Windows XP) und TestclientF (Windows XP) stehen als virtuelle Maschinen bereit. Die Softwareplattform .NET Framework 2.0 muss auf den Clients installiert sein. Alle notwendigen Schritte sind im Dokument „MT_Installation_Survey_Client _csharp.pdf“ beschrieben (siehe DVD, Verzeichnis „MS_SyncServices\Install_Docs“). 1.) Installiere den MS SQL Server 2005 Compact Edition auf dem Client 2.) Prototyp GUI: Erstelle ein neues Verzeichnis namens „survey“ direkt auf der C:\ Partition und kopiere den Inhalt aus unserem Verzeichnis „Survey_Client_csharp“ hinein. (Das Verzeichnis befindet sich auch auf der DVD - „PrototypGUI_CSharp\Client“). ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 150 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Abbildung 176: Clientstrukturverzeichnis „Survey“ 3.) Falls nötig konfiguriere die Server-Datenbankzugriffsdaten -> Editiere die Datei „Survey.exe.config“. <add name="MASIT.MasterThesis.Synchronization.Properties.Settings.ServerConnString" connectionString="Data Source=MT-MSSQL\SQLExpress;Initial Catalog=vermdb;User ID=vermsys;Password=vermsys" providerName="System.Data.SqlClient" /> 8.7 Entwicklungsumgebung Synchronisierungs-Client 8.7.1 Anforderung der Entwicklungsumgebung Bevor wir mit dem Programmieren des Synchronisierungs-Clients beginnen konnten, haben wir auf dem Notebook „Isidoro“ und auf der virtuellen Maschine „DevClientADO“ die Programmier-Plattform MS Visual C# 2008 Express Edition installiert. Diese Plattform kann kostenfrei von der Microsoft-Website heruntergeladen werden (http://www.microsoft.com/express/vcsharp/Default.aspx). Bei der Installation der Plattform MS Visual C# 2008 Express Edition wird der SQL Server 2008 Express Edition mitinstalliert. Leider besitzt zurzeit der SQL Server 2008 Express Edition kein benutzerfreundliches Grafikinterface, um mit der Datenbank zu kommunizieren respektive um Verwaltungsaufgaben durchzuführen. Aufgaben wie Skript einspielen oder SQL-Statements absetzen, können mit Hilfe des komplizierten „line-command“ Werkzeugs SQLCMD abgewickelt werden. Die Vorgängerversion SQL Server 2005 Express Edition besitzt seit April 2006 ein zusätzliches Verwaltungs-Tool „Microsoft SQL Server Management Studio Express“ (SSMSE), mit dem man SQL-Statements, Skripte, Benutzer- und Berechtigungsverwaltung einfach und schnell verrichten kann. Das SSMSE ist kostenlos und muss zusätzlich installiert werden. Wegen der vereinfachten Datenbankverwaltung haben wir beschlossen, den SQL Server 2005 Express Edition mit dem Microsoft SQL Server Management Studio Express als Back-End-Datenbank zu verwenden. Um Schwierigkeiten zu vermeiden, sind wir der Meinung, dass auch die Entwicklung unseres SynchronisierungsClients mit einer SQL Server 2005 Datenbank zu erfolgen hat. Deshalb installieren wir zusätzlich auch den SQL Server 2005 Express Edition mit dem Microsoft SQL Server Management Studio Express auf unsere Entwickler-Maschinen. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 151 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ • Installation Visual Studio 2008 (siehe DVD, Verzeichnis „MS_SyncServices\Install_Docs\ MT_Installation_MSVisualCSharp.pdf“) • Installation MS SQL 2005 (siehe DVD, Verzeichnis „MS_SyncServices\Install_Docs\ MT_Installation_MSSQL2005Express.pdf“) Anschliessend soll die Datenbank „vermdb“ mit der Tabelle „tabkoord“ und dem Datenbankbenutzer „vermsys“ in der Entwicklungsinstanz kreiert werden. 8.7.2 C#-Projekt für den Synchronisations-Client erstellen Nach der Installation des Visual Studios 2008 setzten wir uns geradewegs mit dieser Programmier-Plattform auseinander. Wir errichteten als erstes ein kleines Test-Projekt, weil wir keine praktische Erfahrung auf Visual Studios 2008 hatten. In diesem Test-Projekt führten wir einige Funktionen und Code-Beispiele aus. Nachdem wir erste Erfahrungen sammeln konnten und uns mit der Plattform einigermassen vertraut machten, richteten wir unser definitives Projekt namens „Survey“ ein. Über das Menü File | New | Project legten wir unser Projekt auf der Partition C:\ an: Abbildung 177: Projekt „Survey“ anlegen Da wir zum Synchronisierungs-Client zusätzlich auch den Synchronisierungs-Provider benötigten, erweiterten wir die Projektstruktur wie folgt: ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 152 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Abbildung 178: Projektstrukturerweiterung Den Synchronisierungs-Provider bezeichneten wir „VermServerSyncProvider“. Abbildung 179: Synchronisierungs-Provider „VermServerSyncProvider“ ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 153 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Unser Projekt besteht nun aus zwei Teilprojekten. Das untere Abbild zeigt die Projektstruktur an: Abbildung 180: Projektstruktur „Survey“ und „VermServerSyncProvider“ Die erforderlichen .NET Framework Bibliotheken können dem Projekt einfach hinzugefügt werden. Dazu klickt man auf dem Struktur-Menü „References“ mit der rechten Maustaste und wählt „Add Reference...“ aus. Abbildung 181: Bibliotheken anlegen Aus dem unten abgebildeten Bibliotheksfenster kann jeweils nur eine Bibliothek ausgewählt werden. Deshalb wiederholt man diesen Schritt, bis alle nötigen Bibliotheken im Teilprojekt eingefügt sind. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 154 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Abbildung 182: Bibliotheksfenster „Add Reference“ Die nachfolgenden Bilder zeigen alle Bibliotheken unter References beider Teilprojekten „Survey“ und „VermServerSyncProvider“: Abbildung 183: Alle Bibliotheken „Survey“ Abbildung 184: Alle Bibliotheken „VermServerSyncProvider“ Mit rechtem Mausklick auf dem Projektnamen können jederzeit die notwendigen Elemente wie Klassen, DataSet, Windows Form u.s.w. in das Teilprojekt einfach erzeugt werden. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 155 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Abbildung 185: Elemente anlegen 8.7.3 Klassendiagramme Wir haben unser namespace als „MASIT.MasterThesis.Synchronization“ bezeichnet. Die zwei Teilprojekte heissen „Survey“ und „VermServerSyncProvider“. Das Teilprojekt „VermServerSyncProvider“ ist von „Survey“ abhängig. Abbildung 186: Projektabhängigkeit festlegen ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 156 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Unten ist die Übersicht der Klassen dargestellt. namespace = MASIT.MasterThesis.Synchronization Survey VermServerSyncProvider Abbildung 187: Klassendiagramm ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 157 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Klasse Settings Abbildung 188: Klasse Settings Nachdem das Teilprojekt errichtet ist, können unter Eigenschaften (Properties) die Einstellungen (Settings) definiert werden. In den Settings sind die Zugriffsdaten auf die jeweiligen Datenbanken (Back-End-Datenbank und lokale Client-Datenbank) definiert. Abbildung 189: Einstellungen im Teilprojekt Name Typ Wert ServerConnString Connection String Data Source=localhost\SQLExpress; Initial Catalog=vermdb; User ID=vermsys; Password=vermsys LocalvermdbConnectionString Connection String Data Source=|DataDirectory|\localvermdb.sdf; Password=vermsys Diese Einstellungen werden beim Kompilieren in die XML-basierte Datei „Survey.exe.config“ geschrieben. Mit Hilfe dieser Datei kann der Zugriff auf den Datenbanken sehr flexibel gehalten werden. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 158 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Klasse Program Abbildung 190: Klasse Program Die Klasse Program besitzt die Main-Methode, die die grafische Oberfläche aufruft. Klasse MainForm Abbildung 191: Klasse MainForm Für eine bessere Übersicht sind die Felder im Abbild zusammengeklappt. Mit Hilfe der Funktion „Add | New Item...“ kann die Klasse einfach erstellt werden. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 159 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Abbildung 192: Funktion New Item… (1) Anschliessend wird die Art des Elementes ausgewählt und man vergibt den Namen der CSDatei „MainForm“, dieser Name entspricht auch dem Klassennamen. Abbildung 193: Erstellen der Klasse MainForm ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 160 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Die Klasse MainForm erbt von der Klasse Form und enthält die Elemente der grafischen Oberfläche. Dank dem grafischen Werkzeug und seine Toolbox kann das Layout des neuen GUI einfach erstellt werden. Klasse VermSyncAgent Abbildung 194: Klasse VermSyncAgent Die Klasse VermSyncAgent erbt seine Eigenschaften von der abstrakten Klasse SyncAgent (Microsoft.Synchronization.Data.Client.SyncAgent). Sie instanziert folgende Objekte: • Client Synchronisationsprovider • Server Synchronisationsprovider • SyncTable mit ihrer Erstellungsoption und ihrer Synchronisierungsrichtung • sowie die Getter-Methode, um die Statistik abzurufen. Die Methode clientSyncProvider_ChangesApplied wird für die Statistikermittlung benötigt. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 161 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Klasse VermSyncDbDataSet Abbildung 195: Klasse VermSyncDbDataSet Aus der ADO.NET Architektur haben wir gelernt, dass sie aus zwei Hauptkomponente besteht; dem DataProvider und dem DataSet. Diese Klasse dient dazu, der DataSet mit der DataTable zu definieren. Weiter wird hier auch der DataAdapter mit seinen SQL-Statements festgelegt. Mit Hilfe der Funktion „Add | New Item...“ kann auch diese Klasse einfach erstellt werden. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 162 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Abbildung 196: Funktion New Item… (2) Die Vorlage DataSet muss selektiert werden. Anschliessend soll der Name für unser DataSet angegeben werden. Abbildung 197: Erstellen der Klasse VermSyncDbDataSet ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 163 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Sobald der DataSet angelegt ist, kann mit Hilfe des Wizards die TableAdapter für die BackEnd-Datenbank und für die lokale Client-Datenbank erstellt werden. Dabei muss auf der Arbeitsfläche mit dem rechten Mausklick das Kontentmenü aktiviert werden. Abbildung 198: TableAdapter erstellen Der Wizard wird geöffnet. Abbildung 199: TableAdapter Configuration Wizard Die Verbindung zur Datenbank muss selektiert werden. Die Verbindungsarten entsprechen derjenigen die in den Settings definierten Verbindungen (siehe Klasse Settings). Folge die Anweisung des Wizards. Die obige Aktion wird für den TableAdapter „local_tabkoordTableAdapter mit dem DataTable “tabkoord“ ausgeführt. Dies dient für den Zugriff auf die Tabelle „tabkoord“ in der lokalen Client-Datenbank. Analog wiederholt man die Prozedur um den TableAdapter ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 164 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ „tabkoordTableAdapter“ mit der DataTable local_tabkoord. Dieses Element dient für den Zugriff auf die Tabelle „tabkoord“ in der Back-End-Datenbank. Abbildung 200: TableAdapter tabkoord & local_tabkoord Dabei wird auch die Klasse TableAdapterManager automatisch erstellt. Abbildung 201: Klasse TableAdapterManager Diese Klasse dient zur Verwaltung der erstellten TableAdapter. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 165 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Klasse tabkoordTableAdapter Abbildung 202: Klasse tabkoordTableAdapter Diese Klasse dient für die Anzeige der Datensätze von der Back-End-Datenbank auf dem GUI. Wie in der Klasse VermSyncDbDataSet gezeigt, kann mit Hilfe des Wizards die Komponente „tabkoordTableAdapter“ erstellt werden. Diese entspricht der Klasse tabkoordTableAdapter. Abbildung 203: tabkoordTableAdapter Die SQL-Statements können unter Eigenschaften (Properties) des Elements definiert werden. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 166 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Abbildung 204: Eigenschaften des tabkoordTableAdapters Command CommandText DeleteCommand DELETE FROM vermsys.tabkoord WHERE (xkoord = @Original_xkoord) AND (ykoord = @Original_ykoord) AND (pktnr = @Original_pktnr) InsertCommand INSERT INTO vermsys.tabkoord (pktnr, ykoord, xkoord) VALUES (@pktnr,@ykoord,@xkoord) SelectCommand SELECT pktnr, ykoord, xkoord FROM vermsys.tabkoord UpdateCommand UPDATE vermsys.tabkoord SET pktnr = @pktnr, ykoord = @ykoord, xkoord = @xkoord WHERE (pktnr = @Original_pktnr) AND (ykoord = @Original_ykoord) AND (xkoord = @Original_xkoord) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 167 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Klasse local_tabkoordTableAdapter Abbildung 205: Klasse local_tabkoordTableAdapter Analog der Klasse tabkoordTableAdapter dient diese Klasse für die Anzeige der Datensätze von der Client-Datenbank auf dem GUI. Auch diese Klasse ist mit dem Wizard der Klasse VermSyncDbDataSet erstellt worden. Abbildung 206: local_tabkoordTableAdapter Unter Properties des Elements können die SQL-Statements definiert werden. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 168 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Abbildung 207: Eigenschaften des local_tabkoordTableAdapters Command CommandText DeleteCommand DELETE FROM tabkoord WHERE (pktnr = @pktnr) InsertCommand INSERT INTO tabkoord (pktnr, ykoord, xkoord) VALUES (@pktnr,@ykoord,@xkoord) SelectCommand SELECT pktnr, ykoord, xkoord FROM tabkoord UpdateCommand UPDATE tabkoord SET pktnr = @pktnr, ykoord = @ykoord, xkoord = @xkoord WHERE (pktnr = @Original_pktnr) AND (ykoord = @Original_ykoord) AND (xkoord = @Original_xkoord) Klasse VermServerSyncProvider Abbildung 208: Klasse VermServerSyncProvider ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 169 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Die Klasse VermServerSyncProvider erbt die Eigenschaften der abstrakten Klasse DbServerSyncProvider (Microsoft.Synchronization.Server. DbServerSyncProvider). Sie baut die Verbindung zur Hauptdatenbank auf. Weiter wird Folgendes durchgeführt: • Der Synchronisierungsadapter-Builder wird instanziert. • Fügt die Tabellen und ihre „Tombstone“-Tabellen. • Definiert die Synchronisationsrichtung. • Definiert die Spalten, die synchronisiert werden sollen. • Definiert die Spalten, die beim Änderungsnachverfolgung (Change Tracking) verwendet werden. 8.8 Prototyp GUI in C# Wie bereits mit den zwei vorherigen Systemen wollten wir ursprünglich unser Java Prototyp GUI als Eingabe-Client verwenden. Gemäss unseren Recherchen betreffend der ClientDatenbank haben wir herausgefunden, dass MS SQL Server 2005 Compact Edition die Schnittstellen JDBC und ODBC nicht unterstützt. Und leider stellt Java kein ADO.NET API (Application Programming Interface) zur Verfügung. Nun standen wir vor zwei Wahlen. Entweder verwenden wir einen anderen Client Synchronization Provider, der uns erlaubt via JDBC oder ODBC die Datenbank wie zum Beispiel MS Access anzusprechen oder wir programmieren einen neuen Prototyp GUI in C# (C-Sharp). Unter Berücksichtigung einiger Kriterien wie Zeit und Aufwand - unsere Einschätzung inbegriffen - haben wir uns entschieden, einen anderen Provider zu verwenden. Dabei fanden wir heraus, dass der MS SQL Server 2005 Compact Edition Provider (SqlCeClientSyncProvider) eine Vererbung der abstrakten Klasse DbSyncProvider ist. So begannen wir einen eigenen Provider basierend auf dieser abstrakten Klasse zu entwickeln. Beim Erstellen unseres Providers stellten wir leider fest, dass das Programmieren des Providers alleine nicht genügt. Der gesamte Change Tracking (Änderungsnachverfolgung) muss auch neu geschrieben werden. An dieser Stelle haben wir kurzerhand beschlossen, die Entwicklungsarbeit abzubrechen. Die nicht durchschaubaren Abhängigkeiten und Komplexität des Synchronisierungsmechanismus führten massgeblich zu diesem Entscheid. Nun blieb uns nicht anderes übrig als einen neuen Prototyp GUI in C# zu programmieren. Dieser haben wir in unserer Synchronisierungs-Client-Applikation implementiert. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 170 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 8.8.1 Programm Prototyp GUI Das nachfolgende Bild zeigt unsere Synchronisierungs-Client-Applikation, welche zugleich die Rolle unseres Prototyps GUI einnimmt: Abbildung 209: Programm mit Beschreibung Navigations-Felder Im Navigations-Feld befinden sich alle Funktionen für die Datenmanipulation. Die nachfolgende Tabelle beschreibt die Funktionen: Funktionen Beschreibung Springt zum ersten Datensatz hin. Springt einen Datensatz zurück. Zeigt Position des Datensatzes und Anzahl Datensätze an. Springt zum nächsten Datensatz hin. Springt zum letzten Datensatz hin. Fügt einen neuen Datensatz. Löscht einen Datensatz. Beim Hinzufügen, Ändern und Löschen eines Datensatzes muss die Speicherfunktion betätigt werden, damit die Ausführung in der jeweiligen Datenbank wirksam wird. Aktualisiert die Anzeige-Tabelle. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 171 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Daten-Anzeigetabelle Die obere Tabelle zeigt die Daten der Hauptdatenbank an. Die Daten werden aufgelistet, falls die Verbindung zur Hauptdatenbank da ist und die Hauptdatenbank besteht. Die untere Tabelle zeigt die Daten der lokalen Datenbank an, insofern Daten vorhanden sind. Falls nicht erhält die lokale Datenbank durch Auslösung der Synchronisation die Daten aus der Hauptdatenbank. Erst dann wird auch die untere Tabelle eingeblendet. Auslöser-Buttons Mit der Schaltfläche „Delete Client Database“ kann die lokale Datenbank gelöscht werden. Dabei wird die gesamte Datenbank gelöscht. Die Datenbankdatei „localvermdb.sdf“ wird von der Festplatte entfernt. Mit der Schaltfläche „Synchronize“ wird die Synchronisation zwischen beiden Datenbanken ausgelöst. Unter anderem wird die lokale Datenbank neu angelegt, falls sie nicht existiert respektive die Datenbankdatei „localvermdb.sdf“ wird im Client-Verzeichnis erzeugt. Die Schaltfläche „Synchronize“ ist inaktiv, falls keine Verbindung zur Hauptdatenbank vorhanden ist. Statistik-Angaben In unserem Programm werden nützliche Informationen dargestellt. Diese sind die Start- und Endzeit der Synchronisation und die Anzahl manipulierter Datensätze. Zudem können wir lesen, um was für eine Manipulation (Insert, Update und Delete) es sich handelt. 8.9 Systemtest III 8.9.1 Ausgangslage Bei unseren Testfällen gehen wir gemäss Pflichtenheft von diesen Bedingungen aus: • Die Stammdaten befinden sich in der Hauptdatenbank • Client E und F sind online für die Fälle 1-6 • Client E und F sind offline für die Fälle 7-8 Bedingung: Skript „Stammdaten_MSSync.sql“ (siehe im Verzeichnis „SQL-Skripte“ auf der beigelegten DVD) in die Hauptdatenbank einspielen. Auf den Clients muss die lokale Datenbank „localvermdb“ mit der Tabelle „tabkoord“ nicht zwingend vorhanden sein. Falls die lokale Datenbank nicht existiert, erstellt sie unser GUI bei der ersten Synchronisation mit der Hauptdatenbank. Anhand folgendes Skriptinhalts „Stammdaten_MSSync.sql“ werden die Stammdaten in der Hauptdatenbank importiert: USE vermdb GO DELETE FROM vermsys.tabkoord DELETE FROM vermsys.tabkoord_Tombstone GO ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 172 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ INSERT INTO vermdb.vermsys.tabkoord (pktnr, ykoord, xkoord) VALUES ('1', '660634.772', '244641.123') INSERT INTO vermdb.vermsys.tabkoord (pktnr, ykoord, xkoord) VALUES ('2', '660617.409', '244653.457') INSERT INTO vermdb.vermsys.tabkoord (pktnr, ykoord, xkoord) VALUES ('3', '660675.128', '244607.968') INSERT INTO vermdb.vermsys.tabkoord (pktnr, ykoord, xkoord) VALUES ('4', '660661.096', '244653.276') INSERT INTO vermdb.vermsys.tabkoord (pktnr, ykoord, xkoord) VALUES ('5', '660660.782', '244601.123') GO Auf die Bildschirme des Servers und der Clients sehen die Startsituationen folgendermassen aus. Startsituation in der Hauptdatenbank: Abbildung 210: Startsituation in der MSSQL Hauptdatenbank (Ausgangslage) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 173 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Startsituation auf dem TestclientE Abbildung 211: Startsituation TestclientE (Ausgangslage) Startsituation auf dem TestclientF Abbildung 212: Startsituation TestclientE (Ausgangslage) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 174 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 8.9.2 Testfälle Fall 1: TestclientE: Fügt einen neuen Punkt 6 mit den Koordinaten 10.0 und 11.0 ein: Klicke auf dem Icon „Add new“ Abbildung 213: Icon „Add new“ Trage die Werte des Punkts 6 ein Abbildung 214: Punkt einfügen TestclientE (Fall 1) Speichere den Eintrag Abbildung 215: Icon „Save“ (Fall 1) Achtung: Jede Änderung muss gespeichert werden, da der Eintrag in der Tabelle nicht automatisch gespeichert wird. Manuelle Synchronisation auf dem TestclientE auslösen: Abbildung 216: Synchronisation auslösen TestclientE (Fall 1) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 175 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Situation in der Hauptdatenbank Abbildung 217: Situation in der MSSQL Hauptdatenbank (Fall 1) Situation TestclientF: Manuelle Synchronisation auf dem TestclientF auslösen: Abbildung 218: Synchronisation auslösen TestclientE (Fall 1) Abbildung 219: Neuer Punkt TestclientF ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 176 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Fall 2: TestclientF: Modifiziere den bestehenden Punkt 3 mit folgenden Werten: Y-Koordinaten = 10.0 und X-Koordinaten = 110.0 Abbildung 220: Punkt 3 modifizieren TestclientF (Fall 2) Speichere den Eintrag Abbildung 221: Icon „Save“ (Fall 2) Manuelle Synchronisation auf dem TestclientF auslösen: Abbildung 222: Synchronisation auslösen TestclientF (Fall 2) Situation in der Hauptdatenbank Abbildung 223: Situation in der MSSQL Hauptdatenbank (Fall 2) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 177 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Situation TestclientE: Manuelle Synchronisation auf dem TestclientE auslösen: Abbildung 224: Synchronisation auslösen TestclientE (Fall 2) Resultat: Abbildung 225: Situation TestclientE (Fall 2) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 178 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Fall 3: Beide Clients fügen „gleichzeitig“ denselben Punkt 7 aber mit diversen Werten ein: TestclientE: Y-Koordinaten = 13.0 und X-Koordinaten = 130.0 Abbildung 226: Situation TestclientE (Fall 3) Wichtig: Speichern nicht vergessen! TestclientF: Y-Koordinaten = 14.0 und X-Koordinaten = 140.0 Abbildung 227: Situation TestclientF (Fall 3) Manuelle Synchronisation auf beide Testclients auslösen: Abbildung 228: Synchronisation gleichzeitig auslösen TestclientE & F (Fall 3) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 179 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Situation in der Hauptdatenbank Abbildung 229: Situation in der MSSQL Hauptdatenbank (Fall 3) Bemerkung: Bei gleichzeitigem Synchronisieren wurden die Werte des TestclientE übernommen. Die Werte des TestclientF sind gemäss Infostand (Sync Statistics) auf dem GUI des Clients zur Hauptdatenbank gesendet worden. Abbildung 230: Situation TestclientF nach der Synchronisation (Fall 3) Jedoch können wir anhand des Systems nicht herausfinden, was mit ihnen passiert ist. Das System bietet uns auch keinen Dienst an, um den Prozessablauf analysieren und das Ganze besser nachvollziehen zu können. Bei Oracle haben wir die Möglichkeit in der ERRORQueue und bei Funambol in den Log-Files nachzuschauen. Unsere Tombstone-Tabelle kann uns leider auch nicht Aufschluss geben, wie nachfolgendes Bild zeigt. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 180 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Abbildung 231: Situation in der Tombstone-Tabelle (Fall 3) Eine erneute Synchronisation auf dem TestclientF führt zu keiner neuen Erkenntnis. Es bleibt alles beim Alten. Ein Fehler in der Systemumgebung kann ausgeschlossen werden. Demzufolge können wir von einer Dateninkonsistenz zwischen der Hauptdatenbank und der lokalen Datenbank vom TestclientF sprechen. Dieser Vorgang wurde dreimal wiederholt und wir bekommen immer das gleiche Ergebnis. Fall 4: TestclientE: Löscht den Punkt 3 Selektiere den Punkt 3 und lösche ihn Abbildung 232: Startsituation TestclientE (Fall 4) Wichtig: Speichern nicht vergessen! Manuelle Synchronisation auf dem TestclientE auslösen: Abbildung 233: Synchronisation auslösen TestclientE (Fall 4) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 181 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Situation in der Hauptdatenbank Abbildung 234: Situation in der MSSQL Hauptdatenbank Fall 4 Der Punkt 3 existiert nicht mehr in der Tabelle tabkoord. Sein Datensatz wurde mit Hilfe des Triggers in der Tabelle der gelöschten Daten (tabkoord_Tombstone) verschoben. Abbildung 235: Situation in der Tombstone-Tabelle (Fall 4) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 182 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ TestclientF: Unmittelbar danach ändert die Koordinaten des Punkts 3 (Y=1234; X=4321) Ändere Koordinatenwerte von Punkt 3 Abbildung 236: Punkt 3 modifizieren TestclientF (Fall 4) Wichtig: Speichern nicht vergessen! Manuelle Synchronisation auf dem TestclientF auslösen: Abbildung 237: Synchronisation auslösen TestclientF (Fall 4) Resultat: Abbildung 238: Endsituation TestclientF (Fall 4) Bemerkung: Die aktualisierten Werte des Punkts 3 sind nicht zur Back-End-Datenbank transferiert worden, sondern der Punkt 3 ist aus der lokalen Datenbank gelöscht worden (Server-Wins!). ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 183 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Situation in der Hauptdatenbank Abbildung 239: Situation in der MSSQL Hauptdatenbank (Fall 4) Fazit: Der Zustand der Back-End-Datenbank wird zuerst zum Client transferiert. Folglich wird der Punkt 3 auf dem Client F gelöscht. Seine geänderten Werte werden nicht berücksichtigt. Somit haben wir herausgefunden, dass unser System Server-dominant ist. Fall 5: Lösche den Punkt 3 direkt aus der Hauptdatenbank Da der Punkt 3 nicht mehr in der Datenbank vorhanden ist (siehe Fall 4), haben wir beschlossen, die Aufgabe mit dem Punkt 2 durchzuführen. Abbildung 240: Situation in der MSSQL Hauptdatenbank (Fall 5) Manuelle Synchronisation auf beide Testclients auslösen: Abbildung 241: Synchronisation auf beide TestclientE & F auslösen (Fall 5) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 184 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Situation TestclientE: Abbildung 242: Situationen TestclientE (Fall 5) Situation TestclientF: Abbildung 243: Situationen TestclientF (Fall 5) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 185 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Fall 6: Modifiziere die Koordinatenwerte des Punkts 6 direkt in der Hauptdatenbank Y = 1234 und X = 4321 Abbildung 244: Situation in der MSSQL Hauptdatenbank (Fall 6) Bei einem Update kommt unser Trigger „tabkoord_UpdateTrigger“ zum Zuge. Dieser Trigger nimmt den zu ändernden Datensatz, in unserem Fall der Punkt 6, von der Tabelle heraus und fügt ihn neu in der Tombstone-Tabelle ein. In der Tabelle tabkoord wird ein neuer Datensatz mit der Punktnummer 6 und den aktualisierten Werten erstellt. Für nähere Angaben zum Update mit unserem Triggerverfahren siehe Datenbankkapitel 9.7. Manuelle Synchronisation auf beide Testclients auslösen: Abbildung 245: Synchronisation auf beide TestclientE & F auslösen (Fall 6) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 186 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Situation TestclientE: Abbildung 246: Situationen TestclientE (Fall 6) Situation TestclientF: Abbildung 247: Situationen TestclientF (Fall 6) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 187 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Fall 7: Bemerkung: Die Clients müssen bei einer manuellen Synchronisation nicht offline gesetzt werden, denn die Synchronisierung findet erst beim Auslösen des Buttons „Synchronize“ statt. Ausgangslage: Lösche alle Daten in den lokalen Datenbanken. Skript „Stammdaten_MSSync.sql“ in die Hauptdatenbank einspielen Starte die manuelle Synchronisation auf beide Testclients TestclientE: Füge 2 neue Punkte ein Punkt 6 (Y = 1234; X = 4321) und Punkt 7 (Y = 9876; X = 6789) TestclientF: Füge 2 weitere Punkte ein Punkt 8 (Y = 1234; X = 4321) und Punkt 9 (Y = 9876; X = 6789) Situation in der Hauptdatenbank: Abbildung 248: Situation in der MSSQL Hauptdatenbank (Fall 7) Auf den Clients lösche die bestehende lokale Datenbank mit dem Button „Delete Client Database“. Abbildung 249: Lokale DB auf beide TestclientE & F löschen (Fall 7) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 188 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Anschliessend synchronisiere wieder mit der Hauptdatenbank. Abbildung 250: Synchronisation auf beide TestclientE & F auslösen (Fall 7) Situation TestclientE: Abbildung 251: Situation TestclientE (Fall 7) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 189 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Situation TestclientF: Abbildung 252: Situation TestclientF (Fall 7) Trage die entsprechenden Punkte in den jeweiligen Client ein. TestclientE: Abbildung 253: Punkte 6 und 7 einfügen TestclientE (Fall7) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 190 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ TestclientF: Abbildung 254: Punkte 8 und 9 einfügen TestclientF (Fall 7) Client F startet die manuelle Synchronisation: Abbildung 255: Synchronisation auf TestclientF auslösen (Fall 7) Situation in der Haupdatenbank: Abbildung 256: Situation in der MSSQL Hauptdatenbank nach F (Fall 7) Client E startet die manuelle Synchronisation: Abbildung 257: Synchronisation auf TestclientE auslösen (Fall 7) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 191 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Situation in der Haupdatenbank: Abbildung 258: Situation in der MSSQL Hauptdatenbank nach E (Fall 7) Situation TestclientE: Nach der Synchronisation erscheinen auch die Punkte des Clients F. Punkte, die vom Client F stammen Abbildung 259: Situation TestclientE nach Synchronisation Fall 7 (4 Inserts = 2 Punkte vom Client E und 2 Punkte vom Client F) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 192 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Situation TestclientF: Abbildung 260: Situation TestclientF (Fall 7) Client F startet erneut die manuelle Synchronisation, um die zugeführten Punkten des Clients E zu erhalten. Abbildung 261: Synchronisation auf TestclientF auslösen (Fall 7) Punkte, die vom Client E stammen Abbildung 262: Situation TestclientF nach Synchronisation (Fall 7) Fall 8: Die Clients sind offline und in der Hauptdatenbank soll direkt ein Punkt modifiziert werden. Änderung: Punkt 3 mit Koordinaten Y = 7654.321 und X = 1234.567 Anschliessend werden die Clients online gesetzt. Da die Synchronisierung manuell gestartet wird, verhält sich diese Aufgabe gleich wie die Aufgabe 6. Somit kann die Aufgabe hier beendet werden. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 193 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 8.9.3 Quintesenz der Testfälle beim System III Auch bei diesem System haben wir die Testreihe dreimal wiederholt. Das Ergebnis weicht nicht von den zwei anderen Systemen ab. Gegenüber den beiden anderen Systemen ist es in diesem System nicht einfach Konflikte wie die Fälle 3 und 4 zu ermitteln. Es war auch nicht zu erwarten, dass ein kostenloses Produkt ein Werkzeug für die Konfliktanalyse standardmässig zur Verfügung stellen würde. Hier wird vieles dem Entwickler überlassen. Anhand der beiden Anzeigetabellen im neuen Prototyp GUI können einige Konflikte festgestellt werden. Die obere Anzeigetabelle zeigt die Daten auf dem Server, die untere die Daten auf dem Client. Diese beiden Tabellen können unser Erachtens dem Benutzer beim Ermitteln von Konflikten behilflich sein. Auch wir nahmen für die Konfliktanalyse Bezug auf die beiden Anzeigetabellen, welches sich bewährt hat. Die Konfliktfälle sollten mit diesem System in einem kleinen Benutzerumfeld ebenfalls sehr selten auftreten. Die Wahrscheinlichkeit, dass zwei Clients den gleichen Datensatz gleichzeitig ändern und synchronisieren, ist klein. Ausserdem muss bei der Erfassung neuer Datensätze durch diverse Clients sichergestellt werden, dass die Clients unterschiedliche Punktnummer verwenden. Das entspricht auch die Praxis im Vermessungswesen. Mit regelmässigem Synchronisieren in kurzen Zeitabständen können zusätzlich Konflikte vermieden werden. Ein gleichzeitiges Synchronisieren ist zu vermeiden! Wie bei Funambol bietet Microsoft keine automatische Synchronisation an. Aber mit Hilfe des Betriebssystems (Scheduled Tasks = geplante Jobs) kann eine automatische Synchronisierung erzielt werden. Dabei muss unsere Applikation erweitert werden, um die Synchronisation mit Eingabeparameter von der Kommando-Zeile aus zu starten. Die offline-Fälle 7 und 8 machen nur bei einer automatischen Synchronisation Sinn. Aufgabe 8 entspricht bei einer manuellen Synchronisation der Aufgabe 6. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 194 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 9 Datenbanken 9.1 Einleitung Für unsere Arbeit haben wir verschiedene Datenbanken eingesetzt. MS-Access und MySQL haben wir für Testzwecken des Prototyps GUI gebraucht. Die Datenbank HSQLDB wurde als lokale Datenbank bei Funambol benutzt. Da Funambol beim Synchronisieren die Spalten „Status“ und „Timestamp“ benötigt, musste die Datentabelle der HSQLDB und Back-EndDatenbank (MySQL) um diese zwei Attribute erweitert werden. Entsprechend musste auch der Code im Prototyp GUI angepasst werden. Oracle Database Lite ist unser erstes Synchronisierungssystem, das wir näher betrachtet haben. Als Back-End-Datenbank setzten wir die Oracle 10g ein. Auf den Clients wird beim Verteilen des Synchronisations-Clients (Mobile Client) eine Oracle „footprint“-Datenbank installiert. In unserem dritten System haben wir auf dem Server MS SQL Server 2005 Express Edition als Back-End-Datenbank eingesetzt. Dabei zwang uns das Synchronisierungssystem „Microsoft Synchronization Services for ADO.NET“ auf die Clients die MS SQL Server 2005 Compact Edition als lokale Datenbank zu verwenden. Auch bei diesem System musste eine DatenbankschemaErweiterung vorgenommen werden. All diese Datenbanken haben die gleiche Ausgangslage. Der Datenbankname „vermdb“ heisst bei allen Back-End-Datenbanken gleich. Bei den lokalen Datenbanken wird der Name „localvermdb“ verwendet. Jede enthält eine Tabelle namens „tabkoord“ und die gleichen Daten. Es kommen fünf Punktdatensätze mit den drei wichtigen Attributen (Punktnummer, Y-Koordinate und X-Koordinate) vor. Die Daten wurden bei fast allen Datenbanken über ein Skript importiert. Die Punktnummer ist der eindeutige Identifikator (primärer Schlüssel). 9.2 MS-Access Für das Testen der Benutzungsoberfläche unseres Prototyps GUI haben wir eine AccessDatenbank „vermdb.mdb“ verwendet. Wie bereits in der Einleitung erwähnt, besitzt die Datenbank nur eine Tabelle „tabkoord“ mit den fünf Stammdatensätzen. Sie besteht aus drei Attributen: Abbildung 263: Attribute in MS-Access Die Punktnummer (Zeile PktNr) dient als primärer Schlüssel. Ihr Zahlwert kann in der Tabelle nur einmal vorkommen. Alle Zeilen müssen Daten (NOT NULL) enthalten. Abbildung 264: Spaltenbeschreibung in MS-Access ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 195 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Die Werte der Tabelle wurden vorgängig händisch eingetragen. Abbildung 265: Stammdaten in MS-Access Der Zugriff auf die Datenbank läuft über die ODBC-Schnittstelle von Microsoft. Abbildung 266: ODBC-Einstellung Microsoft für MS-Access Codeausschnitt des Prototyps GUI für die Datenbankverbindung Für die Datenbankverbindung müssen in der Java Klasse „VermDb“ der entsprechende JDBC-Treiber und -URL verwendet werden: if (dbmsType.equals("MS Access")){ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); con = DriverManager.getConnection(url); … ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 196 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 9.3 MySQL Für unseren Prototyp GUI haben wir zu Testzwecken auch eine MySQL-Datenbank angelegt. Das Besondere an MySQL ist, dass der Zugriff auf die Datenbank via einen Server läuft, den uns XAMPP als Open Source zur Verfügung stellt. Zudem haben wir einen Benutzer „vermsys“ erstellt, der mit Passwort auf die Datenbank zugreifen kann. Diese Eigenschaften kommen uns beim Testen der „ListGUI“- und „DialogLogin“-Oberfläche respektive der Verbindung zur Datenbank sehr gelegen. Hier ein Ausschnitt unseres Testusers mit Zugriffsrechten: Abbildung 267: Benutzer mit Zugriff in MySQL Aus dem nachfolgenden Ausschnitt ist ersichtlich, dass die „vermdb“ aus einer Tabelle besteht: Abbildung 268: Tabellenbestand in MySQL Die Daten und ihre Struktur werden hier folgendermassen dargestellt: Abbildung 269: Stammdaten in MySQL Abbildung 270: Spaltenbeschreibung in MySQL ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 197 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Codeausschnitt des Prototyps GUI für die Datenbankverbindung Für die Datenbankverbindung müssen in der Java Klasse „VermDb“ der entsprechende JDBC-Treiber und -URL verwendet werden: if (dbmsType.equals("MySQL")){ Class.forName("com.mysql.jdbc.Driver").newInstance(); con = DriverManager.getConnection(url, strUser, strPassword); … Bei Funambol kam MySQL als Back-End-Datenbank zum Einsatz. Die Tabelle „tabkoord“ wurde wegen des Funambol-Systems um die Spalten „fmbstatus“ und „fmbtimestamp“ erweitert, welche die NOT NULL Constraint besitzen. Mit dem Funambol-System werden auf der Hauptdatenbank keine Datensätze physisch gelöscht. Ein gelöschter Datensatz wird mit dem Status „D“ für Delete vermerkt. Es gibt noch die Statusarten „N“ für New und „U“ für Update. Je nach Datenmanipulation wird in der Spalte „fmbstatus“ das entsprechende Zeichen eingetragen. Zugleich wird in der Spalte „fmbtimestamp“ die Zeit der Änderung (CURRENT_TIMESTAMP) registriert. Diese Eigenschaft spielt eine wesentliche Rolle beim Synchronisieren von verschiedenen lokalen Datenbanken zur Hauptdatenbank. Am folgenden Beispiel wird der Sinn beider Spalten und weshalb ein Datensatz in der Hauptdatenbank physisch nicht gelöscht werden kann, näher erklärt. Ein Datensatz befindet sich identisch sowohl auf der Hauptdatenbank wie auch auf der lokalen Datenbank. Beide Datensätze sind mit Zeitstempel der Erstellung oder Änderung versehen. Würde man diesen Datensatz in der Hauptdatenbank physisch löschen, dann würde dieser bei der nächsten Synchronisierung in der lokalen Datenbank nicht gelöscht, weil die Synchronisierung nur bestehende Datensätze mit Zeitstempel ab Abschlusszeit der letzten Synchronisation berücksichtigt. Somit wird der Datensatz der lokalen Datenbank von der Synchronisierung nicht mehr erfasst und dies würde also zu einer Dateninkonsistenz (Datenleiche) führen. Bei der lokalen Datenbank sieht es ganz anders aus. Ein gelöschter Datensatz wird mit dem Status „D“ solange geführt bis eine Synchronisierung mit der Hauptdatenbank stattgefunden hat. Erst danach wird der Datensatz physisch in der lokalen Datenbank gelöscht. Der SyncClient merkt sich jeweils den Zeitpunkt der letzten Synchronisierung. Codeausschnitt des Prototyps GUI für die Datenbankverbindung Für die Datenbankverbindung müssen in der Java Klasse „VermDb“ der entsprechende JDBC-Treiber und -URL verwendet werden: if (dbmsType.equals("Funambol DS MySQL")){ Class.forName("com.mysql.jdbc.Driver").newInstance(); con = DriverManager.getConnection(url, strUser, strPassword); … ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 198 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 9.4 HSQLDB Wie bereits in der Einleitung erwähnt, verwenden wir in unserem Funambol-System HSQLDB als lokale Datenbank. HSQLDB kann unter www.hsqldb.org heruntergeladen werden. Am besten geht man in der Website auf „latest stable version“ und lädt sich die hsqldb_1_8_0_10.zip herunter. Diese zip-Datei soll auf das Verzeichnis C:\ des Clients entpackt werden. Folgende Verzeichnisstruktur erhält man: Abbildung 271: hsqldb-Verzeichnisstruktur Unter dem Verzeichnis hsqldb\doc\guide befindet sich das Benutzer-Handbuch guide.pdf (Hsqldb User Guide). Dort wird unter anderem beschrieben, wie die Datenbank gestartet werden kann. Es gibt da verschiedene Wege. Wir haben uns entschieden, die Datenbank in Server Modus zu starten. Um die Datenbank hochzufahren, haben wir zur Vereinfachung ein Skript „Start_HSQLDB_Server.bat“ erstellt. Die Datei muss bei uns im Verzeichnis C:\hsqldb abgelegt werden. Eine Kopie der Datei befindet sich auch auf der beigelegten DVD im Verzeichnis „Tools\Database\hsqldb“. Inhalt des Files Start_HSQLDB_Server.bat: set JAVA_HOME=C:\Program Files\Java\jre6 set HSQLDB_HOME=C:\hsqldb cd C:\hsqldb java -cp %HSQLDB_HOME%\lib\hsqldb.jar org.hsqldb.Server -database.0 file:localvermdb dbname.0 localvermdb Der Server wird gestartet und man erhält folgendes Bild in der Kommando-Konsole: Abbildung 272: HSQLDB Server gestartet ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 199 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Danach muss das Benutzer-GUI mit der runManager.bat-Datei gestartet werden, welche sich im Verzeichnis „C:\hsqldb\demo“ befindet. Das Anmeldepanel des HSQL Database Managers wird geöffnet, wie nachfolgendes Bild zeigt: Abbildung 273: Anmeldepanel HSQLDB Manager Im Anmeldepanel werden unter Type der HSQL Database Engine Server ausgewählt und unter URL der Datenbankname „localvermdb“ noch angegeben. Der standardmässige Username „sa“ ohne Passwort bleibt bestehen. Mit Ok erhält man das folgende GUI: Abbildung 274: Verwaltungspanel HSQLDB Die Tabelle „tabkoord“ ist im Abbild bereits ersichtlich. Diese müsste natürlich als nächster Schritt mit folgendem Skriptinhalt erzeugt werden: ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 200 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ DROP TABLE tabkoord; CREATE TABLE tabkoord (pktnr VARCHAR(4) NOT NULL, ykoord VARCHAR(9) NOT NULL, xkoord VARCHAR(9) NOT NULL, fmbstatus CHAR(1) NOT NULL, fmbtimestamp TIMESTAMP NOT NULL, PRIMARY KEY (pktnr)); Die Tabelle weist folgende Struktur auf: Abbildung 275: Strukturbeschreibung in HSQLDB Nullable: false bedeutet, dass die Daten NOT NULL sein müssen. Im Indices ist der Primärschlüssel „pktNr“ eingetragen. Die Daten können über folgende Statement-Anweisung „select * from tabkoord;“ angezeigt werden, welche vorgängig über das Skript „Stammdaten_Funambol.sql“ importiert wurden: ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 201 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Abbildung 276: Stammdaten in HSQLDB Codeausschnitt des Prototyps GUI für die Datenbankverbindung Für die Datenbankverbindung müssen in der Java Klasse „VermDb“ der entsprechende JDBC-Treiber und -URL verwendet werden: if (dbmsType.equals("Funambol DS HSQL")){ Class.forName("org.hsqldb.jdbcDriver").newInstance(); con = DriverManager.getConnection(url, strUser, strPassword); … 9.5 Oracle Bei der ersten Systemevaluation haben wir Oracle als Back-End-Datenbank eingesetzt. In Oracle werden anhand der Applikation Oracle SQLDeveloper die Daten und ihre Struktur folgendermassen dargestellt: Abbildung 277: Stammdaten in Oracle Die Werte der Tabelle wurden vorgängig über das Skript „Stammdaten.sql“ importiert. Abbildung 278: Spaltenbeschreibung in Oracle ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 202 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Codeausschnitt des Prototyps GUI für die Datenbankverbindung Für die Datenbankverbindung müssen in der Java Klasse „VermDb“ der entsprechende JDBC-Treiber und -URL verwendet werden: if (dbmsType.equals("Oracle")){ Class.forName("oracle.jdbc.driver.OracleDriver"); con = DriverManager.getConnection(url, strUser, strPassword); … 9.6 Oracle Database Lite Oracle Database Lite ist unser erstes System, das wir evaluierten. Als lokale Datenbank wurde eine kleine sogenannte „footprint“ Oracle-Datenbank und Oracle 10g als Back-EndDatenbank installiert. Somit haben wir eine homogene Systemumgebung. Der Zugriff auf die lokale Datenbank läuft über die ODBC-Schnittstelle von Oracle Lite (Oracle Lite 40 ODBC Driver). Die ODBC-Schnittstelle wird durch den Deployment unseres Pakets automatisch im System DSN (Data Source Name) erstellt und konfiguriert. Die nachfolgenden Bilder zeigen die automatisch erstellte ODBC-Schnittstelle „ANGELO_localvermdb“ und die Konfigurationseinstellung des TestclientB: Abbildung 279: ODBC-Schnittstelle von Oracle Lite ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 203 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Abbildung 280: ODBC-Konfigurationseinstellung Analog zum TestclientB heisst die ODBC-Schnittstelle „ISIDORO_localvermdb“ für den TestclientA. Der Name des DSN setzt sich aus dem Namen des Gerätebenutzers, der während der Installation des Oracle Lite Clients (Mobile Client) angegeben werden muss, und aus dem Namen der lokalen Datenbank zusammen. Mit der msql.exe können die Daten über folgende Statement-Anweisung „select * from tabkoord;“ in der Kommando-Konsole angezeigt werden. Die msql.exe ist Bestandteil des Mobile Clients und befindet sich bei uns im Verzeichnis „C:\mobileclient\bin“: Abbildung 281: Stammdaten in Oracle Lite DB via msql anzeigen Mit der folgenden Statement-Anweisung „desc tabkoord“ wird die Tabellenstruktur angezeigt: Abbildung 282: Tabellenstruktur in Oracle Lite DB via msql anzeigen Codeausschnitt des Prototyps GUI für die Datenbankverbindung Für die Datenbankverbindung müssen in der Java Klasse „VermDb“ der entsprechende JDBC-Treiber und -URL verwendet werden: if (dbmsType.equals("Oracle Lite DB")){ Class.forName("oracle.lite.poljdbc.POLJDBCDriver"); System.out.println(url + "," + strUser + "," + strPassword); con = DriverManager.getConnection(url, strUser, strPassword); … ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 204 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 9.7 Microsoft SQL Server 2005 Express Edition Bei der dritten Systemevaluation „Microsoft Synchronization Services for ADO.NET“ haben wir MSSQL 2005 Express Edition als Back-End-Datenbank eingesetzt. MSSQL 2005 Express Edition ist ein kostenloses Datenverwaltungsprodukt. Zusammen mit dem zusätzlich zu installierenden Verwaltungs-Tool „MSSQL Server Management Studio Express“ (SSMSE) kann die Administration der Datenbank einfach und schnell verrichtet werden. SSMSE steht zurzeit für die neuere Version MSSQL 2008 Express Edition nicht zur Verfügung. Daher haben wir uns für MSSQL 2005 Express Edition entschieden. Das Synchronisierungs-Tool erlaubt auch andere Datenbanksysteme als Back-End-Datenbank zu verwenden, sofern diese auch einen ADO.NET Provider zur Verfügung stellen. Analog zu Funambol mussten wir wegen des Change Trackings (Datenänderungsnachverfolgung) vom Microsoft Synchronization Services die Tabelle „tabkoord“ auch um die Spalten „UpdateTimestamp“, „InsertTimestamp“, „UpdateId“ und „InsertId“ erweitern. Die Tabellenstruktur sieht folgendermassen aus: Abbildung 283: Tabellenstruktur „tabkoord“ in MSSQL Ferner musste das Datenbankschema um die Tabelle „tabkoord_tombstone“ erweitert werden. Diese wird für die gelöschten Datensätze benötigt. Sie besitzt fünf Spalten „pktNr“, „ykoord“, „xkoord“, „DeleteId“ und „DeleteTimestamp“. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 205 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Die Tabellenstruktur sieht folgendermassen aus: Abbildung 284: Tabellenstruktur „tabkoord_tombstone“ in MSSQL Die gelöschten Datensätze der Tabelle „tabkoord“ werden anhand unseres Triggers „tabkoord_DeleteTrigger“ in die Tabelle „tabkoord_tombstone“ transferiert. Unser tabkoord_DeleteTrigger sieht folgendermassen aus: Abbildung 285: Trigger „tabkoord_DeleteTrigger“ in MSSQL ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 206 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Die Punktnummer ist bei uns auch der Primärschlüssel (Primary Key). Wenn wir die Punktnummer eines Datensatzes ändern, wird die Änderung problemlos vollzogen. Beim Synchronisieren stellten wir aber fest, dass bei der synchronisierenden Datenbank der veränderte Datensatz als neuer Datensatz hinzugefügt wird. Der alte Datensatz bleibt in der Datenbank unverändert bestehen, wie nachfolgendes Beispiel zeigt: Beispiel „Punktnummer ändern“ Das folgende Abbild zeigt unser neue Prototyp GUI. Oben wird die Tabelle der Hauptdatenbank und unten die Tabelle der lokalen Datenbank dargestellt. Beide Tabellen können über unserem Prototyp GUI manipuliert werden. Abbildung 286: Ausgangslage (Beispiel) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 207 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Nun soll der Datensatz mit der pktNr 1 zu pktNr 11 in der Hauptdatenbank geändert werden. Abbildung 287: Punktnummer ändern (Beispiel) Nachdem der Punkt in der oberen Tabelle geändert und gespeichert wurde, startet man die Synchronisation. Abbildung 288: Endstand (Beispiel) ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 208 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Wie man in der unteren Tabelle sehen kann, bleibt der Datensatz mit der Punktnummer 1 bestehen. Der Datensatz mit der Punktnummer 11 von der Hauptdatenbank wird als neuer Datensatz hinzugefügt. Das gleiche Resultat erhält man umgekehrt, wenn man das Beispiel von der lokalen Datenbank ausführt. Ändert man einen Wert in der ykoord oder xkoord, läuft der Update bei der Synchronisation fehlerfrei. Zur Abhilfe dieses Update-Problems haben wir den Trigger „tabkoord_UpdateTrigger“ geschrieben, wie nachfolgend dargestellt: Abbildung 289: Trigger „tabkoord_UpdateTrigger“ Microsoft Synchronization Services braucht zur Konfliktbehebung drei Datenbankprozeduren (Procedures) für Insert, Update und Delete. Für nähere Angaben verweisen wir auf das SQLSkript „MSSQL_CreateDB_Tables_Triggers_Stammdaten.sql“ im Verzeichnis „SQL-Skripte“ auf der beigelegten DVD. Die Prozeduren sind im Stored Procedures der Datenbank abgelegt, wie nachfolgendes Bild zeigt: Abbildung 290: Stored Procedures in MSSQL ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 209 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Info: Gemäss Microsoft Developer Network kurz MSDN besitzt Microsoft SQL Server 2008 neu die Funktion „Change Tracking“, die aktiviert werden kann. Somit fallen die obigen Anpassungen wie Datenbankschemaänderung, Tabellenerweiterung und Triggererstellung aus. Für die Aktivierung des Change Trackings sind folgende Einstellungen vorzunehmen: CREATE TABLE vermdb.vermsys.tabkoord( pktnr nvarchar(4) NOT NULL PRIMARY KEY, ykoord nvarchar(10) NOT NULL, xkoord nvarchar(10) NOT NULL) ALTER DATABASE vermdb SET ALLOW_SNAPSHOT_ISOLATION ON ALTER DATABASE vermdb SET CHANGE_TRACKING = ON (CHANGE_RETENTION = 2 DAYS, AUTO_CLEANUP = ON) ALTER TABLE vermdb.vermsys.tabkoord ENABLE CHANGE_TRACKING Kommentar: Wir haben uns nicht für Microsoft SQL Server 2008 entschieden, weil wir das Change Tracking Verhalten näher kennenlernen wollten und falls eine andere Back-End-Datenbank (Oracle, MySQL, etc.) später zur Anwendung kommen sollte. Zugriffdefinition für die Datenbankverbindung von unserem neuen Prototyp GUI Die Zugriffsinformation auf die Back-End-Datenbank befindet sich in der Datei „Survey.exe.config“. Datenbankbenutzer (SQL Server Authentication) <add name="MASIT.MasterThesis.Synchronization.Properties.Settings.ServerConnString" connectionString="Data Source=MT-MSSQL\SQLExpress;Initial Catalog=vermdb;User ID=vermsys;Password=vermsys" providerName="System.Data.SqlClient" /> Windows Authentication Mode <add name="MASIT.MasterThesis.Synchronization.Properties.Settings.ServerConnString" connectionString="Data Source=MT-MSSQL\SQLExpress; Initial Catalog=vermdb;Integrated Security=True" providerName="System.Data.SqlClient" /> ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 210 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 9.8 Microsoft SQL Server 2005 Compact Edition Das Synchronisierungs-Tool „Microsoft Synchronization Services for ADO.NET“ verlangt auf die Clients die MS SQL Server 2005 Compact Edition als lokale Datenbank. Die lokale Datenbank namens „localvermdb“ wird automatisch durch unser csharp-GUI erzeugt. Die Datenbankdatei „localvermdb.sdf“ befindet sich im Verzeichnis von unserem GUI. Abbildung 291: Ablageverzeichnis der lokalen Datenbankdatei „localvermdb.sdf“ Zugriffdefinition für die Datenbankverbindung von unserem GUI Die Zugriffsinformation auf die lokale Datenbank befindet „Survey.exe.config“. sich in der Datei <add name="MASIT.MasterThesis.Synchronization.Properties.Settings.localvermdbConnectionString" connectionString="Data Source=|DataDirectory|\localvermdb.sdf;Password=vermsys" providerName="Microsoft.SqlServerCe.Client.3.5" /> ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 211 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 10 Schlussdiskussion 10.1 Vergleichen der Systeme 10.1.1 System I Oracle Database Lite ist ein Synchronisierungssystem der Firma Oracle. Es lässt sich auf die gängigsten Betriebssysteme wie MS Windows, Linux und UNIX installieren. Die Installation des Systems auf MS Windows 2003 verlief bei uns problemlos. Die einzelnen Komponenten werden installiert und anschliessend konfiguriert. Je nach Verwendungszweck kann die Konfiguration ziemlich zeitintensiv sein. Die umfangreiche Dokumentation von Oracle erleichtert die Konfigurationsarbeit auch nicht. Das Sprichwort „Aus lauter Bäumen den Wald nicht sehen“ passt gerade dazu. Zum Glück ist das System schon Einsatz bereit, sobald die Konfiguration abgeschlossen wird. Und es sind auch keine Programmierschritte nötig. Oracle Database Lite stellt einen webbasierten Manager für die Konfigruation und Verwaltung zur Verfügung. Dieser erwies sich bei der Konfigurationsarbeit als Vorteil. Ein weiteres Plus von Oracle Database Lite ist das Software-Paketisierungswerkzeug und das SoftwareVerteilungswerkzeug (Deployment-Management). Mit diesen Werkzeugen können Applikationen zu Software-Pakete zusammengeschnürrt und auf dem Client einfach installiert werden. Damit können grosse Betriebe viel Zeit und Verwaltungsaufwand einsparen. Beim Einsatz der Software-Paketisierung ist Folgendes zu beachten: Die SSLVerschlüsselung darf während der Installation nicht aktiviert sein, denn sonst lassen sich die Software-Pakete nicht erstellen. Ferner können das Synchronisierungssystem und die BackEnd-Datenbank auch auf derselben Maschine installiert werden. Das Synchronisierungssystem lässt PDA, Notebook oder Desktop als Client zu. Leider ist ein solches System kostenpflichtig. Nebst den Kosten für das Synchronisierungssystem kommen auch die Oracle Datenbank-Lizenzgebühren hinzu. Seit der Datenbankversion Oracle 10g erhält man von der Firma Oracle auch eine kostenlose Express Edition, die als Back-End-Datenbank verwendet werden kann. Mit dieser kostenlosen Software können zum Beispiel Firmen Geld sparen. Weitere Nachteile von Oracle Database Lite sind: Die Client-Software darf nicht auf derselben Maschine wie Oracle Database Lite installiert sein, pro Benutzer darf nur ein Client zugewiesen werden, ein Gerät kann nur von einen Benutzer verwendet werden. Ausserdem erhalten die Benutzer keine Rückmeldung bei Synchronisationskonflikten. Davon abgesehen werden die Synchronisationskonflikte vom System erkannt, abgefangen und in die ERRORQueue abgelegt. Der Administrator kann sie dort besichtigen und bereinigen. Die Datensynchronisierung verlief bei unseren Tests einwandfrei. Generell hat sich dieses System in unserer Testumgebung bezogen auf Funktionalität und Robustheit bewährt. Auch die automatische Synchronisation hinterliess einen positiven Eindruck. Die automatische Synchronisation kann unerfahrenen Anwendern von Nutzen sein. Unser Prototyp GUI funktioniert in diesem Verbund ebenfalls makellos. 10.1.2 System II Funambol ist eine kostenlose Java-Applikation, die sich auf den Betriebssystemen MS Windows und Linux installieren lässt. Wie beim ersten System lief auch die Installation dieses System auf MS Windows 2003 problemlos ab. Die Installationsdokumentation ist schlicht und übersichtlich. Auf der gleichen Maschine können der Funambol DS Server und die Back-End-Datenbank installiert werden. Als Back-End- und Client-Datenbanken stehen momentan MySQL, HSQLDB und PostgreSQL zur Verfügung. Diese kostenlosen Datenbanken können auf diverse Betriebssysteme installiert werden. Funambol verwendet Client-seitig PDA, Notebook oder Desktop. Aber er besitzt leider kein Deployment______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 212 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Management. Die Synchronisations-Clients und die Benutzer-Applikationen müssen manuell verteilt und installiert werden. Deployment-Systeme von Drittanbieter können zur Softwareverteilung eingesetzt werden. Von Hause aus hat Funambol mehrere PIM-Clients. Leider ist kein Synchronisations-Client für unsere Arbeit dabei. Nichtsdestotrotz hat Funambol ein API, mit dem man die Synchronisations-Clients (Schnittstelle Client-Datenbank zu Funambol DS Server) und Connectoren (Schnittstelle Funambol DS Server zur Hauptdatenbank) selber programmieren kann. Obwohl eine bescheidene Dokumentation zu diesem API existiert, ist dadurch die Programmierung sehr aufwendig, kostspielig und zum Teil schwierig. Dementsprechend wird ein vertieftes Wissen im Java-Programmieren vorausgesetzt. Mit Hilfe der Entwicklungs-Literatur von Funambol kann die Entwicklungsumgebung via Maven eingerichtet werden. Dabei mussten wir feststellen, dass diverse fehlerbehaftete Dokumenten auf der Website veröffentlicht sind. Wir empfehlen daher das Dokument „Funambol Developer’s Guide“ vom 31. Juli 2008 zu verwenden. Zusätzlich muss das Datenbankschema für eine reibungslose Synchronisierung erweitert werden. In jede zu synchronisierenden Tabellen kommen zwei neue Spalten hinzu, welche die neuen, geänderten oder gelöschten Datensätze mit Zeitstempel und Status markiert. Sobald die Schnittstellen ausprogrammiert sind, funktioniert auch dieses System tadellos. Zudem bestätigen unsere Testfälle die einwandfreie Synchronisierung. Bei Funambol vermissen wir ein Werkzeug für die Konfliktanalyse. Zurzeit erfolgt zumindest auf unserem System die Konfliktanalyse via Log-Datei. Beim Funambol-System gibt es in diesem Fall aus unserer Sicht noch Entwicklungspotenzial. Ausserdem werden die End-User bei diesem System nicht über Synchronisierungskonflikte benachrichtigt. Auch in diesem Bereich könnte Funambol verbessert werden. Weiter betrachten wir als Nachteil, dass Funambol keine automatische Synchronisation anbietet. Jedoch kann mit Hilfe der „geplanten Jobs“ (bei Windows) oder „at“ bei Linux die Startup-Datei so eingebunden werden, dass die Synchronisation regelmässig automatisch gestartet wird. Positiv fällt bei diesem System auf, dass die Client-Applikation auf einem Gerät von mehreren Benutzern verwendet werden kann. Ähnlich wie Oracle Database Lite besitzt Funambol eine Applikation „Administration Tool“, um die Benutzer, die Clients und die Applikationen zu verwalten. Unser Prototyp GUI funktioniert in diesem Verbund ebenfalls fehlerfrei. 10.1.3 System III Das dritte System „Microsoft Synchronisation Services for ADO.NET“ ist ein kostenloses Framework, das nur auf die Microsoft Betriebssysteme läuft. Auch hier kommen PDA, Notebook oder Desktop als Client zum Einsatz. Als Client-Datenbank kann nur der Microsoft SQL Server Compact 3.5 eingesetzt werden und als Back-End-Datenbank darf jedes beliebige Datenbankmanagement-System verwendet werden, für das einen ADO.NET Provider existiert. Wir konnten feststellen, dass die gängigsten DatenbankmanagementSysteme wie MS SQL Server, MySQL und Oracle einen solchen Provider zur Verfügung stellen. Zu erwähnen ist, dass selbst unser erstes System „Oracle Database Lite“ einen ADO.NET Provider API (SQLDriverConnect) für die Client-Datenbank besitzt. Um Kosten zu sparen, schlagen wir die kostenfreien Datenbanken wie zum Beispiel die diversen MS SQL Server Express Editionen vor. Gleich wie beim Funambol-System müssen wir bei diesem System unser Datenbankschema anpassen. Jede zu synchronisierende Tabelle muss mit vier zusätzlichen Spalten erweitert werden. Zudem benötigt das System zwingend zu jeder Tabelle eine Tombstone-Tabelle. Diese Tombstone-Tabelle verwaltet die gelöschten Datensätze. Nebst diesen Anpassungen benötigen wir einen Trigger, der die gelöschten Datensätzen aus der Hauptdatenbank-Tabelle in ihre Tombstone-Tabelle einträgt. Ohne diese Datenbankmodifikation läuft die Datenänderungsnachverfolgung (Change Tracking) nicht. Das Aufsetzen des Systems ist einigermassen einfach. Es muss lediglich die BackEnd-Datenbank aufgesetzt und eingerichtet werden. Anschliessend muss auf den Clients die selbst programmierte Synchronisations-Applikation installiert werden. Wie bei Funambol ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 213 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ kann die Verteilung der Client-Software entweder manuell oder mit einer kostenpflichtigen Deployment-Software von einem Drittanbieter erfolgen. Auch bei diesem System gibt es keinen fertigen Synchronisations-Client. Wir mussten für unsere Bedürfnisse einen eigenen Synchronisations-Client entwickeln. Dazu steht die online-Dokumentation von Microsoft mit den diversen Code-Beispielen zur Hilfe. Für die Programmierung des Clients sind geforderte Programmierkenntnisse in C# oder Visual Basic von grossen Vorteil. Das System „Microsoft Synchronisation Services for ADO.NET“ unterstützt zwei Szenarien: offline- und Zusammenarbeits-Szenario. Im Zusammenarbeits-Szenario spielt sich eine Peer-to-PeerSynchronisation ab. Beim offline-Szenario handelt es sich um eine Server-Client Synchronisation, die bereits bei den anderen Systemen zum Einsatz kommt. Die Architektur des Clients kann entweder in einer 2-Tier oder n-Tier aufgebaut werden. Die n-Tier ist definitiv die komplizierteste Architektur. Deshalb empfehlen wir die 2-Tier-Architektur aufzusetzen. Wie bei den vorgängigen Systemen funktioniert auch dieses System tadellos. Unsere durchgeführten Tests zeigen das korrekte Systemverhalten natürlich auf. Leider ist das Konflikt-Handling nicht genau ersichtlich. Und bei Konfliktproblemen werden die Anwender auch nicht darüber informiert. Sicher kann man analog zu Funambol mit zusätzlichem Programmieraufwand ein geeignetes Konflikt-Tool erstellen. Dabei kann man auch die Konflikt-Benachrichtigung an den End-User berücksichtigen. Ferner besitzt dieses System kein Management-Tool, um die Applikation, die Benutzer und die Geräte zu verwalten. Ähnlich wie Funambol kann die Client-Applikation auf einem Gerät von mehreren Benutzern verwendet werden. Der Synchronisation-Zugriff wird über den Datenbankbenutzer gesteuert. Da das System auf Microsoft-Produkte und schliesslich auf die .NETEntwicklungsplattform eingeschränkt ist, funktioniert unglücklicherweise unser Javageschriebene Prototyp GUI nicht auf diesem System. Ein neuer Prototyp GUI haben wir demzufolge für unsere Arbeit in C# geschrieben. 10.1.4 Übersicht der Systeme Eigenschaften Oracle Database Lite (System I) Funambol (System II) MS Sync Services (System III) Open Source nein ja nein Kostenpflichtig ja nein nein Installationsaufwand mässig mässig gering Konfigurationsaufwand je nach Verwendungszweck gross mässig gering Programmieraufwand kein gross (Synchronisations -Client und Connector) gross (Synchronisations -Client) Betriebssystem MS Windows, Linux und UNIX MS Windows und Linux MS Windows Back-End-Datenbank ab Oracle 9i MySQL, HSQLDB und PostgreSQL beliebige Datenbanken, für die ein ADO.NET Provider zur ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 214 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Verfügung steht Client-Datenbank “footprint”-Oracle Datenbank MySQL, HSQLDB und PostgreSQL nur Microsoft SQL Server Compact 3.5 Verwaltungssystem webbasiert Java-Applikation keine Paketisierungsmanagement ja nein nein Deploymentmanagement ja nein nein Dokumentation zu ausführlich genügend genügend Synchronisierung funktioniert einwandfrei funktioniert einwandfrei funktioniert einwandfrei Synchronisationsarten automatisch und manuell manuell manuell Synchronisationsrichtung bidirektional bidirektional bidirektional Konflikterkennung wird erkannt wird erkannt wird erkannt Konfliktanalyse webbasiertes Management Log-File keine Konfliktbehebung webbasiertes Management (ERROR-Queue) keine keine Konfliktbenachrichtigung nein nein nein DB-Tabellenerweiterung nein ja ja* Zusätzliche DB-Tabellen nein nein ja* Eigene DB-Trigger nein nein ja* Anzahl Benutzer pro Gerät 1 mehrere mehrere Anzahl Gerät pro Benutzer 1 mehrere mehrere Mobile Geräte PDA, Desktop, Notebook,… PDA, Desktop, Notebook,… PDA, Desktop, Notebook,… Systemszenario Server-Client Server-Client Server-Client oder Peer-to-Peer Einsatz Java Prototyp GUI ja ja nein** * Mit MS SQL Server 2008 kann DB-Schemaanpassung vermieden werden. ** Neuer Prototyp GUI in C# entwickeln. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 215 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 10.1.5 Beurteilung der Systeme Bei allen Systemen funktioniert die Synchronisation korrekt, sobald die Systeme fertig aufgesetzt und konfiguriert sind. Die Synchronisierung verhält sich bei allen gleich. Alle drei Systeme können eine bidirektionale Synchronisation anbieten und Synchronisierungskonflikte erkennen. Oracle Database Lite besitzt gegenüber den anderen Systemen das bessere Werkzeug, um Konflikte zu beheben. Weiter vermissen wir bei allen Systemen die Konfliktbenachrichtigung an den Endbenutzer. Oracle Database Lite stellt nebst dem Synchronisationsmodul auch zwei weitere Applikationen (Software-Packaging und Deployment-Management) zur Verfügung. Damit kann die eigene Anwendung verpackt und veröffentlicht werden. Aber leider ist Oracle Database Lite kostenpflichtig. Die zwei anderen Systeme (Funambol und MS Sync Services) sind zwar kostenlos, bieten weder die zwei vorher genannten Applikationen noch einen Synchronisierungs-Client für unsere Bedürfnisse an. Den Synchronisierungs-Client müssen wir selber programmieren. Dies ist eine zeitaufwendige Aufgabe. Zudem muss bei beiden Systemen das Datenbankschema erweitert werden. Von allen drei Systemen lässt sich am einfachsten das MS Sync ServicesSystem aufsetzen. Die beiden anderen Systeme benötigen einen grösseren Aufwand, aber sie können dafür auch auf diverse Betriebssysteme installiert werden. Das MS Sync Services-System ist leider nur auf die MS Windows Betriebssysteme eingeschränkt. Fazit: Wir sind der Meinung, dass hier eine Bewertungsrangliste der Systeme nicht angebracht wäre. Wie einleitend erwähnt, führen alle Systeme eine korrekte Synchronisierung durch. Und alle Systeme haben die Testfälle erwartungsgemäss gelöst. Die wichtigsten Kriterien unsererseits sind der Preis und der zeitliche Programmieraufwand. Oracle Database Lite ist kostenpflichtig und verlangt keine aufwendige Programmieraufgaben. Die beiden anderen Systeme sind kostenlos und mit ziemlichem Programmieraufwand verbunden. Nicht zu vergessen ist die Integration unseres Prototyps GUI im System. Bei den Systemen Oracle Database Lite und Funambol kann unser ursprüngliche Prototyp GUI eingesetzt werden. 10.2 Vergleich mit Pflichtenheft In diesem Kapitel vergleichen wir unsere Arbeit mit dem Inhalt des Pflichtenhefts. Unsere erzielten Resultate werden tabellarisch mit den Kriterien im Pflichtenheft gegenübergestellt. Ursprünglich stand eine weitere Aufgabe im Pflichtenheft und zwar das Installieren und Testen unseres Prototyps auf einem PDA. Nachdem wir unseren Prototyp GUI für Notebook/Desktop entwickelt hatten, stellten wir fest, dass ein PDA für den Prototyp GUI aus folgenden Überlegungen und Erkenntnis nicht mehr in Frage kommt: • Der jetzige Prototyp GUI hat seine minimale Layoutgrösse erreicht, um die Bedienbarkeit gewährleisten zu können. Folglich ist diese Grösse für einen PDA ungeeignet. • Bei einer weiteren Entwicklung unseres Prototyps GUI für Berechnungsfunktionen im Vermessungswesen wäre ein PDA nicht die geeignete Hardwarelösung in bezug auf Benutzerfreundlichkeit, Performanz und Speichergrösse (lokale Datenbank eingeschränkt). Die beste Hardwarelösung bietet unseres Erachtens die neuen kostengleichwertigen leichten Notebooks mit 10-Zollbildschirm, welche sich bei einem Einsatz draussen bestens auszeichnen werden. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 216 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 10.2.1 Zielbestimmung Muss Kriterien Client Kriterium Resultat mit grafischer Benutzungsoberfläche (Prototyp GUI) ausrüsten Prototyp GUI wurde bei allen Client installiert. Beim System III musste ein neuer Prototyp GUI in C# realisiert werden. -> Kriterium erfüllt lokale Datenbank (Offline-Modus) installieren Jeder Client hat eine lokale Datenbank. automatische und manuelle Synchronisation System I bietet beide Synchronisationsarten an. Die zwei anderen Systeme besitzen nur die manuelle Synchronisation. -> Kriterium erfüllt -> Kriterium teilweise erfüllt Muss Kriterien Middleware Kriterium Resultat Bereitstellen von Eingangs- und Ausgangswarteschlange Systeme I und II haben Ein- und Ausgangskanäle. Die Architektur des dritten Systems benötigt keine Middleware. -> Kriterium erfüllt Verbindung zur Hauptdatenbank Middleware hat eine direkte Verbindung zur Hauptdatenbank. -> Kriterium erfüllt Verbindung zum Client Middleware hat eine direkte Verbindung zur lokalen Datenbank. -> Kriterium erfüllt bidirektional Alle bieten eine bidirektionale Synchronisierungsrichtung an. -> Kriterium erfüllt ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 217 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Muss Kriterien Datenbankserver Kriterium Resultat Datenbanksoftware installieren Die DBMS-Software wurde in allen Systemen auf je einem Server installiert. -> Kriterium erfüllt Hauptdatenbank mit Stammdaten Die Stammdaten wurden erstellt und mit eigenen Skripten in die Hauptdatenbank eingespielt -> Kriterium erfüllt Muss Kriterien Prototyp GUI Kriterium Resultat Der Benutzer kann sich an der lokalen Datenbank an- und abmelden Der Benutzer kann sich sowohl an der lokalen Datenbank wie auch an der Hauptdatenbank anmelden. Er kann aber keine Abmeldung durchführen. Die Abmeldung erfolgt Code-mässig. -> Kriterium grossteils erfüllt Der Benutzer kann die Daten einsehen und ändern Der Benutzer kann die Manipulation sowohl an der lokalen Datenbank wie auch an der Hauptdatenbank durchführen. -> Kriterium erfüllt Der Benutzer muss sich mit verschiedenen DBMS mit Benutzername und Passwort verbinden können. -> Kriterium erfüllt Robustheit, Zuverlässigkeit, Korrektheit und Benutzungsfreundlichkeit -> Kriterien erfüllt Kann Kriterien Kriterium Resultat Softwareverteilung Prototyp GUI Nur das erste System bietet eine Software für unseren Prototyp GUI an. -> Kriterium teilweise erfüllt Heterogene Architektur Systeme II und III unterstützen heterogene Umgebung. System II basiert auf eine reine heterogene Umgebung. -> Kriterium erfüllt Eigene Synchronisationssoftware Bei den Systemen II und III müssen ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 218 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ entwickeln Synchronisierungs-Clients für unsere Bedürfnisse entwickelt werden. -> Kriterium erfüllt Direkte Verbindung und Datenmodifikation auf der Back-End-Datenbank via Prototyp GUI -> Kriterium erfüllt System soll Verwaltungsaufgaben- und Konfliktmanagement-Funktionen zur Verfügung stellen Systeme I und II stellen ein Verwaltungswerkzeug zur Verfügung. Zudem bietet System I ein Konfliktmanagementwerkzeug. Die Daten sollen tabellarisch auf dem GUI angezeigt werden. -> Kriterium erfüllt 10.2.2 Produktumgebung Muss Kriterien Software Kriterium Resultat Betriebssystem Windows 2003 für Datenbankserver und Middleware -> Kriterium erfüllt Betriebssystem Windows XP für Client -> Kriterium erfüllt Virtualisierung der Systeme mit VMware -> Kriterium erfüllt Kann Kriterium Software Kriterium Resultat Betriebssystem Linux für Datenbankserver, Middleware und Client -> Kriterium nicht erfüllt Muss Kriterien Hardware Kriterium Resultat Einsatz eines physischen und leistungsstarken Rechners für die Virtualisierung -> Kriterium erfüllt Datenbank und Middleware auf derselben Maschine installieren -> Kriterium erfüllt Kann Kriterium Hardware Kriterium Resultat Eigene Notebooks als Client benutzen Die eigenen Notebooks mussten nicht eingesetzt werden. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 219 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 10.3 Zukunftsaussicht Während unserer Arbeit sind wir auf interessante Bereiche gestossen, die weiter verfolgt und entwickelt werden könnten. Die nachfolgenden Unterkapitel sollen einen Einblick darüber geben. 10.3.1 Allgemein Bei allen Systemen vermissen wir, dass der Benutzer nicht über Synchronisierungskonflikte benachrichtigt wird. Die Benachrichtigungsfunktion sollte in allen Produkten implementiert werden. Bei den Systemen II und III lohnt sich ein Konfliktmanagement zu entwickeln. 10.3.2 System I Seit der Datenbankversion Oracle 10g erhält man von der Firma Oracle auch eine kostenlose Express Edition. Um Kosten zu sparen, kann man diese Gratisversion als BackEnd-Datenbank einsetzen. Diese ist eine Alternative, die in unserem System umgesetzt werden könnte. Oracle Database Lite kann mit SSL-Verschlüsselung installiert werden. Wir konnten mit der SSL-Verschlüsselung das Software-Paket gar nicht erstellen. Folglich haben wir das System ohne Verschlüsselung neu aufgesetzt. Später fanden wir den Hinweis betreffend SSLVerschlüsselung und Paketisierung (siehe Kapitel 6.5.2). Dieser Tipp lohnt sich zu überprüfen. 10.3.3 System II Weitere Tätigkeiten wurden bereits im Kapitel 10.3.1 erwähnt. 10.3.4 System III Es besteht die Möglichkeit unseren Synchronisierungs-Client zu erweitern, um die Synchronisierung über Eingabeparameter von der Kommando-Zeile aus zu starten. Mit dieser Erweiterung kann der Workaround für die automatische Synchronisierung realisiert werden (wie bereits im Kapitel 8.9.3 erwähnt). MS SQL Server 2008 bietet die Change Tracking-Funktion an. Mit Hilfe dieser Funktionalität ist keine Anpassung des Datenbankschemas nötig. Wir empfehlen diesen Server aufzusetzen, um die Change Tracking-Funktion auszutesten. Weiter empfehlen wir auch die schwierige n-Tier-Architektur zu entwickeln und aufzubauen. 10.3.5 Prototyp GUI Der Prototyp GUI diente zurzeit für Datenabfrage und -erfassung in den Datenbanken. Er soll später für Berechnungsfunktionen im Vermessungswesen erweitert werden. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 220 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 10.4 Ehrlichkeitserklärung Hiermit bestätigen wir, die vorliegende Master Thesis selbständig erarbeitet und geschrieben zu haben. Villmergen, den 31. März 2009 Angelo Lo Iudice Isidoro Lo Iudice ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 221 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 11 Literaturverzeichnis 11.1 Literaturangaben für Bücher • Balzert, Heide (2005): Lehrbuch der Objektmodellierung, Analyse und Entwurf mit der UML 2, Spektrum Akademischer Verlag, 2. Auflage • Balzert, Heide (2005): UML2 kompakt, mit Checklisten, Spektrum Akademischer Verlag, 2. Auflage • Krüger, Guido (2006): Handbuch der Java Programmierung, Addison-Wesley • Firma Infrasoft (2004): Anleitung zum Pflichtenheft • Tanner, Ronald (2008): Manuskript: Software Architecture .NET Framework, Version 1.0 11.2 Literaturangaben für Internetseiten • Wikipedia • I/O Compatibility Guide For ESX Server 3.5 and ESX Server 3i, vi35_io_guide.pdf, VMware, Inc. 3401 Hillview Avenue Palo Alto, CA 94304 www.vmware.com, Last Updated: 19. November 2008 • ESX Server 3i Installable Setup Guide, vi3_35_25_u2_3i_i_setup.pdf, VMware, Inc. 3401 Hillview Avenue Palo Alto, CA 94304 www.vmware.com, Last Updated: 17. Oktober 2008 • VMware Converter User’s Manual, VMware_Converter_manual302.pdf, Inc. 3401 Hillview Avenue Palo Alto, CA 94304 www.vmware.com, Version: 3.0.2, Last Updated: 18. Oktober 2007 • Oracle Database Lite Administration and Deployment Guide 10g (10.3.0.2) E12089-01, June 2008 • Oracle Database Lite Getting Started Guide 10g (10.3.0.2) E12080-01, June 2008 • Oracle Database Lite Developer's Guide 10g (10.3.0.2) E12090-01, June 2008 • Funambol Data Synchronization Server Overview, Funambol 643 Bair Island Road, Suite 305 Redwood City, CA 94063 USA, www.funambol.com, 2006 • Funambol Developer's Guide, Last revised: July 31, 2008, v1.0.8 (funambol-developersguide.pdf) • Funambol DS Server SyncSource API, Version 3.0, May 2006 (funambol_ds_server_syncsource_api.pdf) • Funambol DS Server, Administration Guide, Version 3.0, September 2006 (funambol_ds_server_administration_guide.pdf) • msdn.microsoft.com/en-us/sync/default.aspx ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 222 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 12 Glossar ADO.NET ADO steht für ActiveX Data Object und besteht aus einer Ansammlung von Programmklassen, die den Zugriff auf relationalen Datenbanken ermöglicht. Es ist heute Bestandteil des Microsoft .NET Framework 2.0. ANT Apache Ant (Ant englisch für Ameise) ist ein in Java geschriebenes Werkzeug zum automatisierten Erzeugen von Programmen aus Quelltext. API API steht für Application Programming Interface (dt. Programmierschnittstelle) in der Informatik C# Ausgesprochen C Sharp ist eine objektorientierte Programmiersprache von Microsoft. Sie ist eine Weiterentwicklung von den Programmiersprachen C und C++. DB Datenbank enthält Informationsdaten DBMS Datenbankmanagementsystem von verschiedenen Herstellern DS Data Synchronization engl. für Datensynchronisierung DSN Der Data Source Name (DSN) ist eine Datenstruktur und beschreibt die Zugangsdaten (ODBC, JDBC oder ADOdb), die ein Treiber benötigt, um eine Verbindung zu einer bestimmten Datenbank herzustellen. GIS Das Geografische Informations-System kurz GIS befasst sich mit raumbezogenen Daten. Es verwaltet geometrische und thematische Daten. GUI Grafisches User Interface ist eine grafische Benutzungsoberfläche. GUID Jedes Synchronisationselement erhält vom System eine eindeutige Identifikationsbezeichnung (ID). Client und Server generieren ihre eigenen IDs. Auf dem Server werden sie als Global Unique IDentifiers (GUID) bezeichnet. HTTP Das Hypertext Transfer Protocol (HTTP, dt. HypertextÜbertragungsprotokoll) ist ein Protokoll zur Übertragung von Daten über ein Netzwerk. Es wird hauptsächlich eingesetzt, um Webseiten und andere Daten aus dem World Wide Web (WWW) in einen Webbrowser zu laden. IDE Integrated Development Environment (IDE, dt. „integrierte Entwicklungsumgebung“) ist eine Software-Plattform zur Entwicklung von Applikationen und besitzt integrierte Komponenten wie Texteditor, Compiler beziehungsweise Interpreter, Debugger und Quelltextformatierungsfunktion. JAR Ein Java Archive (kurz JAR) ist eine ZIP-Datei, die zusätzliche Metadaten in einer Datei „META-INF/MANIFEST.MF“ enthalten kann. JARs werden vor allem zur Verteilung von Java-Klassenbibliotheken und -Programmen eingesetzt. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 223 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ JRE Java Runtime Environment (kurz JRE) wird die Laufzeitumgebung für die Java-Plattform des US-Unternehmens Sun Microsystems genannt. Diese liefert unter anderem die Java Virtual Machine und wird benötigt, um JavaAnwendungen auszuführen. LDAP Das Lightweight Directory Access Protocol (LDAP) erlaubt die Abfrage und die Modifikation von Informationen eines Verzeichnisdienstes (hierarchische Datenbank). LUID Jedes Synchronisationselement erhält vom System eine eindeutige Identifikationsbezeichnung (ID). Client und Server generieren ihre eigenen IDs. Auf dem Client werden sie als Local Unique IDentifiers (LUID) bezeichnet. MGP Message Generator and Processor ist für den bidirektionalen Datentransfer zwischen dem Client System und dem Database Server zuständig. Verarbeitung der IN-, OUT- und ERROR-Queue MIME Multipurpose Internet Mail Extensions (MIME) ist ein Kodierstandard, der die Struktur und den Aufbau von E-Mails und anderen Internetnachrichten festlegt. Ferner findet MIME Anwendung bei der Deklaration von Inhalten in verschiedenen Internetprotokollen, so zum Beispiel in HTTP. MIME ermöglicht die Übertragung von Daten in beliebigen Formaten. MDK Mobile Development Kit (MDK) ist die Entwicklungssoftware von Oracle Database Lite. Sie beinhaltet folgende Komponente: Oracle Database Lite RDBMS, Mobile Database Workbench (MDW), Packaging Wizard, Mobile Sync (msync.exe) und Mobile SQL (= mSQL.exe, ein Werkzeug um die Oracle Database Lite auf dem mobilen Gerät zu manipulieren) MDW Mobile Database Workbench (MDW) ist eine Applikation, um die Software mit Oracle Database Lite zu veröffentlichen. Die publizierte Software wird in Projekten gespeichert. Die Publikation auf dem Mobile Server erfolgt via Packaging Wizard. MSDN Microsoft Developer Network ist die Informationsplattform im Internet für Entwickler. Hier findet man jegliche Informationen, Beschreibungen und Code-Beispiele für die Microsoft-Produkte. OBEX Das Object Exchange Protocol ist ein serielles Kommunikationsprotokoll (Bluetooth, Infrarot oder auch Cradle) und dient der Datenübertragung zwischen zwei Geräten. Es wird überwiegend bei mobilen Endgeräten wie PDA, IPAQ, Smartphone eingesetzt. ODBC Open Database Connectivity ist eine standardisierte Schnittstelle für den Zugriff auf relationale Datenbanksysteme OOA Objektorientierte Analyse, fachliche Lösung des zu realisierenden Systems OOD Objektorientiertes Design, technische Lösung des zu realisierenden Systems ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 224 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ PIM PIM steht für Personal Information Manager und ist eine Software, die persönliche Daten wie Kontakte, Termine, Aufgaben, Notizen und E-Mails verwaltet. URI Uniform Resource Identifier (URI, dt. „einheitlicher Bezeichner für Ressourcen“) ist ein Identifikator und besteht aus einer Zeichenfolge, die zur Identifizierung einer abstrakten oder physischen Ressource dient. URL Uniform Resource Locator (URL, dt. „einheitlicher Quellenanzeiger“) ist eine Unterart von Uniform Resource Identifiern (URIs). URLs identifizieren und lokalisieren eine Ressource über das verwendete Netzwerkprotokoll (beispielsweise http oder ftp) und den Ort (engl. location) der Ressource in Computernetzwerken. XAMPP XAMPP ist eine Ansammlung von Open Source-Software, welche verschiedene Server (Apache Webserver, FTP-, FileZilla-, Mercury-Server), MySQL Datenbank und Verwaltungsfunktionen bietet. Das X steht für verschiedene Betriebssysteme (Microsoft Windows, Linux, Mac OS X, Solaris und andere Unix-Varianten) XML XML steht für Extensible Markup Language (dt „erweiterbare Auszeichnungssprache“) und ist eine Datenbeschreibungssprache zur Darstellung hierarchisch strukturierter Daten in Form von Textdaten. XML wird unter anderem für den Austausch von Daten zwischen Computersystemen eingesetzt, speziell über das Internet. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 225 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 13 Anhang 13.1 Abbildungsverzeichnis Abbildung 1: Systemkonzept Use Cases Diagramm.............................................................. 5 Abbildung 2: Use Cases Diagramm....................................................................................... 8 Abbildung 3: Benutzungsoberfläche .....................................................................................11 Abbildung 4: Testumgebung.................................................................................................12 Abbildung 5: OOA Klassendiagramm GUI-Schicht ...............................................................14 Abbildung 6: OOA Klassendiagramm Business-Schicht .......................................................15 Abbildung 7: OOA Klassendiagramm Datenbank-Schicht ....................................................16 Abbildung 8: OOA Sequenzdiagramm..................................................................................17 Abbildung 9: OOD Use Cases Diagramm.............................................................................18 Abbildung 10: OOD Klassenübersichts-Diagramm ...............................................................20 Abbildung 11: OOD Klasse ListGUI ......................................................................................21 Abbildung 12: OOD Klasse DialogLogin ...............................................................................22 Abbildung 13: OOD Klasse DialogLoeschen ........................................................................22 Abbildung 14: OOD Klasse DialogWarning...........................................................................22 Abbildung 15: OOD Klasse Point..........................................................................................23 Abbildung 16: OOD Klasse VermDb.....................................................................................24 Abbildung 17: OOD Sequenzdiagramm................................................................................25 Abbildung 18: Hauptfenster mit Beschreibung......................................................................26 Abbildung 19: Panel DBMS Auswahlbox ..............................................................................26 Abbildung 20: Panel Daten-Eingabefelder ............................................................................27 Abbildung 21: Panel Auslöser-Buttons .................................................................................27 Abbildung 22: Panel Daten-Anzeigetabelle...........................................................................27 Abbildung 23: Nebenfenster DialogLogin .............................................................................28 Abbildung 24: Nebenfenster DialogLoeschen.......................................................................28 Abbildung 25: Nebenfenster DialogWarning .........................................................................28 Abbildung 26: Strukturbaum des JRE...................................................................................29 Abbildung 27: Ablageort der DB-Treiber...............................................................................29 Abbildung 28: Netzplanübersicht der Test-Umgebung..........................................................34 Abbildung 29: Systemübersicht I der Test-Umgebung..........................................................37 Abbildung 30: Funktion der Synchronisation.........................................................................38 Abbildung 31: MGP-Status ...................................................................................................38 Abbildung 32: Synchronisationsprozess ...............................................................................39 Abbildung 33: Panel msync ..................................................................................................39 Abbildung 34: Sync Result Dialog ........................................................................................39 Abbildung 35: Panel Show Log.............................................................................................40 Abbildung 36: Synchronisationsoption ein- und ausschalten ................................................40 Abbildung 37: Synchronisationsereignisse ein- und ausschalten..........................................41 Abbildung 38: Startsituation in der Hauptdatenbank (Ausgangslage) ...................................45 Abbildung 39: Startsituation TestclientA (Ausgangslage)......................................................45 Abbildung 40: Startsituation TestclientB (Ausgangslage)......................................................46 Abbildung 41: Punkt einfügen TestclientA (Fall 1) ................................................................46 Abbildung 42: Neuer Punkt TestclientA (Fall 1) ....................................................................47 Abbildung 43: Start msync.exe bei TestclientA (Fall 1) .........................................................47 Abbildung 44: Situation in der Oracle Hauptdatenbank (Fall 1).............................................48 Abbildung 45: Start msync.exe bei TestclientB (Fall 1) .........................................................48 Abbildung 46: Neuer Punkt TestclientB (Fall 1) ....................................................................49 Abbildung 47: Punkt 3 modifizieren TestclientB (Fall 2) ........................................................49 Abbildung 48: Situation TestclientB (Fall 2) ..........................................................................50 Abbildung 49: Start msync.exe bei TestclientB (Fall 2) .........................................................50 Abbildung 50: Situation in der Oracle Hauptdatenbank (Fall 2).............................................51 ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 226 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Abbildung 51: Start msync.exe bei TestclientA (Fall 2) .........................................................51 Abbildung 52: Situation TestclientA (Fall 2) ..........................................................................52 Abbildung 53: Situation TestclientA (Fall 3) ..........................................................................52 Abbildung 54: Situation TestclientB (Fall 3) ..........................................................................53 Abbildung 55: Situation in der Oracle Hauptdatenbank (Fall 3).............................................53 Abbildung 56: Fehler-Queue-Datensätze bearbeiten (Fall 3)................................................54 Abbildung 57: Fehler-Queue-Datensatz-Detail (Fall 3) .........................................................54 Abbildung 58: Fehler-Queue-Transaktion (Fall 3) .................................................................54 Abbildung 59: Refresh-Situation TestclientA (Fall 3).............................................................55 Abbildung 60: Startsituation TestclientA (Fall 4) ...................................................................56 Abbildung 61: Endsituation TestclientA (Fall 4) ....................................................................56 Abbildung 62: Situation in der Oracle Hauptdatenbank (Fall 4).............................................57 Abbildung 63: Out Queue-Publikationen...............................................................................57 Abbildung 64: Out Queue-Detailinformation (Fall 4) .............................................................58 Abbildung 65: Startsituation TestclientB (Fall 4) ...................................................................58 Abbildung 66: Punkt 3 modifizieren TestclientB (Fall 4) ........................................................59 Abbildung 67: Endsituation TestclientB (Fall 4) ....................................................................59 Abbildung 68: Situation in der Oracle Hauptdatenbank (Fall 4).............................................60 Abbildung 69: Fehler-Queue Info (Fall 4)..............................................................................60 Abbildung 70: Fehler-Queue-Datensatz-Detail (Fall 4) .........................................................60 Abbildung 71: Fehler-Queue-Datensatz „Einfügen“ (Fall 4) ..................................................61 Abbildung 72: In Queue Info (Fall 4) .....................................................................................61 Abbildung 73: Verbindung mit der Oracle Hauptdatenbank (Fall 5) ......................................62 Abbildung 74: Punkt 3 in der Oracle Hauptdatenbank löschen (Fall 5) .................................62 Abbildung 75: Situationen TestclientA & B (Fall 5)................................................................63 Abbildung 76: Verbindung mit der Oracle Hauptdatenbank (Fall 6) ......................................63 Abbildung 77: Punkt 6 in der Oracle Hauptdatenbank modifizieren (Fall 6) ..........................64 Abbildung 78: Situation in der Oracle Hauptdatenbank (Fall 6).............................................64 Abbildung 79: Situationen TestclientA & B (Fall 6)................................................................65 Abbildung 80: Situation in der Oracle Hauptdatenbank (Fall 7).............................................66 Abbildung 81: Situationen TestclientA und TestclientB (Fall 7) .............................................66 Abbildung 82: Punkte 6 und 7 einfügen TestclientA (Fall 7)..................................................67 Abbildung 83: Punkte 8 und 9 einfügen TestclientB (Fall 7)..................................................67 Abbildung 84: Situation in der In Queue (Fall 7) ...................................................................68 Abbildung 85: Situation in der Oracle Hauptdatenbank (Fall 7).............................................68 Abbildung 86: Situation in der Out Queue für TestclientB (Fall 7) .........................................69 Abbildung 87: Situation in der Out Queue für TestclientA (Fall 7) .........................................69 Abbildung 88: Refresh-Situation TestclientA (Fall 7).............................................................70 Abbildung 89: Refresh-Situation TestclientB (Fall 7).............................................................70 Abbildung 90: Systemübersicht II der Test-Umgebung .........................................................73 Abbildung 91: SyncML Technologie .....................................................................................74 Abbildung 92: SyncML Protokoll...........................................................................................75 Abbildung 93: Funambol DS Server Architektur....................................................................76 Abbildung 94: XAMPP Control-GUI Panel ............................................................................77 Abbildung 95: XAMPP phpMyAdmin Tool ............................................................................78 Abbildung 96: XAMPP Create new database Ausschnitt ......................................................78 Abbildung 97: Kommando-Konsole create database vermdb ...............................................78 Abbildung 98: XAMPP phpMyAdmin SQL query ..................................................................79 Abbildung 99: Kommando-Konsole create table tabkoord ....................................................79 Abbildung 100: Funambol DS Server starten und stoppen ...................................................80 Abbildung 101: Funambol Administration Tool GUI ..............................................................82 Abbildung 102: Anmelden an Funambol Administration Tool................................................82 Abbildung 103: Anmeldepanel Funambol Administration Tool ..............................................83 Abbildung 104: Administration Tool - Search Users..............................................................83 Abbildung 105: Administration Tool - Add User ....................................................................84 ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 227 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Abbildung 106: Add User mit selektierter Rolle.....................................................................85 Abbildung 107: Administration Tool - Search Devices ..........................................................86 Abbildung 108: Administration Tool - Search Principals........................................................87 Abbildung 109: Administration Tool - Add Principals ............................................................87 Abbildung 110: Selektierter Benutzer und Gerät...................................................................88 Abbildung 111: Neuer Principal hinzugefügt .........................................................................88 Abbildung 112: Administration Tool - Last Synchronization Timestamps ..............................89 Abbildung 113: Administration Tool - Add SyncSource.........................................................90 Abbildung 114: Administration Tool - Edit My SyncSource ...................................................90 Abbildung 115: Selektiere SyncSource.................................................................................91 Abbildung 116: Speichern der Anpassung............................................................................91 Abbildung 117: Phase Vorbereitung (Preparation)................................................................93 Abbildung 118: Projektstruktur acmeconnector ....................................................................95 Abbildung 119: Klasse SyncSource << interface >> .............................................................97 Abbildung 120: Klasse SyncItem << interface >> .................................................................99 Abbildung 121: Panel Funambol Administration Tool .........................................................103 Abbildung 122: hierarchische Modulstruktur des Connectors .............................................104 Abbildung 123: Projektstruktur VermSyncClient .................................................................107 Abbildung 124: Startsituation in der MySQL Hauptdatenbank ............................................112 Abbildung 125: Verwaltungs-Tool HSQL Database Manager (runManager) .......................113 Abbildung 126: Startsituation TestclientC (Ausgangslage) .................................................113 Abbildung 127: Startsituation TestclientD (Ausgangslage) .................................................114 Abbildung 128: Punkt einfügen TestclientC (Fall 1) ............................................................114 Abbildung 129: Neuer Punkt TestclientC (Fall 1) ................................................................115 Abbildung 130: Situation in der MySQL Hauptdatenbank (Fall 1) .......................................115 Abbildung 131: Neuer Punkt TestclientD (Fall 1) ................................................................116 Abbildung 132: Punkt 3 modifizieren TestclientD (Fall 2)....................................................117 Abbildung 133: Situation TestclientD (Fall 2) ......................................................................117 Abbildung 134: Situation in der MySQL Hauptdatenbank (Fall 2) .......................................118 Abbildung 135: Situation TestclientC (Fall 2) ......................................................................118 Abbildung 136: Situation TestclientC (Fall 3) ......................................................................119 Abbildung 137: Situation TestclientD (Fall 3) ......................................................................120 Abbildung 138: Situation in der MySQL Hauptdatenbank (Fall 3) .......................................120 Abbildung 139: Refresh-Situation TestclientC (Fall 3) ........................................................121 Abbildung 140: Unveränderte Situation TestclientD (Fall 3)................................................122 Abbildung 141: Zeitlicher Ablauf der Synchronisation (Fall 3) .............................................123 Abbildung 142: Startsituation TestclientC (Fall 4) ...............................................................126 Abbildung 143: Endsituation TestclientC (Fall 4) ................................................................126 Abbildung 144: Startsituation TestclientD (Fall 4) ...............................................................127 Abbildung 145: Punkt 3 modifizieren TestclientD (Fall 4)....................................................127 Abbildung 146: Endsituation TestclientD Fall 4...................................................................128 Abbildung 147: Situation in der MySQL Hauptdatenbank (Fall 4) .......................................128 Abbildung 148: Unveränderte Situation TestclientC (Fall 4)................................................129 Abbildung 149: Neue Situation TestclientC (Fall 4).............................................................129 Abbildung 150: Update-Statement auf Kommandokonsole (Fall 5).....................................130 Abbildung 151: Situation in der MySQL Hauptdatenbank (Fall 5) .......................................130 Abbildung 152: Situationen TestclientC & D (Fall 5) ...........................................................131 Abbildung 153: Neue Status-Situation auf den Clients (Fall 5)............................................131 Abbildung 154: Update-Statement auf Kommandokonsole (Fall 6).....................................132 Abbildung 155: Situation in der MySQL Hauptdatenbank (Fall 6) .......................................132 Abbildung 156: Startsituationen TestclientC & D (Fall 6) ....................................................132 Abbildung 157: Endsituationen TestclientC & D (Fall 6)......................................................133 Abbildung 158: Neue Status-Situation auf den Clients (Fall 6)............................................133 Abbildung 159: Situation in der MySQL Hauptdatenbank (Fall 7) .......................................134 Abbildung 160: Situationen TestclientC & D (Fall 7) ...........................................................135 ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 228 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Abbildung 161: Punkte 6 und 7 einfügen TestclientC (Fall7) ..............................................136 Abbildung 162: Punkte 8 und 9 einfügen TestclientD (Fall 7)..............................................136 Abbildung 163: Situation in der MySQL Hauptdatenbank nach D (Fall 7) ...........................137 Abbildung 164: Situation in der MySQL Hauptdatenbank nach C (Fall 7) ...........................137 Abbildung 165: Refresh-Situation TestclientC (Fall 7) ........................................................138 Abbildung 166: Situation TestclientC mit runManager betrachten (Fall 7)...........................138 Abbildung 167: Unveränderte Situation TestclientD (Fall 7)................................................139 Abbildung 168: Refresh-Situation TestclientD (Fall 7) ........................................................140 Abbildung 169: Situation TestclientD mit runManager betrachten (Fall 7)...........................140 Abbildung 170: Systemübersicht III der Test-Umgebung ....................................................142 Abbildung 171: Die Struktur des .NET Frameworks............................................................143 Abbildung 172: ADO.NET Architektur.................................................................................143 Abbildung 173: Übersicht Zusammenarbeitsszenario (collaboration)..................................146 Abbildung 174: Übersicht Offlineszenario (offline access) ..................................................146 Abbildung 175: 2-Ebene-Architektur mit Client- und Back-End-Datenbank.........................147 Abbildung 176: Clientstrukturverzeichnis „Survey“..............................................................151 Abbildung 177: Projekt „Survey“ anlegen ...........................................................................152 Abbildung 178: Projektstrukturerweiterung .........................................................................153 Abbildung 179: Synchronisierungs-Provider „VermServerSyncProvider“ ............................153 Abbildung 180: Projektstruktur „Survey“ und „VermServerSyncProvider“ ...........................154 Abbildung 181: Bibliotheken anlegen..................................................................................154 Abbildung 182: Bibliotheksfenster „Add Reference“............................................................155 Abbildung 183: Alle Bibliotheken „Survey“ ..........................................................................155 Abbildung 184: Alle Bibliotheken „VermServerSyncProvider“ .............................................155 Abbildung 185: Elemente anlegen......................................................................................156 Abbildung 186: Projektabhängigkeit festlegen ....................................................................156 Abbildung 187: Klassendiagramm ......................................................................................157 Abbildung 188: Klasse Settings ..........................................................................................158 Abbildung 189: Einstellungen im Teilprojekt .......................................................................158 Abbildung 190: Klasse Program .........................................................................................159 Abbildung 191: Klasse MainForm.......................................................................................159 Abbildung 192: Funktion New Item… (1) ............................................................................160 Abbildung 193: Erstellen der Klasse MainForm ..................................................................160 Abbildung 194: Klasse VermSyncAgent .............................................................................161 Abbildung 195: Klasse VermSyncDbDataSet .....................................................................162 Abbildung 196: Funktion New Item… (2) ............................................................................163 Abbildung 197: Erstellen der Klasse VermSyncDbDataSet ................................................163 Abbildung 198: TableAdapter erstellen...............................................................................164 Abbildung 199: TableAdapter Configuration Wizard ...........................................................164 Abbildung 200: TableAdapter tabkoord & local_tabkoord ...................................................165 Abbildung 201: Klasse TableAdapterManager....................................................................165 Abbildung 202: Klasse tabkoordTableAdapter....................................................................166 Abbildung 203: tabkoordTableAdapter ...............................................................................166 Abbildung 204: Eigenschaften des tabkoordTableAdapters................................................167 Abbildung 205: Klasse local_tabkoordTableAdapter...........................................................168 Abbildung 206: local_tabkoordTableAdapter ......................................................................168 Abbildung 207: Eigenschaften des local_tabkoordTableAdapters ......................................169 Abbildung 208: Klasse VermServerSyncProvider ...............................................................169 Abbildung 209: Programm mit Beschreibung......................................................................171 Abbildung 210: Startsituation in der MSSQL Hauptdatenbank (Ausgangslage) ..................173 Abbildung 211: Startsituation TestclientE (Ausgangslage)..................................................174 Abbildung 212: Startsituation TestclientE (Ausgangslage)..................................................174 Abbildung 213: Icon „Add new“...........................................................................................175 Abbildung 214: Punkt einfügen TestclientE (Fall 1) ............................................................175 Abbildung 215: Icon „Save“ (Fall 1) ....................................................................................175 ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 229 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Abbildung 216: Synchronisation auslösen TestclientE (Fall 1)............................................175 Abbildung 217: Situation in der MSSQL Hauptdatenbank (Fall 1).......................................176 Abbildung 218: Synchronisation auslösen TestclientE (Fall 1)............................................176 Abbildung 219: Neuer Punkt TestclientF ............................................................................176 Abbildung 220: Punkt 3 modifizieren TestclientF (Fall 2) ....................................................177 Abbildung 221: Icon „Save“ (Fall 2) ....................................................................................177 Abbildung 222: Synchronisation auslösen TestclientF (Fall 2) ............................................177 Abbildung 223: Situation in der MSSQL Hauptdatenbank (Fall 2).......................................177 Abbildung 224: Synchronisation auslösen TestclientE (Fall 2)............................................178 Abbildung 225: Situation TestclientE (Fall 2) ......................................................................178 Abbildung 226: Situation TestclientE (Fall 3) ......................................................................179 Abbildung 227: Situation TestclientF (Fall 3) ......................................................................179 Abbildung 228: Synchronisation gleichzeitig auslösen TestclientE & F (Fall 3)...................179 Abbildung 229: Situation in der MSSQL Hauptdatenbank (Fall 3).......................................180 Abbildung 230: Situation TestclientF nach der Synchronisation (Fall 3)..............................180 Abbildung 231: Situation in der Tombstone-Tabelle (Fall 3) ...............................................181 Abbildung 232: Startsituation TestclientE (Fall 4) ...............................................................181 Abbildung 233: Synchronisation auslösen TestclientE (Fall 4)............................................181 Abbildung 234: Situation in der MSSQL Hauptdatenbank Fall 4 .........................................182 Abbildung 235: Situation in der Tombstone-Tabelle (Fall 4) ...............................................182 Abbildung 236: Punkt 3 modifizieren TestclientF (Fall 4) ....................................................183 Abbildung 237: Synchronisation auslösen TestclientF (Fall 4) ............................................183 Abbildung 238: Endsituation TestclientF (Fall 4).................................................................183 Abbildung 239: Situation in der MSSQL Hauptdatenbank (Fall 4).......................................184 Abbildung 240: Situation in der MSSQL Hauptdatenbank (Fall 5).......................................184 Abbildung 241: Synchronisation auf beide TestclientE & F auslösen (Fall 5)......................184 Abbildung 242: Situationen TestclientE (Fall 5) ..................................................................185 Abbildung 243: Situationen TestclientF (Fall 5) ..................................................................185 Abbildung 244: Situation in der MSSQL Hauptdatenbank (Fall 6).......................................186 Abbildung 245: Synchronisation auf beide TestclientE & F auslösen (Fall 6)......................186 Abbildung 246: Situationen TestclientE (Fall 6) ..................................................................187 Abbildung 247: Situationen TestclientF (Fall 6) ..................................................................187 Abbildung 248: Situation in der MSSQL Hauptdatenbank (Fall 7).......................................188 Abbildung 249: Lokale DB auf beide TestclientE & F löschen (Fall 7).................................188 Abbildung 250: Synchronisation auf beide TestclientE & F auslösen (Fall 7)......................189 Abbildung 251: Situation TestclientE (Fall 7) ......................................................................189 Abbildung 252: Situation TestclientF (Fall 7) ......................................................................190 Abbildung 253: Punkte 6 und 7 einfügen TestclientE (Fall7)...............................................190 Abbildung 254: Punkte 8 und 9 einfügen TestclientF (Fall 7) ..............................................191 Abbildung 255: Synchronisation auf TestclientF auslösen (Fall 7) ......................................191 Abbildung 256: Situation in der MSSQL Hauptdatenbank nach F (Fall 7) ...........................191 Abbildung 257: Synchronisation auf TestclientE auslösen (Fall 7)......................................191 Abbildung 258: Situation in der MSSQL Hauptdatenbank nach E (Fall 7)...........................192 Abbildung 259: Situation TestclientE nach Synchronisation Fall 7......................................192 Abbildung 260: Situation TestclientF (Fall 7) ......................................................................193 Abbildung 261: Synchronisation auf TestclientF auslösen (Fall 7) ......................................193 Abbildung 262: Situation TestclientF nach Synchronisation (Fall 7)....................................193 Abbildung 263: Attribute in MS-Access...............................................................................195 Abbildung 264: Spaltenbeschreibung in MS-Access...........................................................195 Abbildung 265: Stammdaten in MS-Access........................................................................196 Abbildung 266: ODBC-Einstellung Microsoft für MS-Access ..............................................196 Abbildung 267: Benutzer mit Zugriff in MySQL ...................................................................197 Abbildung 268: Tabellenbestand in MySQL........................................................................197 Abbildung 269: Stammdaten in MySQL..............................................................................197 Abbildung 270: Spaltenbeschreibung in MySQL.................................................................197 ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 230 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Abbildung 271: hsqldb-Verzeichnisstruktur.........................................................................199 Abbildung 272: HSQLDB Server gestartet..........................................................................199 Abbildung 273: Anmeldepanel HSQLDB Manager .............................................................200 Abbildung 274: Verwaltungspanel HSQLDB.......................................................................200 Abbildung 275: Strukturbeschreibung in HSQLDB..............................................................201 Abbildung 276: Stammdaten in HSQLDB ...........................................................................202 Abbildung 277: Stammdaten in Oracle ...............................................................................202 Abbildung 278: Spaltenbeschreibung in Oracle ..................................................................202 Abbildung 279: ODBC-Schnittstelle von Oracle Lite ...........................................................203 Abbildung 280: ODBC-Konfigurationseinstellung................................................................204 Abbildung 281: Stammdaten in Oracle Lite DB via msql anzeigen.....................................204 Abbildung 282: Tabellenstruktur in Oracle Lite DB via msql anzeigen ................................204 Abbildung 283: Tabellenstruktur „tabkoord“ in MSSQL.......................................................205 Abbildung 284: Tabellenstruktur „tabkoord_tombstone“ in MSSQL ....................................206 Abbildung 285: Trigger „tabkoord_DeleteTrigger“ in MSSQL..............................................206 Abbildung 286: Ausgangslage (Beispiel) ............................................................................207 Abbildung 287: Punktnummer ändern (Beispiel).................................................................208 Abbildung 288: Endstand (Beispiel)....................................................................................208 Abbildung 289: Trigger „tabkoord_UpdateTrigger“..............................................................209 Abbildung 290: Stored Procedures in MSSQL....................................................................209 Abbildung 291: Ablageverzeichnis der lokalen Datenbankdatei „localvermdb.sdf“..............211 ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 231 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 13.2 Projektplan Die Arbeit dauerte vom 22. September 2008 bis 31. März 2009. Weitere Informationen sind vom Plan zu entnehmen. Der Plan ist ebenfalls elektronisch auf der DVD beigelegt. Legende ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 232 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 233 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 234 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 235 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 13.3 Arbeitsjournal Angelo Lo Iudice Datum Wochentag 24.09.2008 Mittwoch Aufwand [h] 1.5 Tätigkeit Task - Kickoff-Sitzung mit B. Wyss Termine: Kickoff-Sitzung mit Examinator 29.09.2008 Montag 1 - Newsletter Fokus Report durchlesen Allgemein: Literartur beschaffen und studieren 02.10.2008 Donnerstag 2 - Rechner auswählen Systemrealisierung: - Rechner beschaffen 03.10.2008 Freitag 1 - Rechner auswählen / bestellen Systemrealisierung: - leistungsstarker Rechner beschaffen 06.10.2008 Montag 8.5 - Dokumentationsbeschaffung 1. Systems - Einarbeitung & Duchlesen von Oracle Database Lite - Software beschaffen (Oracle) Systemevaluation: - System I Systemrealisierung: - Software (VMware, Oracle) beschaffen 10.10.2008 Freitag 10 - Neuer Rechner zusammengesetzt - Windows 2003 Server installiert (Host) - VMware installiert - Virtuelle Maschinen erstellt Systemevaluation: - System I Systemrealisierung: - Rechner aufsetzen 13.10.2008 Montag 8.5 - Virtuelle Maschinen erstellt - Oracle 10g (10.2.0.3) installiert - Konfigurieren von Oracle (TNSListener) - Skripte zur Erstellung der Hauptdatenbank geschrieben - Hauptdatenbank "vermdb" erstellt Systemevaluation: - System I Systemrealisierung: - Rechner aufsetzen 17.10.2008 Freitag 5 - Oracle Datebase Lite installiert - Oracle Datebase Lite konfigurieren Systemevaluation: - System I Systemrealisierung: - Rechner aufsetzen 20.10.2008 Montag 8.5 - Oracle Datebase Lite konfigurieren - Erste Erfahrung mit Demo-Daten gesammelt - Problem mit Performance der virtuellen Maschinen - Rechner auswählen Systemevaluation: - System I Systemrealisierung: - Rechner aufsetzen 22.10.2008 Dienstag 1 - Rechner auswählen / bestellen Systemrealisierung: - Rechner aufsetzen 24.10.2008 Freitag 4 - Mobile Server & Mobile Database Workbench Systemevaluation: - System I 26.10.2008 Sonntag 4 - Optimierung & Troubleshooting Prototyp GUI: - DB + Business + GUI Klassen 27.10.2008 Montag 9.5 - Oracle / Wissentransfer - Sitzungsvorbereitung - 1. Sitzung mit B. Wyss Systemevaluation: - System I Termine: - Sitzung mit Examinator Dokumentation: - Pflichtenheft erstellen 30.10.2008 Donnerstag 2 - Pflichtenheft erstellen 31.10.2008 Freitag 7 - Pflichtenheft erstellen und bereinigen Dokumentation: - Erste erfahrung mit Oracle Datase Pflichtenheft erstellen Lite Client Systemevaluation: - System I ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 236 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 03.11.2008 Montag 7 - Einarbeiten beim Erstellen von JARFile - Oracle Datase Lite Client - Packaging & Deploy (Trouble!) Systemevaluation: - System I 07.11.2008 Freitag 4 - Oracle Datase Lite Client - Packaging & Deploy (Trouble!) Systemevaluation: - System I 10.11.2008 Montag 10 - Neuer Rechner zusammengesetzt - ESX3i Update 2 installiert & Konfiguriert (Host) - Kennenlernen des neuen Systems - Virtuelle Maschinen erstellt - Oracle 10g & Oracle Database Lite (ohne SSL) installiert - Screenshots für Dokumentation Systemevaluation: - System I Systemrealisierung: - Rechner aufsetzen 11.11.2008 Dienstag 1 - Packaging & Deploy (Erforlgreich!) Systemevaluation: - System I 13.11.2008 Donnerstag 2 - Einarbeitung in VMware Converter - Virtuelle Maschinen von vorherigen Rechner migriert (konvertiert) Systemevaluation: - System I 14.11.2008 Freitag 5 - Client Oracle Lite DB aufsetzen - Synchronisation unseres Prototyps mit 2 Client testen (-> Trouble mit Daten-Refresh & Datensynchronisation via GUI) Systemevaluation: - System I Systemtest: - Testszenarien 16.11.2008 Sonntag 3 - Zeitplan erstellen Dokumentation: - Zeitplan erstellen 17.11.2008 Montag 8.5 - Synchronisation unseres Prototyps mit 2 Client testen (-> Problem gelöst; Autocommit im URL) - Testszenarien dokumentiert Systemtest: - Testszenarien 21.11.2008 Freitag 8.5 - Testszenarien dokumentiert - Dokumentation der Testumgebung Systemtest: - Testfälle erstellen Dokumentation: - Bericht schreiben 23.11.2008 Sonntag 4 - Dokumentation der Testumgebung Dokumentation: - Bericht schreiben 24.11.2008 Montag 10 - Dokumentation des Systemes I - Zusatz-Doku: Installation Win2K3 erstellt Dokumentation: - Bericht schreiben 28.11.2008 Freitag 7 - Dokumentation des Systemes I - Einarbeiten im System II Dokumentation: - Bericht schreiben Systemevaluation: - System II 01.12.2008 Montag 7 - Einarbeiten im System II Systemevaluation: - System II 05.12.2008 Freitag 7 - Umsetzung des System II (Funambol) -> Funambol, XAMPP - Konfiguration: Zugriff auf MySQL - Tests Systemevaluation: - System II 07.12.2008 Sonntag 6 - Doku: funambol-v7-developersguide.pdf - Aufsetzen der Entwicklungsumgebung - Maven Projekt -> s4j-File erstellt Systemevaluation: - System II 08.12.2008 Montag 8.5 - Doku: funambol-v7-developersguide.pdf - Aufsetzen der Entwicklungsumgebung - Maven Projekt -> s4j-File erstellt - 2. Sitzung mit B. Wyss Systemevaluation: - System II Termine: - Sitzung mit Examinator ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 237 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 12.12.2008 Freitag 7.5 - Eigener Connector "vermconnector" Systemevaluation: - System II 13.12.2008 Samstag 3.5 - Eigener Connector "vermconnector" Systemevaluation: - System II 14.12.2008 Sonntag 6.5 - Eigener Connector "vermconnector" - Doku: Kapitel "Pflichtenheft" bereinigen und ergänzt Systemevaluation: - System II Dokumentation: - Pflichtenheft erstellen 15.12.2008 Montag 7 - Eigener Connector "vermconnector" Systemevaluation: - System II 19.12.2008 Freitag 7 - Wissenstransfer - Eigener Connector "vermconnector" Systemevaluation: - System II 21.12.2008 Sonntag 4 - Eigener Connector "vermconnector" - Einarbeiten in HSQL Systemevaluation: - System II 22.12.2008 Montag 7.5 - Wissenstransfer - Testclient C aufgesetzt (HSQLDB + testsyncclient) - Eigener Sync Client Systemevaluation: - System II 23.12.2008 Dienstag 8 - Eigener Sync Client Systemevaluation: - System II 24.12.2008 Mittwoch 7 - Eigener Sync Client Systemevaluation: - System II 26.12.2008 Freitag 7 - Eigener Sync Client - Eigener Connector "vermconnector" Systemevaluation: - System II 27.12.2008 Samstag 7 - Eigener Sync Client Systemevaluation: - System II 28.12.2008 Sonntag 6 - Eigener Sync Client - Eigener Connector "vermconnector" - Troubleshooting Systemevaluation: - System II 29.12.2008 Montag 7.5 - Eigener Sync Client - Eigener Connector "vermconnector" - Troubleshooting Systemevaluation: - System II 30.12.2008 Dienstag 7 - Eigener Sync Client - Eigener Connector "vermconnector" - Troubleshooting Systemevaluation: - System II 31.12.2008 Mittwoch 7 - Dokumentation des Systemes II Dokumentation: - Bericht schreiben 02.01.2009 Freitag 7 - Dokumentation des Systemes II Dokumentation: - Bericht schreiben 04.01.2009 Sonntag 7 - Dokumentation des Systemes II - Eigener Sync Client Dokumentation: - Bericht schreiben 05.01.2009 Montag 5 - Dokumentation des Systemes II - Wissenstransfer Dokumentation: - Bericht schreiben 08.01.2009 Donnerstag 2.5 - Dokumentation des Systemes II - Wissenstransfer Dokumentation: - Bericht schreiben 09.01.2009 Freitag 8.5 - Dokumentation des Systemes II - Test-Umgebung -> Big Trouble Dokumentation: - Bericht schreiben Testfälle durchführen 11.01.2009 Sonntag 5.5 - Dokumentation des Systemes II - Test-Umgebung -> Big Trouble beheben - Testszenarien dokumentiert Dokumentation: - Bericht schreiben Testfälle durchführen 12.01.2009 Montag 8 - Dokumentation des Systemes II - Testszenarien dokumentiert - 3. Sitzung mit B. Wyss Dokumentation: - Bericht schreiben Testfälle durchführen Termine: - Sitzung mit Examinator ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 238 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 13.01.2009 Dienstag 1 - Dokumentation des Systemes II Dokumentation: - Bericht schreiben 16.01.2009 Freitag 5 - Dokumentation des Systemes II Dokumentation: - Bericht schreiben 18.01.2009 Sonntag 3 - Testszenarien dokumentiert Dokumentation: - Bericht schreiben 19.01.2009 Montag 8 - Testszenarien dokumentiert (Testsystem I + II) Dokumentation: - Bericht schreiben 22.01.2009 Donnerstag 2.5 - Testszenarien dokumentiert (Testsystem II) Dokumentation: - Bericht schreiben 23.01.2009 Freitag 5.5 - Einarbeiten im System III (-> MS Synchronization Services for ADO.NET) Systemevaluation: - System III 25.01.2009 Sonntag 2 - Testszenarien dokumentiert (Testsystem I) Dokumentation: - Bericht schreiben 26.01.2009 Montag 10 - Einarbeiten im System III (-> MS Synchronization Services for ADO.NET) Systemevaluation: - System III 28.01.2009 Mittwoch 2.5 - Einarbeiten im System III (-> MS Synchronization Services for ADO.NET) Systemevaluation: - System III 29.01.2009 Donnerstag 1 - Einarbeiten im System III (-> MS Synchronization Services for ADO.NET) Systemevaluation: - System III 30.01.2009 Freitag 7 - Einarbeiten im System III (-> MS Synchronization Services for ADO.NET) ohne SqlCe Systemevaluation: - System III 01.02.2009 Sonntag 4.5 - Einarbeiten im System III (-> MS Synchronization Services for ADO.NET) ohne SqlCe Systemevaluation: - System III 02.02.2009 Montag 7 - Einarbeiten im System III (-> MS Synchronization Services for ADO.NET) ohne SqlCe Systemevaluation: - System III 06.02.2009 Freitag 10.5 - Eigener Sync mit Client Feature Systemevaluation: - System III 08.02.2009 Sonntag 5.5 - Eigener Sync mit Client Feature Systemevaluation: - System III 09.02.2009 Montag 8.5 - Eigener Sync mit Client Feature - Aufbau der Testumgebung Systemevaluation: - System III 13.02.2009 Freitag 6 - Eigener Sync mit Client Feature - Aufbau der Testumgebung - Dokumentation des Systemes III Systemevaluation: - System III Dokumentation: - Bericht schreiben 14.02.2009 Samstag 1 - Dokumentation des Systemes III Dokumentation: - Bericht schreiben 15.02.2009 Sonntag 7 - Dokumentation des Systemes III - Testszenarien dokumentiert Dokumentation: - Bericht schreiben Testfälle durchführen 16.02.2009 Montag 4 - Dokumentation des Systemes III Dokumentation: - Bericht schreiben 17.02.2009 Dienstag 1 - Eigener Sync mit Client Feature Systemevaluation: - System III 18.02.2009 Mittwoch 2 - Eigener Sync mit Client Feature Systemevaluation: - System III 22.02.2009 Sonntag 5 - Dokumentation des Systemes III Dokumentation: ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 239 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ - Bericht schreiben 23.02.2009 Montag 7 - Dokumentation des Systemes III Dokumentation: - Bericht schreiben 27.02.2009 Freitag 5.5 - Eigener Sync mit Client Feature - Dokumentation des Systemes III Systemevaluation: - System III Dokumentation: - Bericht schreiben 01.03.2009 Sonntag 5 - Dokumentation des Systemes III Dokumentation: - Bericht schreiben 02.03.2009 Montag 7 - Dokumentation des Systemes III Dokumentation: - Bericht schreiben 06.03.2009 Freitag 4 - Dokumentation Bericht Dokumentation: - Bericht schreiben 08.03.2009 Sonntag 5.5 - Dokumentation Bericht Dokumentation: - Bericht schreiben 09.03.2009 Montag 9 - Dokumentation Bericht - 4. Sitzung mit B. Wyss Dokumentation: - Bericht schreiben Termine: - Sitzung mit Examinator 13.03.2009 Freitag 7 - Dokumentation Bericht Dokumentation: - Bericht schreiben 15.03.2009 Sonntag 6 - Dokumentation Bericht Dokumentation: - Bericht schreiben 16.03.2009 Montag 9.5 - Dokumentation Bericht Dokumentation: - Bericht schreiben 19.03.2009 Donnerstag 5.5 - Dokumentation Bericht Dokumentation: - Bericht schreiben 20.03.2009 Freitag 3.5 - Dokumentation Bericht Dokumentation: - Bericht schreiben 22.03.2009 Sonntag 4 - Dokumentation Bericht Dokumentation: - Bericht schreiben 23.03.2009 Montag 6.5 - Dokumentation Bericht Dokumentation: - Bericht schreiben 25.03.2009 Mittwoch 2.5 - Dokumentation Bericht Dokumentation: - Bericht schreiben 26.03.2009 Donnerstag 8.5 - Dokumentation Bericht Dokumentation: - Bericht schreiben 7 - Dokumentation Bericht Dokumentation: - Bericht schreiben 27.03.2009 Freitag Total 527.5 13.4 Arbeitsjournal Isidoro Lo Iudice Datum Wochentag 24.09.2008 Mittwoch Aufwand [h] 0 Tätigkeit Task - Kickoff-Sitzung aus gesundheitlichen Termine: Gründen abwesend Kickoff-Sitzung mit Examinator 29.09.2008 Montag 0.5 - Newsletter Fokus Report durchlesen Allgemein: Literartur beschaffen und studieren 06.10.2008 Montag 8.5 - Softwarearchitektur DB, Business, GUI skizzenmässig festlegen (Brainstorming) - Programmierung GUI-Prototyp Allgemein: Prototyp GUI: Business Klasse - Programmierung Business Prototyp GUI: Business 07.10.2008 Dienstag 1 ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 240 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Klasse 08.10.2008 Mittwoch 1 - Programmierung Business Prototyp GUI: Business Klasse 11.10.2008 Samstag 8.5 - Programmierung Business und DB Prototyp GUI: Business + DB Klasse 13.10.2008 Montag 8.5 - Programmierung Business und DB - Access-Datenbank erstellen - JDBC-Treiber installieren - Access in DB-Programm verbinden und Zugriff testen Prototyp GUI: Business + DB Klasse 18.10.2008 Samstag 8.5 - Programmierung GUI - ListGUI - Einbau Observer: Business, GUI - Access Zugriff testen, Update testen Prototyp GUI: GUI Klassen 19.10.2008 Sonntag 8.5 - Programmierung GUI Prototyp GUI: GUI Klassen - Dialog Loeschen - ListGUI (ComboBox implementieren) 20.10.2008 Montag 8.5 - Programmierung GUI - ListGUI - Einbau Observer: Business, GUI - Access Zugriff testen, Update testen Prototyp GUI: Business + GUI Klassen 21.10.2008 Dienstag 1 - Programmierung GUI - Dialog Warning Prototyp GUI: GUI Klassen 22.10.2008 Mittwoch 1 - Programmierung GUI - DialogLogin Prototyp GUI: GUI Klassen 23.10.2008 Donnerstag 1 - Programmierung GUI - DialogLogin Prototyp GUI: GUI Klassen 24.10.2008 Freitag 0.5 - Programmierung GUI - DialogLogin Prototyp GUI: GUI Klassen 25.10.2008 Samstag 8.5 - MySQL Datenbank erstellen (xampp) Prototyp GUI: GUI Klassen - MySQL Zugriff testen, Testuser definieren 27.10.2008 Montag 28.10.2008 Dienstag 9 1.5 - Oracle / Wissenstransfer - Sitzungsvorbereitung - 1. Sitzung mit B. Wyss Termine: Sitzung mit Examinator - Dokumentenvorlage erstellen - Pflichtenheft erstellen Dokumentation: Pflichtenheft erstellen Dokumentation: Pflichtenheft erstellen 30.10.2008 Donnerstag 2 - Pflichtenheft erstellen 31.10.2008 Freitag 3 - Pflichtenheft erstellen und bereinigen Dokumentation: Pflichtenheft erstellen 01.11.2008 Samstag 2 - Protokoll erstellen Dokumentation: Protokolle schreiben 03.11.2008 Montag 6 - Klassendiagramm erstellen - jar vom GUI-Prototyp erstellen und testen - Protokoll und Pflichtenheft an Teilnehmer versenden Prototyp GUI: OOA Klassendiagramm Testen 14.11.2008 Freitag 8 - Client Oracle DB Lite aufsetzen - Synchronisation unseres Prototyps mit zwei Client testen (-> Trouble mit Daten-Refresh & Datensynchronisation via GUI) Systemevaluation: System I Systemtest: Testfälle erstellen 15.11.2008 Samstag 2 - Ergänzungen Prototyp GUI: GUI, Business + DB 16.11.2008 Sonntag 6 - Zeitplan erstellen Dokumentation: Zeitplan erstellen ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 241 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 17.11.2008 Montag 6 - Synchronisation unseres Prototyps mit zwei Client testen (-> Problem gelöst, Autocommit im URL) - Implementation KeyListener und Refresh-Button Systemtest: Testfälle erstellen Prototyp GUI: GUI Klassen 19.11.2008 Mittwoch 8 - Dokumentenerstellung - OOA Dokumentation: Bericht schreiben 20.11.2008 Donnerstag 8 - OOA und OOD Dokumentation: Bericht schreiben 21.11.2008 Freitag 8 - Oracle DB Lite Synchronisation mit zwei Client testen Systemtest: Testfälle erstellen, Testphase 22.11.2008 Samstag 3 - OOD Dokumentation: Bericht schreiben 24.11.2008 Montag 8 - Pflichtenheft, OOA mit Bilder im Hauptdokument implementieren Dokumentation: Bericht schreiben 25.11.2008 Dienstag 4 - OOD mit Bilder im Hauptdokument implementieren Dokumentation: Bericht schreiben 26.11.2008 Mittwoch 8 - Systemevaluationskonzept erstellen Dokumentation: Bericht schreiben 28.11.2008 Freitag 8 - Test-Umgebung Doku im Hauptdokument einbinden, ergänzen Dokumentation: Bericht schreiben 01.12.2008 Montag 6 - Einarbeiten im System II - Zeitplan, Arbeitsjournale und Traktandenliste versenden Systemevaluation: System II 07.12.2008 Sonntag 4 - Doku: funambol-v7-developersSystemevaluation: System II guide.pdf - Problem Maven Projekt -> Lösungen im Internet suchen (alte DokuVersion) 08.12.2008 Montag 3 - Sitzungsvorbereitung - 2. Sitzung mit B. Wyss Termine: Sitzung mit Examinator 13.12.2008 Samstag 2 - Protokoll erstellen Dokumentation: Protokolle schreiben 14.12.2008 Sonntag 7 - Doku: Kapitel "Pflichtenheft" bereinigen und ergänzt Dokumentation: Pflichtenheft erstellen 19.12.2008 Freitag 5 - Wissenstransfer "vermconnector" - Einarbeiten in HSQLDB Systemevaluation: System II 22.12.2008 Montag 7 - Wissenstransfer - Testclient C aufgesetzt (HSQLDB + testsyncclient) -> Fehleranalyse Systemevaluation: System II 27.12.2008 Samstag 8 - Eigener Connector "vermconnector" Systemevaluation: System II 29.12.2008 Montag 8.5 - Eigener Sync Client - Doku: System II beschreiben Fehleranalyse Systemevaluation: System II Dokumentation: Bericht schreiben 30.12.2008 Dienstag 8.5 - Doku: System II beschreiben Dokumentation: Bericht schreiben 05.01.2009 Montag 8.5 - Traktandenliste, Protokoll und Pflichtenheft versenden - Ergänzungen in GUI zu Funambol - GUI-Test MySQL, HSQLDB - Wissenstransfer Prototyp GUI: GUI, Business + DB Systemevaluation: System II 06.01.2009 Dienstag 8.5 - GUI-Test MySQL, HSQLDB - Doku: System II beschreiben Dokumentation: Bericht schreiben 07.01.2009 Mittwoch 8 - Doku: System II beschreiben Dokumentation: Bericht schreiben ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 242 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 08.01.2009 Donnerstag 09.01.2009 Freitag 8 8.5 11.01.2009 Sonntag 4 12.01.2009 Montag 8.5 - Doku: Diverse Kapitel Dokumentation: Bericht schreiben - Doku: System II beschreiben - Test-Umgebung -> Big Trouble Dokumentation: Bericht schreiben Testfälle durchführen - Doku: Kapitel Datenbanken Dokumentation: Bericht schreiben - Funambol Synchronisation mit zwei Client testen - 3. Sitzung mit B. Wyss Systemtest: Testphase Termine: Sitzung mit Examinator 13.01.2009 Dienstag 2 - Protokoll erstellen Dokumentation: Protokolle schreiben 14.01.2009 Mittwoch 2 - Doku: System I beschreiben, ergänzen Dokumentation: Bericht schreiben 15.01.2009 Donnerstag 2 - Doku: System I beschreiben, ergänzen Dokumentation: Bericht schreiben 17.01.2009 Samstag 8 - Doku: System I beschreiben, ergänzen Dokumentation: Bericht schreiben 18.01.2009 Sonntag 6 - Funambol Synchronisation mit zwei Client testen - Testfälle dokumentieren - Doku: Kapitel Datenbanken Systemtest: Testphase Dokumentation: Bericht schreiben 19.01.2009 Montag 8 - Funambol Synchronisation mit zwei Client testen - Testfälle dokumentieren Systemtest: Testphase Dokumentation: Bericht schreiben 2.5 - Oracle DB Lite Synchronisation mit zwei Client testen (manuell) Systemtest: Testphase Dokumentation: Bericht schreiben 22.01.2009 Donnerstag 24.01.2009 Samstag 8 - Doku: Testfälle System I (man. Synchronisation) beschreiben, ergänzen Dokumentation: Bericht schreiben 26.01.2009 Montag 8 - Einarbeiten im System III - Wissenstransfer Systemevaluation: System III 27.01.2009 Dienstag 2 - Einarbeiten im System III Systemevaluation: System III 28.01.2009 Mittwoch 2 - Einarbeiten im System III Systemevaluation: System III 31.01.2009 Samstag 5 - Einarbeiten im System III Systemevaluation: System III - Einbindung, Bearbeitung Testfälle System II ins Hauptdokument Dokumentation: Bericht schreiben 02.02.2009 Montag 8.5 06.02.2009 Freitag 5 - System III: eigener VermSyncClient entwickeln Systemevaluation: System III 09.02.2009 Montag 8.5 - System III: eigener VermSyncClient entwickeln - Testclient E und F erstellen - allg. Systemumgebung aufbauen Systemevaluation: System III 14.02.2009 Samstag 8.5 - System III: eigener VermSyncClient installieren - Einbindung Systemkonzept und Testumgebung ins Hauptdokument Systemevaluation: System III Dokumentation: Bericht schreiben 15.02.2009 Sonntag 7 - MSSQL Synchronisation mit zwei Client testen - Testfälle dokumentieren Systemtest: Testphase Dokumentation: Bericht schreiben 16.02.2009 Montag 8.5 - MSSQL ADO.NET Synchronisation mit zwei Client testen - Testfälle dokumentieren - Doku: Kapitel Datenbanken Systemtest: Testphase Dokumentation: Bericht schreiben ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 243 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 18.02.2009 Mittwoch 3 - Traktandenliste und Protokoll versenden - Testfälle dokumentieren Dokumentation: Bericht schreiben 21.02.2009 Samstag 5 - Doku: System III beschreiben Dokumentation: Bericht schreiben 4.5 - Doku: System III beschreiben Dokumentation: Bericht schreiben 28.02.2009 Samstag 2 - Doku: System III beschreiben Dokumentation: Bericht schreiben 01.03.2009 Sonntag 5 - Doku: System III beschreiben Dokumentation: Bericht schreiben 02.03.2009 Montag 8.5 - Doku: System III beschreiben Dokumentation: Bericht schreiben 23.02.2009 Montag 07.03.2009 Samstag 4 - Hauptdokument ausdrucken, Bericht schreiben Dokumentation: Bericht schreiben 08.03.2009 Sonntag 2 - Bericht schreiben Dokumentation: Bericht schreiben 09.03.2009 Montag 8.5 - Bericht schreiben - 4. Sitzung mit B. Wyss Dokumentation: Bericht schreiben 14.03.2009 Samstag 8 - Bericht schreiben Dokumentation: Bericht schreiben 15.03.2009 Sonntag 6 - Bericht schreiben Dokumentation: Bericht schreiben 16.03.2009 Montag 7 - Bericht schreiben Dokumentation: Bericht schreiben 17.03.2009 Dienstag 8 - Bericht schreiben - Protokoll erstellen Dokumentation: Bericht, Protokoll schreiben 18.03.2009 Mittwoch 7 - Bericht schreiben Dokumentation: Bericht, Protokoll schreiben 19.03.2009 Donnerstag 5 - Bericht schreiben Dokumentation: Bericht schreiben 20.03.2009 Freitag 5 - Bericht schreiben Dokumentation: Bericht schreiben 21.03.2009 Samstag 8 - Bericht schreiben Dokumentation: Bericht schreiben 22.03.2009 Sonntag 7 - Bericht schreiben Dokumentation: Bericht schreiben 23.03.2009 Montag 7 - Bericht schreiben Dokumentation: Bericht schreiben 24.03.2009 Dienstag 5 - Bericht schreiben - Protokoll versenden, Terminvorschläge Dokumentation: Bericht schreiben 25.03.2009 Mittwoch 5 - Bericht schreiben Dokumentation: Bericht schreiben 26.03.2009 Donnerstag 6 - Bericht schreiben Dokumentation: Bericht schreiben 27.03.2009 Freitag 8 - Bericht schreiben Dokumentation: Bericht schreiben Total 515 ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 244 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 13.5 Sitzungsprotokolle 13.5.1 Protokoll Nr. 01 / 08 Sitzung Master Thesis Objekt Datenbanksynchronisation Datum/Zeit Montag, 27. Oktober 2008, 17.30 Uhr Ort Fachhochschule Nordwestschweiz Brugg-Windisch Traktanden 1. 2. 3. 4. 5. Vorsitz A. Lo Iudice Protokoll I. Lo Iudice Anwesend A. Lo Iudice, IT-MAS Student I. Lo Iudice, IT-MAS Student B. Wyss, Dozent (Examinator) Stand der Arbeit Personelles Weiteres Vorgehen Varia Nächste Sitzung Entschuldigt Verhandlungen und Beschlüsse Termine/Aufträge 1. Stand der Arbeit A. Lo Iudice berichtet den Stand der Arbeit. Die Thesis wird anhand eines physischen und leistungsstarken Rechners mit virtuellen VMware Maschinen erarbeitet. Zurzeit ist I. Lo Iudice mit dem Entwickeln einer GUI für die Erfassung und Abruf der Daten tätig, während A. Lo Iudice sich mit dem Aufsetzen der VMware Maschinen und Oracle Database Lite beschäftigte. A. Lo Iudice weist darauf hin, dass MSSQL keine eigene Datensynchronisation anbietet und aus diesem Grund eine eigene Lösung zu suchen ist. Ferner sind auch Lizenzfragen und Kosten abzuklären. B. Wyss gibt einige Hinweise zur Lösung des Problems, die verfolgt werden können, z. B.: - Compact SQL in Zusammenhang mit .NET Framework ADO - Funambol mit SyncML Protokoll - HSQLDB Datenbanksystem für Client (Server- wie auch Standalone-Modus) in Java geschrieben - Datenbank „Apache Derby“ als Open Source zu Vergleichen mit Java DB von SUN 2. Personelles Aus gesundheitlichen Gründen fällt wiederum I. Lo Iudice fast den ganzen Monat November aus. In dieser Zeit kann I. Lo Iudice kaum an ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 245 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ der Thesis arbeiten. Die Gruppe sieht den Abgabetermin, 31. März 2009 als realistisch vor, erwägt aber auf eine mögliche Fristverlängerung als Sicherheit. 3. Weiteres Vorgehen In Anbetracht des vorgehenden Traktandums beschliessen die Anwesenden Folgendes: - Anfangs November werden dem Examinator B. Wyss das Protokoll und das Pflichtenheft als pdf-Datei per e-mail zugestellt. - Arbeitsjournale und der Zeitplan werden voraussichtlich Ende November mit Rücksicht auf die Genesung von I. Lo Iudice erstellt. - Die nächste Sitzung in drei Wochen fällt aus. IL, LA 04.11.08 IL, LA 30.11.08 4. Varia Keine 5. Nächste Sitzung Das Datum der nächsten Sitzung bleibt gemäss Traktandum 3 offen. offen Der Protokollführer: I. Lo Iudice Beilage - Pflichtenheft Geht an Teilnehmende/Entschuldigte 13.5.2 Protokoll Nr. 02 / 08 Sitzung Master Thesis Objekt Datenbanksynchronisation Datum/Zeit Montag, 08. Dezember 2008, 17.30 Uhr Ort Fachhochschule Nordwestschweiz Brugg-Windisch Traktanden 1. Protokoll 01 / 08 über Master Thesis vom 27. Oktober 2008 1.1 Ergänzung zum Pflichtenheft 2. Stand der Arbeit 3. Weiteres Vorgehen 4. Varia 5. Nächste Sitzung Vorsitz I. Lo Iudice ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 246 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Protokoll I. Lo Iudice Anwesend A. Lo Iudice, IT-MAS Student I. Lo Iudice, IT-MAS Student B. Wyss, Dozent (Examinator) Entschuldigt Verhandlungen und Beschlüsse Termine/Aufträge 1. Protokoll 01 / 08 über Master Thesis vom 27. Oktober 2008 Das Protokoll wird in der vorliegenden Fassung genehmigt und verdankt. 1.1 Ergänzung zum Pflichtenheft Herr Wyss empfiehlt der Gruppe, die Use Cases in das Pflichtenheft IL, LA aufzunehmen und nicht nur als Bestandteile der zu bearbeitenden 12.01.09 Themen zu erfassen. Ferner soll im Pflichtenheft inhaltlich wo angebracht die Ziele, der Nutzer und der Ablauf dieser Thesis näher beschrieben werden, damit der Auftraggeber die Arbeit am Schluss nachvollziehen und verifizieren kann. Entspricht das Endprodukt die Vorstellung des Auftraggebers? Die Gruppe weist darauf hin, dass sie sich an die einzigen Vorgaben (Semesterarbeit in der SoftwareEngineering beim Dozent Kurt Scherrer), die ihnen die FHNW zur Verfügung gestellt hat und an das Buch von Heide Balzert gehalten hat. Daraufhin zeigt Herr Wyss einige Pflichtenheftmuster auf seinem Laptop, z. B. ein Muster aus dem Bachelor-Informatikstudium. 2. Stand der Arbeit Eine Benutzungsoberfläche (Prototyp GUI) für die Datenbankverbindung, Datenanzeige und -manipulation wurde von I. Lo Iudice fertig entwickelt und eine Systemumgebung mit Oracle Database Lite für das Testen der Datensynchronisation wurde von A. Lo Iudice aufgesetzt. Die Evaluation eines Systems konnte bereits durchgeführt werden. 3. Weiteres Vorgehen Als nächste Systemevaluation sieht die Gruppe eine Systemumgebung mit Funambol und MySQL vor. Die Schwierigkeit dieser Evaluation ist, dass die Gruppe einige Komponenten selber entwickeln muss, da Funambol prinzipiell Lösungen zur Synchronisation von Kalender, Kontakte und E-mail-Adressen und keine allgemeine Daten bietet. In der Sitzung wird über die Eigenschaften von Funambol und Komponenten (Connectoren, Device Management und Entwicklungshandbuch) diskutiert. Aus zeitlichen und infrastrukturellen Gründen wird das Testen der Benutzungsoberfläche auf einem PDA nicht weiterverfolgt bzw. rückt in den Hintergrund -> Emulation von PDA auf PC. Die Gruppe will in ihrer Thesis gemäss Aufgabenstellung sich primär mit der Synchronisation beschäftigen. Diese steht zurzeit im Vordergrund (Schwergewicht). 4. Varia Keine ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 247 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 5. Nächste Sitzung Die nächste Sitzung findet wie folgt statt: - Montag, 12 Januar 2008, 17.30 Uhr, FHNW Der Protokollführer: I. Lo Iudice Beilage - Pflichtenheft (neu) Geht an Teilnehmende/Entschuldigte 13.5.3 Protokoll Nr. 01 / 09 Sitzung Master Thesis Objekt Datenbanksynchronisation Datum/Zeit Montag, 12. Januar 2009, 17.30 Uhr Ort Fachhochschule Nordwestschweiz Brugg-Windisch Traktanden 1. 2. 3. 4. 5. Vorsitz I. Lo Iudice Protokoll I. Lo Iudice Anwesend A. Lo Iudice, IT-MAS Student I. Lo Iudice, IT-MAS Student B. Wyss, Dozent (Examinator) Protokoll 02 / 08 über Master Thesis vom 8. Dezember 2008 Stand der Arbeit Weiteres Vorgehen Varia Nächste Sitzung Entschuldigt Verhandlungen und Beschlüsse Termine/Aufträge 1. Protokoll 02 / 08 über Master Thesis vom 8. Dezeber 2008 Das Protokoll wird in der vorliegenden Fassung genehmigt und verdankt. ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 248 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ 2. Stand der Arbeit Die Gruppe evaluierte als zweites System MySQL, aber aus folgende Gründen konnte MySQL nicht berücksichtigt werden: - MySQL kann nur Einweg synchronisieren - MySQL bietet kein vollständiges System wie Oracle an - MySQL eignet sich besser für Replikationsverfahren Daraufhin beschloss die Gruppe Funambol als zweites System zu wählen. Server-seitig wird MySQL und Client-seitig HSQL als Datenbank verwendet. Der jetzige Arbeitsstand sieht folgendermassen aus: - Die Systemumgebung ist fertig aufgesetzt und betriebsbereit. - Die Arbeiten der Testfälle sind noch offen (Anfangsstatus). - Die Gesamtarbeit zur zweiten Systemevaluation ist noch nicht abgeschlossen. - Gemäss unserem Terminplan sind wir mindestens um eine Woche in Verzug! Während der Besprechung sind Fragen (Unklarheiten) gestellt worden: − Testfall 3: Bei Oracle ist Funktion threadsafe eingestellt? -> ist zu überprüfen − Lizenz Oracle: -> Campus Lizenz FHNW steht zur Verfügung Im Weiteren wurde über beide Systeme (Oracle und Funambol) Pro und Contra respektive die Themen: Device Management, Branch-Office und Konfliktbehandlung diskutiert. 3. Weiteres Vorgehen Aus der zeitlichen und Problem-Erfahrung mit der zweiten Systemevaluation, die die Gruppe gemacht hat, wird entschieden, das dritte System auf die restliche Zeit (Abgabetermin) so weit wie möglich zu bearbeiten. Als drittes System wird Framework ADO.NET von Microsoft vorgesehen. Voran müssen aber einige Tests des Systems I nochmals nach den Erkenntnissen dieser Sitzung (threadsafe / manuelle Synchronisation) durchgeführt werden, bevor mit dem dritten System begonnen werden kann. 4. Varia Keine 5. Nächste Sitzung Die nächste Sitzung findet wie folgt statt: - Montag, 9. März 2009, 17.30 Uhr, FHNW Der Protokollführer: I. Lo Iudice ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 249 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ Beilage Geht an Teilnehmende/Entschuldigte 13.5.4 Protokoll Nr. 02 / 09 Sitzung Master Thesis Objekt Datenbanksynchronisation Datum/Zeit Montag, 9. März 2009, 17.30 Uhr Ort Fachhochschule Nordwestschweiz Brugg-Windisch Traktanden 1. 2. 3. 4. 5. Vorsitz I. Lo Iudice Protokoll I. Lo Iudice Anwesend A. Lo Iudice, IT-MAS Student I. Lo Iudice, IT-MAS Student B. Wyss, Dozent (Examinator) Protokoll 01 / 09 über Master Thesis vom 12. Januar 2009 Stand der Arbeit Weiteres Vorgehen Varia Nächste Sitzung Entschuldigt Verhandlungen und Beschlüsse Termine/Aufträge 1. Protokoll 01 / 09 über Master Thesis vom 12. Januar 2009 Das Protokoll wird in der vorliegenden Fassung genehmigt und verdankt. 2. Stand der Arbeit Bevor wir mit der Evaluation des dritten und letzten Systems „Microsoft Synchronization Services for ADO.NET“ beginnen konnten, mussten vorgängig folgende Arbeiten abgeschlossen werden: - System I: Testfälle mit der manuellen Synchronisation durchführen und dokumentieren - System II: Ebenfalls Testfälle durchführen und dokumentieren Der Arbeitsstand beim letzten System sieht folgendermassen aus: - Die Systemumgebung ist fertig aufgesetzt und betriebsbereit. - Die Testfälle sind durchgeführt und dokumentiert worden. - Gemäss unserem Terminplan sind wir wieder auf Kurs. Folgende Arbeiten sind offen: ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 250 Angelo Lo Iudice, Isidoro Lo Iudice Fachhochschule Nordwestschweiz Master Thesis (1007_MASIT) MAS-IT 2006 Datenbanksynchronisation ____________________________________________________________________________________________________________________________________________________________ - System III Beschrieb, Schlussdiskussion Diverse Kapitel (Vorwort, Zusammenfassung, Literatur, …) Anhänge Während der Besprechung sind Fragen (Unklarheiten) gestellt worden: - Aufbau und Layout des Berichts (Corporate Design); es steht eine Vorlage von der Schule als Hilfe zur Verfügung - Termine: Abgabe und Verteidigung (Präsentation) - Was und Wie wird abgegeben? 3. Weiteres Vorgehen Bis spätestens am 31. März 2009 soll die Arbeit an der FHNW abgegeben werden. Dem Examinator, Herr Wyss werden zwei Farbexemplare des Berichts auf Papier mit je einer DVD mit unseren Zusatzdokumenten und Programm-Code überreicht. Der CoExaminator, Herr Löwenthal erhält den Bericht in PDF-Form per E-Mail zugestellt. Für die Präsentation (Verteidigung) der Arbeit muss demnächst einen Termin im April festgelegt werden. Terminvorschlag an beiden Examinatoren via E-Mail verschicken. 4. Varia Keine 5. Nächste Sitzung Keine Der Protokollführer: I. Lo Iudice Beilage Geht an Teilnehmende/Entschuldigte ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 31. März 2009 Seite 251 Angelo Lo Iudice, Isidoro Lo Iudice