as a PDF

Transcription

as a PDF
Evaluierung des Leistungsvermögens von
Datenbanken im Umfeld mobiler Anwendungen
Studienarbeit
Universität Rostock
Institut für Informatik
vorgelegt von:
Andreas Franz
geboren am 14.03.1980 in Kyritz
[email protected]
Betreuer:
Prof. Dr. rer. nat. habil. Andreas Heuer, Universität Rostock
Dipl.-Inf. Sven Gabrecht, Fraunhofer IGD Rostock
Dipl.-Inf. Andre Zeitz, Universität Rostock
Datum:
30. August 2004
1
Zusammenfassung
Der wachsende mobile Datenzugriff und die Entwicklung immer leistungsfähiger mobiler Hardware erlauben die Nutzung von mobilen Datenbanksystemen auf Mobiltelefonen und Handhelds. Diese Arbeit untersucht die Anforderungen an mobile Datenbanken. Die aktuell verfügbare Hardware, die Einsatzbereiche und die Architekturkomponenten werden auch kurz betrachtet. Im Hauptteil dieses Textes werden die Fähigkeiten
existierender mobiler Datenbanksysteme wie z.B. die smartDB analysiert. Außerdem
soll die mobile Datenbank smartDB im Rahmen dieser Arbeit auf die Handyplattform
portiert werden.
Abstract
The increasing mobile data access and the development of more powerful mobile hardware allow the utilisation of mobile database systems on mobile phones and handhelds.
This work examines the requirements of mobile databases. The current available hardware, the field of application and the components of the architecture are also considered
shortly. In the main part of this text the capabilities of existing mobile database systems
like the smartDB are analysed. Furthermore the mobile database smartDB should be
ported to the cellular phone platform within this work.
ACM CR-Klassifikation:
• C.5.3 [Computer System Implementation]: Microcomputers – Portable Devices
(e.g., laptops, personal digital assistants)
• H.2.4 [Database Management]: Systems
Key Words:
• Mobile Databases, smartDB, Handy, Java 2 Micro Edition
Inhaltsverzeichnis
1 Einleitung
4
2 Mobile Datenbanken
2.1 Charakteristika von Datenbanken . . . . . . . .
2.2 Eigenschaften verteilter Datenbanken . . . . . .
2.3 Kriterien für mobile Datenbanken . . . . . . . .
2.4 Diskussion der Datenbankmerkmale . . . . . . .
2.5 Hardware für mobile Anwendungen . . . . . . .
2.6 Einsatzbereiche für mobile Datenbanken . . . .
2.7 Architektur mobiler Datenbanksysteme . . . . .
2.7.1 Replikation und Synchronisation . . . . .
2.7.2 Speichertechniken und Zugriffsstrukturen
2.7.3 Anfrageverarbeitung . . . . . . . . . . .
2.7.4 Transaktionsverarbeitung . . . . . . . .
2.7.5 Sicherheit . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
5
5
7
8
9
10
13
14
14
15
16
16
17
.
.
.
.
.
.
.
.
.
.
.
.
.
.
18
21
23
24
25
26
26
27
29
30
32
33
34
34
35
4 Implementierungsarbeiten
4.1 Java 2 Micro Edition . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1.1 Konfigurationen und Profile . . . . . . . . . . . . . . . . . . . .
4.1.2 Details zu CLDC und MIDP . . . . . . . . . . . . . . . . . . . .
38
39
40
40
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3 Existierende Datenbanksysteme
3.1 IBM DB2 Everyplace 8.1 . . . . . . . . . . . . . . . . . . . .
3.2 Oracle Database Lite 10g . . . . . . . . . . . . . . . . . . . .
3.3 Microsoft SQL Server 2000 Windows CE 2.0 . . . . . . . . .
3.4 Sybase SQL Anywhere Studio 9 . . . . . . . . . . . . . . . .
3.5 Tamino Mobile 4.0 . . . . . . . . . . . . . . . . . . . . . . .
3.6 Borland JDataStore 7 . . . . . . . . . . . . . . . . . . . . . .
3.7 Versant/Poet FastObjects j2 und e7 . . . . . . . . . . . . . .
3.8 DataMirror PointBase Micro und Embedded 5.0 . . . . . . .
3.9 Mimer SQL Engine, Mobile und Embedded 9.2 . . . . . . .
3.10 Birdstep RDM Embedded 7.1 und Mobile 3.0 . . . . . . . .
3.11 McObject eXtremeDB 2.3 . . . . . . . . . . . . . . . . . . .
3.12 smartDB – eine mobile Datenbank . . . . . . . . . . . . . .
3.12.1 Analyse der vorhandenen Fähigkeiten . . . . . . . . .
3.12.2 Verbesserungsmöglichkeiten für zukünftige Versionen
2
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
INHALTSVERZEICHNIS
3
4.1.3 Record Management System – eine einfache Datenbank . . . . .
4.1.4 MIDlets – die MIDP-Anwendungen . . . . . . . . . . . . . . . .
Anforderungen und Restriktionen bei der Programmierung der smartDB
mit J2ME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2.1 JOIN-Implementierung – ja oder nein? . . . . . . . . . . . . . .
4.2.2 Varianten von Sortierverfahren . . . . . . . . . . . . . . . . . . .
4.2.3 Probleme und Lösungen bei großen Datenmengen . . . . . . . .
Datentypen und Struktur des Dateiformats . . . . . . . . . . . . . . . .
Definition und Ausführung von Anfragen . . . . . . . . . . . . . . . . .
Tabellendaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Anfrageergebnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Entwicklungsumgebung . . . . . . . . . . . . . . . . . . . . . . . . . . .
42
43
5 Performance und Kompatibilität
5.1 Testumgebung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2 Tests auf Anfragezeiten und Speicherverbrauch . . . . . . . . . . . . . .
5.3 Getestete mobile Geräte . . . . . . . . . . . . . . . . . . . . . . . . . .
53
53
54
57
6 Zusammenfassung und Ausblick
62
4.2
4.3
4.4
4.5
4.6
4.7
43
44
45
46
47
48
50
51
51
Kapitel 1
Einleitung
Viele Informationen sind weltweit für den elektronischen Zugriff verfügbar. Die Nutzer greifen auf diese Daten jedoch nicht nur über stationäre Computer zu, sondern
zunehmend über mobile Geräte wie z.B. Notebooks, intelligente Mobiltelefone (Smartphones) und Personal Digital Assistants (PDAs). Durch das Mobile Computing steigen
die Anforderungen an die lokale Datenhaltung und führen zur Entwicklung immer leistungsfähiger mobiler Endgeräte, die eine akzeptable Performance bei der Verwendung
von Datenbanksystemen bieten.
Diese Studienarbeit konzentriert sich auf die Evaluierung des Leistungsvermögens existierender Datenbanksysteme für Smartphones und PDAs, da diese mobilen Geräte noch
stark limitierte Ressourcen (z.B. Bildschirm-, Speichergröße und Akkukapazität) haben und somit besondere Anforderungen an die Software stellen. Im Gegensatz dazu
sind Notebooks teilweise fast genauso leistungsfähig wie Workstations, jedoch ist ihre
Betriebsdauer stets von der Batterielaufzeit abhängig. Viele der in den nachfolgenden
Abschnitten vorgestellten Anforderungen und Konzepte für mobile Datenbanken gelten
aber genauso für Notebooks, da in beiden Fällen ein verteiltes Datenbanksystem mit
mobilen Clients zu entwickeln ist.
Des Weiteren werden verschiedene mobile Datenbanken und ihre Funktionalitäten vorgestellt. Eines dieser Systeme ist die smartDB, die vom Fraunhofer Institut für Graphische Datenverarbeitung in Rostock entwickelt wurde. Die smartDB ist ein rudimentäres, relationales Datenbanksystem für PDAs und Smartphones. Es wird z.B. für mobile Messeinformationssysteme eingesetzt und wird im Rahmen dieser Studienarbeit
genauer betrachtet. Außerdem soll die smartDB auf die Handyplattform übertragen
werden und um weitere Funktionen ergänzt werden.
4
Kapitel 2
Mobile Datenbanken
Vor der Betrachtung der Anforderungen an mobile Datenbanksysteme sollen noch einmal kurz die Charakteristika für relationale Datenbanken und die Eigenschaften verteilter Datenbanken wiederholt werden. Darauf aufbauend erfolgt die Definition von
Kriterien für mobile Datenbanksysteme und die Diskussion von Gemeinsamkeiten und
Unterschieden mit relationalen und verteilten Datenbanken. Danach werden die Einsatzbereiche, die aktuell verfügbare Hardware und die Architekturkomponenten einer
mobilen Datenbank detaillierter dargestellt.
2.1
Charakteristika von Datenbanken
Das Ziel der Entwicklung von Datenbanksystemen (DBS) ist die Beseitigung der Datenredundanz, die durch die mehrfache Speicherung von Daten in verschiedenen Anwendungsprogrammen auftritt, und die effiziente Verwaltung großer Datenmengen. Die
Aufgaben von Datenbank-Managementsystemen (DBMS) werden durch die neun Kriterien von Codd beschrieben:
• Integration – einheitliche Verwaltung aller von Anwendungen benötigten Daten.
• Operationen – zum Speichern, Suchen und Ändern des Datenbestands.
• Katalog – zum Zugriff auf die Datenbeschreibungen.
• Benutzersichten – zur Auswahl relevanter Daten und Strukturierung des Datenbestands.
• Konsistenzüberwachung – zur Gewährleistung korrekter Datenbankinhalte
und korrekter Änderungsoperationen.
• Zugriffskontrolle – um unautorisierte Datenzugriffe auszuschließen.
• Transaktionen – zur Zusammenfassung von Datenbankänderungen zu unteilbaren Funktionseinheiten.
• Synchronisation – von konkurrierenden Transaktionen zur Vermeidung von
Konflikten.
5
KAPITEL 2. MOBILE DATENBANKEN
6
• Datensicherung – um Datenwiederherstellung bei Systemfehlern zu ermöglichen.
Bei der Architektur von Datenbanksystemen unterscheidet man drei Ebenen. Die externe Ebene beschreibt die Sicht einer konkreten Anwendung auf die gespeicherten Daten,
die konzeptuelle Ebene gibt eine logische und einheitliche Gesamtsicht auf den Datenbestand und die interne Ebene veranschaulicht die tatsächliche, interne Realisierung
der Datenspeicherung. Die Abbildung 2.1 aus [HS00] zeigt die einzelnen Komponenten
eines Datenbank-Managementsystems. Weitere Details dazu und zum Relationenmodell sowie der Datenbanksprache SQL kann man z.B. [HS00, HS99] entnehmen.
Abbildung 2.1: Architektur eines Datenbanksystems
Klassischerweise werden Datenbanken im kommerziellen Bereich bei Buchhaltungssystemen, Auftragserfassungssystemen, Bibliothekskatalogen und Personendatenbanken eingesetzt. Man erkennt an diesen Beispielen, dass es sich dabei um stationäre
Datenbanken handelt, die durch folgende Eigenschaften gekennzeichnet sind:
• zentrale Verwaltung aller Daten in einem Datenbankserver auf den viele Nutzer
zugreifen können und somit viele I/O-Operationen verursachen.
• auf Grund der vorhergehenden Aussage ist eine ständige Netzwerkverbindung
unerlässlich.
• die Hardware stationärer Datenbanken stellt große Speichermengen und leistungsstarke Prozessoren zur Verfügung, um eine akzeptable Performance zu bieten.
• es gibt keine Mobilität von Nutzern, Computern und Informationen, da sich der
Nutzer stets an einen Rechner setzen muss, um eine Verbindung zur Datenbank
herzustellen und seine Anfragen zu formulieren.
KAPITEL 2. MOBILE DATENBANKEN
2.2
7
Eigenschaften verteilter Datenbanken
Bei einem verteilten Datenbanksystem (VDBS) werden die Datenbankdaten auf verschiedene Rechner verteilt. Man unterscheidet dabei die Replikation der selben Daten auf mehreren Servern aus Gründen der Effizienz oder der Ausfallsicherheit und
die Partitionierung bestimmter Teildaten auf verschiedenen Rechnern. Analog zu den
neun Kriterien von Codd kann man als Anforderungen für ein verteiltes DatenbankManagementsystem (VDBMS) die 12 Regeln von Date formulieren. Genau genommen
sind es 13 Regeln, da die Verteilungstransparenz implizit vorausgesetzt wird.
• Verteilungstransparenz – die Verteilung vor dem Benutzer geheim halten.
• Lokale Autonomie – Zugriff auf die bei einem Knotenrechner gespeicherten
Daten unabhängig von anderen Rechnern.
• Unabhängigkeit von zentralen Systemfunktionen – da sie der Flaschenhals
verteilter Systeme sind (Leistungsengpass).
• Hohe Verfügbarkeit – ununterbrochenen Datenbankbetrieb auch bei Rechnerausfällen und Netzrekonfigurationen gewährleisten.
• Ortstransparenz – Speicherort bestimmter Daten vor dem Nutzer verbergen.
• Fragmentierungstransparenz – interne Aufteilung von Datenbankobjekten
(Partitionierung) vor dem Benutzer verstecken.
• Replikationstransparenz – Datenreplikation zur Leistungssteigerung und Erhöhung der Ausfallsicherheit sollte auch unsichtbar bleiben.
• Verteilte Anfragebearbeitung – durch den Optimierer und nicht dem Benutzer realisieren.
• Verteilte Transaktionsverwaltung – korrekte Transaktionen garantieren.
• Hardware-Unabhängigkeit – Datenbankverarbeitung auf unterschiedlicher
Hardware ermöglichen.
• Betriebssystem-Unabhängigkeit – Datenbankverarbeitung auf verschiedenen
Betriebssystemen unterstützen.
• Netzwerk-Unabhängigkeit – Datenbankverarbeitung bei heterogenen Netztechnologien erlauben.
• Datenbanksystem-Unabhängigkeit – Datenbankverarbeitung unter Nutzung
verschiedener Knoten-DBMS gestatten.
Diese Regeln sind nur in gewissen Sinne erreichbar bzw. die Unabhängigkeit vom Datenbanksystem in vielen Fällen gar nicht. Bei der Architektur von verteilten Datenbanken wird die klassische Drei-Ebenen-Architektur erweitert. Die globalen externen
Schemata beschreiben die anwendungsspezifische Darstellung auf der externen Ebene.
KAPITEL 2. MOBILE DATENBANKEN
8
Sie werden ausschließlich auf dem globalen konzeptuellen Schema definiert, das den integrierten, globalen Datenbestand ohne Hinweise auf die Verteilung der Daten abbildet.
Das Fragmentierungsschema definiert die Aufteilung der Datenbankobjekte auf Teilobjekte. Das Allokationsschema stellt die Zuordnung von Fragmenten zu Knoten dar. Eine
mehrfache Zuteilung realisiert eine Replikation von Daten auf mehreren Rechnern. Die
letzten drei Schemaebenen werden zum globalen Schema zusammengefasst, das auf die
Komponenten-DBMS der Knoten zugreift. Auf den Knoten-DBMS übernehmen die lokalen Transformationsschemata die Vereinheitlichung heterogener Datendarstellungen
und es existieren lokale konzeptuelle sowie interne Schemata. Daran erkennt man, dass
die Autonomie der Teilsysteme stark eingeschränkt ist. Demzufolge ist ein Zugriff über
lokale externe Schemata nicht möglich. Das geht jedoch mit föderierten Datenbanken.
Detaillierte Informationen zu verteilten Datenbanken findet man z.B. in [HS99].
2.3
Kriterien für mobile Datenbanken
Im Gegensatz zu den in den vorhergehenden Abschnitten beschriebenen Merkmalen
von Datenbanken hat man im Umfeld mobiler Anwendungen andere bzw. zusätzliche
Anforderungen an ein Datenbanksystem. Das sind folgende Anforderungen:
• Location Based Services (LBS) – die zentrale Aufgabe mobiler Datenbanken
besteht darin, dem Nutzer Zugang zu den von ihm gewünschten Informationen
an jedem Ort weltweit und zu jeder Zeit zu ermöglichen. Die Sicherheit sensitiver
Nutzerdaten ist dabei zu gewährleisten.
• Mobilität und Situation Awareness – es gibt eine ausgeprägte Mobilität der
Nutzer, Computer und Informationen. Daher müssen die Daten dynamisch in
Abhängigkeit vom aktuellen Kontext geliefert werden.
• Synchronisation und Replikation – die Daten werden auf mehrere Server und
mobile Clients verteilt. Folglich sind intelligente Synchronisations- und Replikationsmechanismen inklusive Datenkompression zwischen den beteiligten Computern notwendig, um einen konsistenten Datenbankzustand zu erhalten.
• Begrenzte Hardwareressourcen – die Hardware mobiler Geräte ist in ihrer
Leistungsfähigkeit noch sehr limitiert. Deshalb sind ressourcenschonende, mobile
Datenbanksysteme für eine akzeptable Performance notwendig.
• Unterbrochene Kommunikationsverbindungen und Caching – auf Grund
limitierter Ressourcen besteht keine ständige Verbindung zwischen dem Datenbankserver und dem mobilen Client. Deshalb greifen gegenüber klassischen Datenbanken weniger Nutzer gleichzeitig auf die Daten zu. Sie verursachen weniger
I/O-Operationen, jedoch führt das zu höheren Kosten beim Verbindungsaufbau
und -abbau. Das Datenbanksystem sollte häufige Datenzugriffe mit intelligenten
Caching-Strategien verhindern, um die Verbindungskosten zu minimieren. Beispielsweise kann man bei ähnlichen oder genauer spezifizierten Anfragen schon
vorhandene Anfrageergebnisse wieder verwenden.
KAPITEL 2. MOBILE DATENBANKEN
2.4
9
Diskussion der Datenbankmerkmale
Die aufgezählten Aspekte im Abschnitt Charakteristika von Datenbanken zeigen, dass
viele dieser Anforderungen auch im mobilen Bereich zutreffen, wenn auch in modifizierter Form. Die Hauptziele bei der Entwicklung eines Datenbanksystems – Redundanzbeseitigung und effiziente Datenverwaltung – gelten nach wie vor. Demgegenüber ist
bei der Replikation aber Redundanz in gewissem Maße erwünscht. Die Integration der
Daten, die Operationen auf den Daten, die Integritätssicherung und die Datensicherheit sind ebenfalls wichtig. Man muss bei den Datenbankoperationen beachten, dass
unter Umständen nur lesende Methoden auf dem mobilen Gerät wegen beschränkter
Hardwarefähigkeiten zugelassen sind.
In Fragen der Datensicherheit sind bei mobilen Endgeräten nur wenige Möglichkeiten,
wie z.B. die Sicherung einer Kopie auf dem PC, vorhanden. In bestimmten Anwendungsfällen ist das aber nicht weiter relevant, falls man immer ganz aktuelle Daten
(z.B. Wetter- und Verkehrsinformationen) benötigt. In Anbetracht des geringen Speicherplatzes werden Sichten in der Regel gar nicht oder nur selten gebraucht. Eine
Nutzerautorisierung ist beim Datenzugriff gelegentlich notwendig oder wird bei der
Registrierung des Geräts an der Basisstation automatisch vorgenommen (z.B. über die
SIM-Card im Handy), da in der Regel nur ein Anwender das mobile Gerät verwendet.
Ein wichtiger Gesichtspunkt bei mobilen Geräten ist die Synchronisation, insbesondere
der Daten und weniger der Transaktionen, weil eine komplexe Transaktionsverarbeitung auf der mobilen Einheit aufwändig ist und eine Realisierung von der bereitgestellten Hardware abhängt. Dagegen sollte natürlich bei der Datenaktualisierung vom
mobilen Client zum Server mit Transaktionsverfahren gearbeitet werden. Die Datensynchronisation führt zugleich zur Datenreplikation, die von verteilten Datenbanksystemen
bekannt ist.
Im Bereich mobiler Systeme sind einige der Eigenschaften verteilter Datenbanken problematisch, vornehmlich wegen limitierter Hardwareressourcen und der Heterogenität
der verfügbaren Geräte. Oft sind Zugriffe auf die Basisstation oder Lokalisierungsmechanismen erforderlich, um situationsabhängige Daten zu erhalten, da die Speicherkapazitäten mobiler Geräte begrenzt sind. Deswegen kann die lokale Autonomie nicht
vollständig gewährleistet werden. Die Unabhängigkeit von zentralen Systemfunktionen
kann nicht sichergestellt werden, weil sich der Nutzer mit seinem Handy an einer zentralen Basisstation anmeldet, die dann seine Anrufe weitervermittelt. Falls sich der
Anwender aus ihrem Empfangs- bzw. Sendebereich entfernt, muss er sich wieder bei
einer anderen Basisstation registrieren. Nachdem eine Verbindung hergestellt wurde,
können die Daten heruntergeladen und lokal gespeichert werden. Die lokale Informationsspeicherung widerspricht der Ortstransparenz. Eine hohe Verfügbarkeit kann nicht
immer garantiert werden, wenn die mobile Einheit beispielsweise in bergigen Regionen
keine Verbindung zur Basisstation errichten kann.
Die verteilte Anfrage- und Transaktionsverarbeitung muss die noch vorhandene Akkulaufzeit berücksichtigen. Die optimale Anfrage bringt dem Benutzer nichts ein, wenn
dafür die letzten Ressourcen der Batterie verbraucht werden und die Ergebnisse nicht
mehr angezeigt werden können. Ebenso sind die Unabhängigkeitsforderungen von Hardware, Betriebssystem, Netzwerk und Datenbanksystem nicht immer erfüllbar, weil das
KAPITEL 2. MOBILE DATENBANKEN
10
von den Geräten abhängig ist. Es besteht die Möglichkeit mit Java plattformunabhängige Programme zu schreiben, dennoch gibt es nicht für alle Betriebssysteme lizenzfreie
Java Virtual Machines (JVM) zur Ausführung der Programme. Außerdem ist es manchmal aus Performancegründen sinnvoller eine systemnahe Implementierung mit C/C++
vorzunehmen.
Bei den mobilen Datenbanksystemen existieren unterschiedliche Ansätze zur Datenspeicherung von der Erweiterung und Persistentmachung des Programmcodes bis hin
zur Verwendung von DBMS. Diese Diskussion macht deutlich, dass selbst ein verteiltes
Datenbanksystem die Anforderungen im mobilen Bereich nicht erfüllt und entsprechende Modifikationen verlangt. In den nachfolgenden Abschnitten werden wichtige
Aspekte mobiler Datenbanken detaillierter beschrieben.
2.5
Hardware für mobile Anwendungen
Bei der Betrachtung mobiler Hardware kann man die Geräte in drei Klassen einteilen:
• Personal Digital Assistants (PDAs) – sind mobile Kleincomputer im Notizbuchformat für das Personal Information Management (PIM). Sie werden als
elektronischer Terminkalender, Adressbuch, Notizblock, Aufgabenplaner sowie
für E-Mail, Projektmanagement und die Erfassung kleiner Datenmengen verwendet. Fast immer sind noch weitere Anwendungen wie z.B. Textverarbeitung,
Tabellenkalkulation, Taschenrechner und Spiele integriert. PDAs besitzen für die
Eingabe meistens einen Touchscreen anstatt einer Tastatur.
• Smartphones – sind mobile Geräte, die den Leistungsumfang von Mobiltelefonen und PDAs miteinander verbinden (je nach Hersteller mehr PDA oder mehr
Handy). Sie unterstützen Telefon-, SMS-, PIM- sowie Internet-Funktionen (Webbrowser, E-Mail) und können mit Zusatzsoftware versehen werden. Smartphones
erfordern ein großes Display zur Darstellung der Informationen.
• Handys – sind kleine, tragbare Funktelefone, mit denen man schnurlos und ortsungebunden telefonieren kann. Sie können gleichzeitig Nachrichten bzw. Sprache
senden und empfangen. Ferner unterstützen moderne Handys Multimediafunktionen und einfache Anwendungen beispielsweise Spiele.
Darüber hinaus können die mobilen Einheiten noch mit integrierten Digitalkameras
oder MP3-Playern ausgestattet sein. Gemäß der Klassifizierung gibt die Tabelle 2.1
einen Überblick über die technischen Daten der drei Geräteklassen. Es handelt sich
dabei um Durchschnittswerte, die von Gerät zu Gerät noch stark differieren können. In
dieser Tabelle sind die drei wichtigsten Betriebssysteme für mobile Geräte aufgeführt.
• Das Betriebssystem Palm OS wurde speziell für PDAs, mit dem Ziel einer einfachen und intuitiven Bedienung, entwickelt. Palm OS Cobalt (Palm OS 6) ist
eine Neuprogrammierung des bisherigen Palm OS Betriebssystems, um den Anforderungen an zukünftige mobile Endgeräte gerecht zu werden. Außerdem wurde
ein erweitertes API für neue Features und eine bessere Anwendungsperformance eingeführt (z.B. Multitasking, native Unterstützung für ARM-Prozessoren,
KAPITEL 2. MOBILE DATENBANKEN
11
Speicher-/Prozessschutz sowie verbesserte Multimedia-/Sicherheitsfunktionen).
Des Weiteren existiert noch Palm OS Garnet, das eine optimierte Version der
vorhergehenden Palm OS 5.x Versionen ist und einen geringeren Ressourcenbedarf hat. Für Details sei auf die Datenblätter [Pala, Palb] sowie die Beschreibung
zu den Palm OS Releases [Palc] verwiesen.
• Das Betriebssystem Symbian OS wurde basierend auf der 32-Bit-EPOC-Plattform
von Psion speziell für die Anforderungen von Smartphones entwickelt. Weitere
Informationen sind in der Dokumentation zu Symbian OS 7 (z.B. die Funktionsbeschreibung [Dix03]) nachzulesen, da an dieser Stelle nicht die verschiedenen
Betriebssysteme ausführlich diskutiert werden sollen.
• Ein anderes wichtiges Betriebssystem für mobile Geräte ist Microsoft Windows
Mobile 2003 (auch als Pocket PC 2003 oder Windows CE .NET 4.2 bekannt), das eine Windows-typische Oberfläche und Bedienung hat. Infolgedessen
ist eine gute Kompatibilität zu anderen Microsoft-Anwendungen gegeben.
• In den meisten einfachen Handys werden als Betriebssysteme aber noch Eigenentwicklungen der Hersteller eingesetzt. Daneben sind noch einige andere Betriebssysteme (z.B. Linux) für mobile Anwendungen erhältlich. In Embedded Systems
werden auch Echtzeitbetriebssysteme wie das UNIX-ähnliche QNX Neutrino oder
Wind River VxWorks implementiert.
Basierend auf den drei Geräteklassen und den heterogenen Betriebssystemen wurde
von den Herstellern eine Vielzahl verschiedener mobiler Geräte entwickelt. Die Tabelle
2.2 stellt die technischen Daten einer kleinen Auswahl aktueller PDAs, Smartphones
und Handys bereit. Auf weitere Ausstattungsmerkmale wie Multimedia- und Kommunikationsfähigkeiten wurde der Übersichtlichkeit halber verzichtet. Diese Parameter
sind in der Dokumentation der Hersteller nachzulesen.
Diese kleine Übersicht veranschaulicht die eingeschränkten Hardwaremöglichkeiten. Bei
älteren Geräten stehen noch weniger Ressourcen zur Verfügung. Beim RAM bilden die
128 MB noch eine Ausnahme und man muss von der vorhandenen Speicherkapazität
noch den Bedarf des Betriebssystems, der Ausstattungskomponenten (z.B. Bluetooth,
Wireless LAN, integrierte Digitalkamera, MP3-Player) und der installierten Software
abrechnen. Zudem kann man nicht bei allen Geräten Erweiterungskarten (z.B. SecureDigital Card, MultiMedia Card, CompactFlash Card, Memory Stick und Micro Drive)
nutzen. Logischerweise ist ein geringer Speicherplatzbedarf von 256 kB oder weniger
für ein mobiles Datenbanksystem entscheidend. Für die Ausführung von Programmen
auf den mobilen Endgeräten ist besonders der Heapspeicher wichtig, dessen Größe zwischen 128 kB und 2 MB variiert.
Ebenso ist die Leistungsfähigkeit der Prozessoren beschränkt, da sie mit einem niedrigem Stromverbrauch zu einer langen Batterielaufzeit beitragen sollen und die ganzen
Multimedia- und Kommunikationstechnologien steuern sollen. Bei PDAs und Smartphones werden heutzutage 32-Bit-RISC-Prozessoren mit ARM-Befehlssatz eingebaut,
so dass durch Pipelining die Performance gesteigert werden kann. Die durchschnittliche Stand-by-Zeit der mobilen Geräte ist von der Nutzungsintensität sowie der Kapazität der Batterie abhängig und liegt zwischen wenigen Tagen und zwei Wochen. Die
KAPITEL 2. MOBILE DATENBANKEN
Parameter
RAM
Heapgröße
Prozessor
Display
PDA
8 - 128 MB
keine Angabe
200 - 400 MHz
300x300 Pixel TFT
mit 64k Farben
Touchscreen/Stift
Smartphone
4 - 16 MB
bis zu 2 MB
100 - 150 MHz
200x200 Pixel TFT mit
64k Farben
EingabemögTouchscreen/Stift,
lichkeiten
Nummerntasten
Kommunika- USB, seriell, GPS, USB, GPS, GSM, GPRS,
tionsschnittWLAN, Bluetooth, HSCSD, EDGE, UMTS,
stellen
Infrarot
Bluetooth, Infrarot
BetriebsPalm OS, Linux, Palm OS, Symbian OS
system
MS Pocket PC
Programmier- C/C++, J2ME,
C/C++, J2ME, .NET,
sprachen
.NET
Personal Java
12
Handy
0,5 - 2 MB
weniger als 0,5 MB
weniger als 75 MHz
100x100 Pixel LCD
mit 4096 Farben
Nummerntasten
USB, GSM, GPRS,
EDGE, Bluetooth,
HSCSD, Infrarot
Herstellerspezifisch
J2ME
Tabelle 2.1: Technische Daten der drei Hardwareklassen
Gerät
Palm Zire
RAM
2 MB
Palm Tungsten
T3
Sony
Clié
PEG-TJ37
HP
iPAQ
H1940
HP
iPAQ
H5550
Sony Ericsson
P900
Siemens SX1
64 MB
Nokia 6600
6 MB
32 MB
64 MB
128 MB
16 MB
8 MB
Sony Ericsson 2 MB
T630
Siemens MC60 2 MB
Nokia 3200
1 MB
Motorola V180
1,8 MB
Prozessor
Motorola Dragonball 16 MHz
Intel XScale 400
MHz
Motorola
i.MXL
200 MHz
Samsung 266 MHz
Display
160x160 LCD,
16 Graustufen
320x480 TFT,
64k Farben
320x320 TFT,
64k Farben
240x320 TFT,
64k Farben
Intel XScale 400 240x320 TFT,
MHz
64k Farben
ARM9 156 MHz
208x320 TFT,
64k Farben
Texas Instruments 176x220 TFT,
OMAP 133 MHz
64k Farben
ARM9 104 MHz
176x208 TFT,
64k Farben
keine Angabe
128x160 TFT,
64k Farben
keine Angabe
101x80 LCD,
4096 Farben
keine Angabe
128x128 LCD,
4096 Farben
keine Angabe
128x128 LCD,
4096 Farben
Betriebssystem
Palm OS 4.1
Palm OS 5.2
Palm OS 5.2
MS Pocket PC
2003
MS Pocket PC
2003
Symbian OS 7.0
Symbian OS 6.1
Symbian OS 7.0
Herstellerspezifisch
Herstellerspezifisch
Symbian OS –
Series 40
Herstellerspezifisch
Tabelle 2.2: Technische Daten einiger aktueller PDAs, Smartphones und Handys
KAPITEL 2. MOBILE DATENBANKEN
13
größten Energieverbraucher sind der Prozessor, das Display und die Kommunikationsverbindungen. Daher sind bei mobilen Datenbanken effiziente Anfrage- und Transaktionstechniken anzuwenden, um die Verbindungskosten zu reduzieren. Die Eingaben auf
dem Display erfolgen mittels Touchscreen und Stift oder über eine Nummerntastatur.
2.6
Einsatzbereiche für mobile Datenbanken
Nachdem in den vorhergehenden Abschnitten die Anforderungen und die Hardware
mobiler Datenbanken detailliert diskutiert wurden, betrachtet dieser Abschnitt die
Einsatzbereiche mobiler Systeme. Die mobilen Datenbanken sollen den Nutzer im alltäglichen Leben an jedem Ort weltweit und zu jeder Zeit bei der Informationsrecherche
unterstützen. Dadurch ergeben sich vielfältige Einsatzmöglichkeiten:
• Eine klassische Anwendung mobiler Datenbanken ist die Verwendung in Informationssystemen. Dadurch kann der Nutzer z.B. auf Messen, Ausstellungen, Reisen
oder in Museen interaktiv Informationen über seinen aktuellen Standort, Veranstaltungen oder die Exponate abrufen.
• Der zuvor genannte Aspekt führt zugleich zum Anwendungsszenario der Navigation. Die Navigation mit Hilfe des mobilen Gerätes könnte man beispielsweise
mit der Routenplanung im Auto koppeln und so durch aktuelle Informationen
den Verkehrsfluss steuern, um Staus zu vermeiden.
• Weitere Einsatzgebiete sind das persönliche Aufgabenmanagement oder die Verwendung mobiler Geräte als Terminkalender und Adressbuch.
• Außerdem ist eine elektronische Unterstützung bei der Informationssuche in Bibliotheken und Archiven möglich.
• Ein weiterer interessanter Einsatzbereich ist die Verwendung von Handhelds in
der Medizin. Der Arzt könnte sich bei Notfällen auf dem Weg zur Unfallstelle
schnell über die Patientendaten informieren und mögliche Probleme schon frühzeitig erkennen.
• Neben den Consumer-Anwendungen kann man mobile Datenbanken auch in der
Industrie einsetzen, wie z.B. bei der Inventarisierung oder Lagerverwaltung. Durch
die elektronische Datenerfassung wird die manuelle Eintragung der Informationen überflüssig und man spart Kosten durch die Datenübermittlung vom mobilen
Client zum Server.
• Genauso können Außendienstmitarbeiter von Unternehmen über Smartphones
auf aktuelle Daten zugreifen oder fehlende Daten erfassen, so dass ein besserer
Kundenservice möglich ist.
• Ein anderer Anwendungsbereich mobiler Systeme ist die militärische Nutzung
zur Erfassung und Übermittlung von Aufklärungsinformationen.
Ferner hätte jeder Nutzer seinen persönlichen, drahtlosen Internetzugang bei sich und
wäre von herkömmlichen Netzwerkanschlüssen unabhängig.
KAPITEL 2. MOBILE DATENBANKEN
2.7
14
Architektur mobiler Datenbanksysteme
Bei der Entwicklung von mobilen Datenbanksystemen werden zwei grundlegende Ansätze für die Anwendungsarchitektur unterschieden:
• Erweiterung eines Client-/Serversystems um eine Middleware – Diese Drei-TierArchitektur besteht aus den mobilen Datenbanken als Clients, einem Replikations/Synchronisationsserver als Middleware und dem Datenbankserver als Backend.
Das Datenbank-Managementsystem der mobilen Datenbank ist von der Anwendung getrennt und greift über Schnittstellen auf die Daten zu.
• Integration der Datenbankfunktionalität in die Anwendung – Es wird eine in ihrer
Funktionalität applikationsoptimierte Datenbank erzeugt. Dazu werden nur die
benötigten Komponenten (z.B. Tabellen und Indizes) der Datenbank und die
Datenbankzugriffslogik direkt in die Anwendung kompiliert. Folglich wird die
Unabhängigkeit von Datenbanksystem und Anwendung aufgegeben.
2.7.1
Replikation und Synchronisation
Bei einem mobilen Gerät unterscheidet man zwei verschiedene Zustände:
• Connected Mode – In diesem Zustand befindet sich die mobile Einheit nur
zeitweise. Es existiert eine Netzwerkverbindung zum Middleware-Server, um nach
längeren Offline-Phasen die aktuellen Daten zu replizieren/synchronisieren.
• Disconnected Mode – Das ist der normale Betriebszustand, bei dem keine
Verbindung zum Replikations-/Synchronisationsserver besteht. Demzufolge ist
nur ein Zugriff auf die lokalen und gegebenenfalls schon veralteten Daten möglich.
Die Replikation bezeichnet die redundante Datenspeicherung an mehreren Orten. Bei
mobilen Einheiten werden Kopien von Datenelementen (sogenannte Replikate) des Servers auf die mobilen Clients übertragen, um Anfragen im Disconnected Mode zu erlauben. Dadurch können gegenüber einer permanenten Verbindung die Kommunikationskosten reduziert, hohe Serverlasten vermieden und die Verfügbarkeit der Daten
erhöht werden. Die Synchronisation hat die Aufgabe einen konsistenten Zustand aller
Replikate und der Serverdaten sicherzustellen. Der Synchronisationsprozess setzt sich
aus zwei Phasen zusammen: der Reintegration zur Übertragung der auf dem mobilen
Gerät geänderten Daten auf den Server und der Rückübertragung zur Übermittlung der
Änderungen an den Serverdaten auf den mobilen Client. Die Verteilung der Daten kann
über ein Publish & Subscribe Modell erfolgen. Man definiert dazu auf dem Server abonnierbare Ausschnitte aus dem Datenbestand (sogenannte Publikationen, z.B.
mehrere Tabellen). Die mobilen Clients abonnieren dann die Publikationen für die sie
sich interessieren (sogenannte Subskriptionen) und erhalten immer die aktualisierten
Daten. Daneben gibt es noch die klassischen Client-/Serveranfragen und den unaufgeforderten Informationsversand vom Server an die Clients mittels Broadcast. Gemäß
[Kön03] existieren verschiedene Replikationsverfahren:
KAPITEL 2. MOBILE DATENBANKEN
15
• Snapshot-Replication – Es wird eine Kopie der gesamten Publikation zu einem bestimmten Zeitpunkt gemacht und komplett übermittelt. Es sind keine
inkrementellen Änderungen möglich.
• Transaction-Replication - Am Anfang wird ein Schnappschuss der gesamten
Publikation erstellt. Danach werden die Transaktionen aufgezeichnet und auf dem
Client bzw. Server nachvollzogen.
• Merge-Replication – Sie ermöglicht ein eigenständiges Arbeiten mit der Teilreplikation in Offline-Phasen, da die Änderungen an den Daten auf dem Client
mitprotokolliert werden. Beim Synchronisieren mit dem Server werden die Änderungen übernommen. Die dabei auftretenden Konflikte sind zu beheben.
Weitere Replikationsverfahren für mobile Datenbanken wie Data Patches, Two-TierReplication und Multiversion Reconciliation werden in [Höp01] ausführlich vorgestellt.
2.7.2
Speichertechniken und Zugriffsstrukturen
Die Daten und Indizes müssen die vorhandenen Speicherkapazitäten optimal nutzen
und einen effizienten Zugriff erlauben, da auf mobilen Geräten der verfügbare Speicherplatz limitiert ist. Dafür können Kompressionsverfahren auf Grund der eingeschränkten
Prozessorleistung nur begrenzt genutzt werden. Deshalb sind leistungsfähige Speichermodelle zu verwenden, wie sie z.B. in [BBPV01] beschrieben werden:
• Flat Storage – Die sequenzielle Speicherung der Tupel hat den Vorteil der Lokalität des Zugriffs. Jedoch ist der Platzbedarf wegen Duplikaten bei den Attributwerten hoch. Außerdem ist das sequenzielle Durchsuchen ineffizient und nur
durch zusätzliche Indexstrukturen verbesserbar.
• Domain Storage – Bei diesem Modell enthalten die Tupel anstatt Attributwerten Zeiger auf die jeweiligen Werte. Demzufolge wird jeder Attributwert nur
einmal gespeichert. Diese Vorgehensweise hat Vorteile, wenn die Werte mehr Speicher als die Zeiger benötigen oder viele Duplikate aufweisen.
• Ring Storage – Das Verfahren arbeitet mit einem Zeiger von den Attributwerten auf das erste Tupel, das diesen Wert enthält, welches dann auf das nächste
Tupel mit diesem Wert verweist, usw. Das letzte Tupel zeigt wieder auf den Attributwert. Dadurch ist kein zusätzlicher Index erforderlich. Allerdings ist die
Bestimmung eines Attributwertes aufwändiger. Im Schnitt ist ein halber Ringdurchlauf notwendig.
Falls leistungsstarke mobile Geräte mit ausreichendem Speicher zur Verfügung stehen,
kann man eventuell für kleine Datenmengen auch klassische Zugriffsstrukturen wie
die B-Bäume nutzen. Im Gebiet mobiler Anwendungen gibt es aber auch bewegliche
Objekte mit dynamischen Attributen wie Zeit. Dafür definiert man räumliche Indexstrukturen (z.B. R-Bäume), bei denen die Zeit als zusätzliche Dimension im Raum
hinzugefügt wurde.
KAPITEL 2. MOBILE DATENBANKEN
2.7.3
16
Anfrageverarbeitung
Bei der herkömmlichen Anfrageverarbeitung müssen oft Zwischenergebnisse gespeichert werden. Das ist bei mobilen Geräten problematisch, da nur wenig Speicherplatz
verfügbar ist, Schreiboperationen oft sehr lange dauern und die Implementierung komplexer Algorithmen die Größe des Datenbanksystems erhöht, so dass z.B. auf Handys
schnell die Speicherkapazität überschritten wird. In [BBPV01] wird eine Möglichkeit
dargestellt, die auf die Materialisierung von Zwischenergebnissen verzichtet. Zu diesem
Zweck muss der Anfrageoptimierer einen Zugriffsplan auswählen, der einen Operatorbaum in Form eines Extreme-Right-Deep-Trees darstellt. Alle Operatoren werden
dabei in einer Pipeline abgearbeitet und die Zwischenspeicherung vermieden. Es müssen nur die Basisrelationen im Speicher liegen. Eine Adaptation für Mobiltelefone oder
PDAs sollte möglich sein, da das beschriebene Verfahren für Smartcards implementiert
wurde, die noch strengere Ressourcenanforderungen als Handys haben. Eine weiteres Mittel zum Sparen von Speicherplatz ist die Speicherung nur absolut notwendiger
Anfrageergebnisse und die Durchführung einer Reduktion auf wirklich relevante Daten. Dazu kann man Metainformationen aus dem mobilen Kontext miteinbeziehen. In
[Lub00] werden verschiedene Ideen präsentiert:
• Anfragetransformation durch zusätzliche Selektion nach Location oder Projektion
auf wichtigste Attribute
• Reduktion der Datenbasis mit Sichtendefinition oder Statistikverwendung (z.B.
Histogramme) zum Löschen nicht mehr benötigter Daten
• Ergebnistransformation mit Durchschnittswerten anstatt einzelner Attributwerte
• graduelle Datenreduktion, die für den Nutzer uninteressante Daten reduziert
Für den Anwendungsentwickler ist die Unterstützung einer standardisierten Anfragesprache wie SQL wichtig, weil sich die Einarbeitung in eine neue Sprache erübrigt und
meist schon Tools für den Datenzugriff existieren. Andererseits ist eine vollständige Implementierung eines SQL-Standards auf Grund der beschränkten Ressourcen mobiler
Systeme kaum durchführbar. Folglich ist für bestimmte Szenarien die Implementierung
einer eigenen Anfragesprache sinnvoll, die z.B. auch zeitliche und räumliche Aspekte
miteinbezieht (siehe [Kön03]).
2.7.4
Transaktionsverarbeitung
Im mobilen Umgebungen müssen Transaktionen einen nahtlosen Übergang von einer
Zelle zu einer anderen, die Wiederaufnahme nach einem Verbindungsabbruch und lange
Laufzeiten unterstützen. Die ACID-Eigenschaften für mobile Transaktionen werden in
[Kön03, BBPV01] diskutiert:
• Atomicity – Lokal muss eine Transaktion entweder ganz oder gar nicht ausgeführt werden. Die Einhaltung globaler Atomarität ist bei langlaufenden Transaktionen schwierig und ein Abbruch kann teuer werden. Deshalb sind geschachtelte
Transaktionen und ein partielles Zurücksetzen sinnvoll.
KAPITEL 2. MOBILE DATENBANKEN
17
• Consistency – Bei lokalen Änderungen muss sich die Datenbank vor und nach
einer Transaktion in einem konsistenten Zustand befinden. Problematisch sind
dabei temporale Konsistenzbedingungen (z.B. abgeschlossen bis 12.00 Uhr). Für
höhere Erfolgschancen sollte man in solchen Fällen vielleicht nur bestimmte Teile
einer Transaktion ausführen und unwichtige Teile weglassen.
• Isolation – Die lokale Isolationsbedingung ist erfüllt, da auf mobilen Geräten
nur ein Benutzer alleine mit der Datenbank arbeitet und in der Regel kein Multithreading unterstützt wird. Die globale Isolation muss die spätere Synchronisation garantieren. Bei langlaufenden Transaktionen verringern lange Sperren die
Performance, so dass man diese Anforderung eventuell aufweichen muss.
• Durability – Das Ergebnis einer erfolgreich abgeschlossenen Transaktion muss
dauerhaft gespeichert werden. Dennoch können lokale Datenänderungen verloren
gehen, wenn noch keine Synchronisation mit dem Server vorgenommen wurde
oder die Änderungen bei der Konfliktbehebung verworfen wurden.
Man kann laut [BBPV01] lokale Atomarität durch Shadow-Update, Update-in-Place
mit Write-Ahead-Logging, Pointer-based-Logging oder Garbage-collecting-Values erreichen und globale Atomarität durch das One-Phase-Commit-Protokoll (1PC) gewährleisten. In [Kön03] werden unterschiedliche mobile Transaktionsmodelle erläutert wie
z.B. Reporting-/Co-Transaction, Kangaroo-Transaction, Pre-Serialisation-Transaction
und Relative-Consistent-Transaction.
2.7.5
Sicherheit
Ein wichtiger Aspekt bei mobilen Datenbanken sind Sicherheitsrisiken wie die drahtlose
Datenübertragung, unsichere Kommunikationsprotokolle oder der Verlust der mobilen
Geräte. Deshalb ist eine verschlüsselte Speicherung und Übertragung der Daten notwendig sowie eine Authentifizierung beim Zugriff auf sensitive Daten. Genauso muss bei
Anfragen an den Server kontrolliert werden, ob der Nutzer für den Datenzugriff berechtigt ist. Ebenfalls sollte man die Metainformation im mobilen Kontext (z.B. Position
und Status des Benutzers) vor Missbrauch durch Verschlüsselung und anonymisierter
Übertragung schützen, so dass man die Aktionen des Anwenders nicht zurückverfolgen kann. Für mobile Einheiten gibt es dieselben Gefahren (z.B. Viren/Würmer oder
Hackerangriffe über unsichere Verbindungen) wie für Desktop-Rechner, wenn auch in
sehr geringerem Ausmaß als wie beim klassischen PC. Bei allen Sicherheitsmechanismen ist wiederum zu beachten, dass die Ressourcen der mobilen Endgeräte nicht durch
aufwändige Verfahren (z.B. sehr rechenintensive Verschlüsselungen) zu stark belastet
werden.
Kapitel 3
Existierende Datenbanksysteme für
mobile Endgeräte
In diesem Kapitel werden verschiedene mobile Datenbanksysteme (Stand: Juli 2004)
vorgestellt. Die einzelnen Systeme kann man basierend auf den unterstützten Plattformen entsprechend der drei Geräteklassen klassifizieren. Die Klassifikation wurde in
Tabelle 3.1 vorgenommen. Darüber hinaus gibt es noch weitere Klassifizierungsmöglichkeiten für die Datenbanksysteme z.B. nach der Anwendungsarchitektur (Drei-TierArchitektur oder Integration von Datenbank und Anwendung) bzw. dem unterstützten
Datenmodell (relational, objektorientiert, Netzwerk, XML- oder Java-basiert).
Datenbanksystem
IBM DB2 Everyplace 8.1
Oracle Database Lite 10g
SQL Server Windows CE 2.0
Adaptive Server Anywhere 9
Ultralite 9
Tamino Mobile 4.0
Borland JDataStore 7
FastObjects j2
FastObjects e7
PointBase Micro 5.0
PointBase Embedded 5.0
Mimer SQL Mobile 9.2
Mimer SQL Embedded 9.2
Birdstep RDM Embedded 7.1
Birdstep RDM Mobile 3.0
McObject eXtremeDB 2.3
Footprint
200 kB
150 kB - 1 MB
1 - 3 MB
8 MB
150 kB
430 - 990 kB
1 - 1.2 MB
450 kB
4 MB
45 - 90 kB
1 MB
4 MB
400 kB - 2 MB
270 kB
225 kB
60 - 100 kB
PDA
ja
ja
ja
ja
ja
ja
ja
ja
ja
ja
ja
ja
Smartphone
ja
nein
teilweise
nein
teilweise
nein
ja
ja
nein
ja
nein
ja
Handy
teilweise
nein
nein
nein
nein
nein
nein
nein
nein
ja
nein
teilweise
ja
ja
ja
nein
ja
nein
nein
nein
nein
Tabelle 3.1: Klassifikation der Datenbanksysteme in die drei Hardwareklassen
Besonders interessant sind Datenbanksysteme mit denen der Nutzer auf vielen verschiedenen mobilen Geräten arbeiten kann. Einen detaillierten Überblick zu den unterschiedlichen Plattformen gibt die Tabelle 3.2. Der Übersichtlichkeit halber wurden die
18
KAPITEL 3. EXISTIERENDE DATENBANKSYSTEME
19
zahlreichen Betriebssystemversionen der Server, die Pocket PC-Smartphoneversionen
sowie die Hardwareanforderungen der einzelnen Systeme weggelassen. Weitere Informationen kann man der Dokumentation der Datenbankhersteller entnehmen.
Beim Vergleich der verschiedenen Datenbanksysteme und ihrer Synchronisationskomponenten gibt es bis auf Detailunterschiede einige Gemeinsamkeiten. Diese gemeinsamen Funktionalitäten sind nachfolgend aufgeführt. Die smartDB unterstützt diese Funktionen noch nicht vollständig. Die Unterschiede und Details der vorgestellten
Systeme findet man in den einzelnen Datenbankabschnitten. Die Datenbanken haben
folgende gemeinsame Eigenschaften:
• kleiner Footprint
• nahezu kein Administrationsaufwand und selbstoptimierend
• verschlüsselte Speicherung der Daten (Ausnahmen: FastObjects j2, Birdstep RDM
Embedded/Mobile, McObject eXtremeDB)
• SQL-Unterstützung (Ausnahmen: Tamino Mobile, FastObjects j2/e7, Birdstep
RDM Mobile, McObject eXtremeDB)
• Indizierung für schnellere Anfragen
• Transaktionsverarbeitung
Die Synchronisationssysteme (falls vorhanden) haben diese Gemeinsamkeiten:
• Authentifizierung/Autorisierung der Benutzer
• Datenreplikation zwischen dem Synchronisationsserver und dem mobilen Client
• 128-Bit Verschlüsselung und Datenkompression bei der Datenübertragung sowie
Recovery bei Netzwerkfehlern
• automatische Konflikterkennung und -lösung bei Mehrbenutzerzugriffen
Ein weiterer interessanter Gesichtspunkt beim Vergleich von Datenbanksystemen sind
statistische Datenbankinformationen. Eine Übersicht über die Maximalwerte wichtiger
Datenbankparameter gibt die Tabelle 3.3. Es wurden insbesondere relationale Datenbankgrößen berücksichtigt, weil die Mehrheit der Datenbanksysteme das relationale
Modell unterstützen. Mobile Datenbanken mit anderen Datenmodellen kann man beim
Vergleich nur schlecht oder gar nicht miteinbeziehen. Zu einigen Systemen waren keine
oder nur unvollständige Informationen aufzufinden. Des Weiteren ist es schwierig für
jedes Datenbanksystem den RAM-Bedarf anzugeben, da das sehr vom Betriebssystem
und der Funktionalität der Datenbank abhängig ist. Der benötigte RAM liegt zwischen
16 kB und 16 MB.
1
basiert auf Windows CE 2.11
basiert auf Windows CE 3.0, Pocket PC 2002 enthält noch teilweise spezielle Software
3
umfasst Windows CE .NET 4.0/4.1/4.2
4
basiert auf Windows CE .NET 4.2, auch bekannt als Windows Mobile 2003
5
umfasst verschiedene Hersteller von Betriebssystemen für Embedded bzw. Real-Time Systems
6
umfasst als Clients auch alle unterstützten Serverplattformen
7
durch die Mimer SQL Engine unterstützte Client-/Serverplattformen
2
eXtremeDB 2.3
Birdstep Mobile 3.0
Birdstep Embedded
Mimer Embedded 9.2
Mimer SQL Mobile
PointBase Embedded
PointBase Micro 5.0
20
FastObjects e7
FastObjects j2
JDataStore 7
Tamino Mobile 4.0
Ultralite 9
ASA 9
SQL Server CE 2.0
Oracle Lite 10g
Plattform
DB2 Everyplace 8.1
KAPITEL 3. EXISTIERENDE DATENBANKSYSTEME
Mobile and Embedded Clients
Palm 0S 3.x/4.x/5.x
X X
X
X
Palmsize PC 2.01
X
Handheld PC Pro1
X
2
Handheld PC 2000
X
X X X
Pocket PC 20002
X
X X X X X
X X
X
X
2
Pocket PC 2002
X X X X X X X
X X
X
X
4
Pocket PC 2003
X X X X X
X X
Windows CE 3.0
X
X X X X X
X X
X
X
3
Windows CE .NET
X
X X X
X X
Windows XP Embedded
X
X X
X X X
Symbian OS V6/V7
X
X
X
X
Embedded Linux5
X
X
X
X X X
Embedded Java
X
Personal Java/JDK 1.1.8
X
X X
X
X
J2ME/CDC + Profiles
X
X X X
J2ME/CLDC + MIDP
X
X
X
QNX Neutrino 6.x
X
X X X
WindRiver VxWorks 5.x
X X
X X X
GreenHills Integrity 4.x
X X X
5
andere Real-Time OS
X
X
Desktop and Laptop Clients
Windows NT/2000/XP
X X
X
X
X X6
X X X
6
6
6
Linux
X X
X
X
X X
X6 X6 X6
Synchronization Servers or Development Platforms
Windows NT/2000/XP/ X X X X X X X X X X X X7 X X X X
Server 2003
Linux x86
X X
X X
X X X X X X7
X X X
7
SUN Solaris SPARC
X X
X X
X X X X X X
X X X
IBM AIX
X X
X X
X7
HP-UX
X
X
X7
X X X
7
HP/Compaq Tru64
X
X
X
MAC OS X
X X
X
Novell Netware
X
OpenVMS
X7
Tabelle 3.2: Unterstützte Plattformen der mobilen Datenbanksysteme
KAPITEL 3. EXISTIERENDE DATENBANKSYSTEME
Datenbanksystem
DB2 Everyplace 8.1
Oracle Lite 10g
SQL Server CE 2.0
ASA 9
Ultralite 9
Tamino Mobile 4.0
JDataStore 7
FastObjects j2
FastObjects e7
PointBase Micro 5.0
PointBase Embedded
Mimer SQL Mobile
Mimer Embedded 9.2
Birdstep Embedded
Birdstep Mobile 3.0
eXtremeDB 2.3
Größe
der Datenbank
beliebig8
4 GB
2 GB
beliebig
2 GB
Tabellen
pro Datenbank
beliebig
4 Mrd.
1000
keine
8 TB
keine
keine
keine
8 TB
8 TB
8 TB
beliebig8
beliebig8
4 Mrd.10
4 Mrd.10
2 Mrd.10
Größe
der
Tabelle
beliebig8
21
Zeilen
pro
Tabelle
beliebig9
beliebig
Spalten
pro
Tabelle
beliebig9
1000
255
beliebig8 beliebig8 999
2 GB
65534
65535
Informationen verfügbar
8 TB
2 Mrd.
Informationen verfügbar
Informationen verfügbar
Informationen verfügbar
8 TB
8 TB
252
8 TB
252
beliebig8
beliebig8
Indizes
pro
Tabelle
15
beliebig
249
2048
1000
3276711
Tabelle 3.3: Maximalwerte wichtiger Datenbankparameter mobiler Datenbanken
3.1
IBM DB2 Everyplace 8.1
IBM DB2 Everyplace 8.1 ist ein relationales Datenbanksystem für den Einsatz auf
PDAs und Smartphones. Sie wird in drei Versionen angeboten:
• DB2 Everyplace Database Edition – umfasst die DB2 Everyplace Datenbank für
den Einsatz auf einem mobilen Endgerät. Sie wird von Geräteherstellern in ihre
mobilen Systeme eingebettet.
• DB2 Everyplace Enterprise Edition – enthält die DB2 Everyplace Datenbank für
eine unlimitierte Anzahl mobiler Endgeräte und den DB2 Everyplace Synchonization Server für die Datenreplikation. Sie ist für Großunternehmen gedacht. Die
Lizenzierung erfolgt pro Prozessor des Synchronization Servers.
• DB2 Everyplace Express Edition – basiert auf der gleichen Codebasis wie DB2
Everyplace Enterprise Edition. Sie eignet sich für kleine und mittelständische Unternehmen. Die Lizenzierung erfolgt auf Client-/Server-Basis, wobei die Benutzer
als Named User zählen und beliebig viele mobile Geräte betreiben können. Der
Synchronization Server ist auf maximal zwei Prozessoren begrenzt.
Die Datenbank bietet folgende Features:
8
die Größe wird nur vom verfügbaren Speicherplatz bzw. der Dateigröße begrenzt
die Anzahl wird nur durch die Tabellengröße beschränkt
10
hier sind es Objekte pro Datenbank und keine Tabellen pro Datenbank
11
hier sind es Indizes pro Datenbank und keine Indizes pro Tabelle
9
KAPITEL 3. EXISTIERENDE DATENBANKSYSTEME
22
• Schnittstellen für Datenzugriff: JDBC/ODBC, DB2 CLI12 /C/C++, ADO.NET13 ,
.NET APIs, Remote Query und Stored Procedure Adapter für Echtzeitzugriff
• unterstützte Standards: SQL-Kernfunktionen
• DDL14 : CREATE/DROP TABLE, CREATE/DROP INDEX, GRANT
• DML15 : INSERT, DELETE, UPDATE, SELECT, scrollable cursor, JOIN, GROUP
BY, ORDER BY
• Ausdrucks- und Aggregatfunktionen, case-insensitive search, DEFAULT-Werte,
CHECK constraints und IDENTITY columns
• bidirektionale Mehrattributindizes
• Datentypen: small integer, integer, decimal, char, varchar, BLOB16 , date, time,
timestamp
Der Synchronisationsserver unterstützt nachfolgende Funktionen:
• bidirektionale Synchronisation mit IBM DB2 UDB, IBM Lotus Domino, Oracle,
Microsoft, IBM Informix, Sybase und anderen JDBC-kompatiblen Datenquellen
• J2ME Synchronization Client für mobile Geräte mit sehr beschränkten Ressourcen (z.B. Mobiltelefone und Pager)
• Unterstützung von WebSphere Application Server Groups für Load Balancing
• Logging mit programmierbaren Antworten bei Konflikten
• Mobile Devices Administration Center zur zentralen Administration vieler Nutzer
und XML-Skriptschnittstelle
• autonome Indexerzeugung, Check-Constraint-Management für Clientdatenbanken
• vertikale/horizontale Datenpartitionierung
• Dateiunterstützung für Verteilung und Wartung mobiler Applikationen mit OnDemand-Download
• API mit Synchronisationsfunktionen für Java, C/C++ und .NET
Für die Entwicklung mobiler Datenbanken bietet IBM den DB2 Everyplace Mobile Application Builder an. Die oben genannten Informationen wurden [IBM03] entnommen.
Weitere Details findet man auf der Webseite http://www-306.ibm.com/software/
data/db2/everyplace/index.html.
12
Call Level Interface
ActiveX Data Objects for .NET – objektorientierte Schnittstelle für Datenbankzugriff
14
Data Definition Language
15
Data Manipulation Language
16
Binary Large Object – lange Folge von Binärwerten
13
KAPITEL 3. EXISTIERENDE DATENBANKSYSTEME
3.2
23
Oracle Database Lite 10g
Oracle Database Lite 10g ist ein relationales Datenbanksystem für Handhelds und
Laptops. Für die Datenbank existiert auch eine Mehrbenutzerversion mit bis zu 32
simultanen Verbindungen. Die mobile Datenbank hat diese Eigenschaften:
• Schnittstellen für Datenzugriff: JDBC/ODBC, ADOCE17 , ADO.NET, C++,
mobiles SQL-Utility, SODA18
• unterstützte Standards: SQL92
• referenzielle Integrität und Data-Integrity-Constraints
• B-Baum-Indizes mit maximal 32 Spalten pro Index
• Java Stored Procedures und Triggers
• Anfrageoptimierung unter Verwendung von Datenbankstatistiken
• Transaktionen mit Row-Level-Locking und automatischem Recovery
• Datentypen: BFILE als LOB, BLOB, CLOB19 und Long jeweils maximal zwei
GB, Number ist abhängig vom Betriebssystem
Das Synchronisationssystem Mobile Server besitzt folgende Funktionalitäten:
• bidirektionalen Synchronisation über ein Publication & Subscription Modell,
Multi-Thread-Architektur mit individuellen Synchronisationsaufrufen, Synchronisationsmonitor
• unterstützte Synchronisations-/Netzwerkprotokolle: TCP/IP, HTTP, 802.11b,
PPP12, GPRS, HotSync, ActiveSync, offene Transport APIs für beliebige kabellose Netzwerke
• datei- und warteschlangenbasierte Replikation mit Snapshots, Replikation von
Java-Prozeduren und SQL-Skripten
• Schemaevolution, Tabellenpartitionierung
• Schnittstellen zu C, Java und COM20
Das Managementsystem der Oracle Database Lite stellt eine webbasierte, serverseitige
Administrationsschnittstelle zur Verfügung, die eine Anwendungsentwicklung und ein
Management der Datenreplikation und der Nutzer ermöglicht. Eine Remote-Gerätediagnose und eine Skriptsprache für die Batchadministration werden auch unterstützt.
Die zuvor erwähnten Aspekte findet man in [Rad04b, Rad04a]. Zusätzliche Informationen bietet die Webseite http://www.oracle.com/technology/products/lite/
index.html.
17
ActiveX Data Objects for Windows CE – objektorientierte Schnittstelle für Datenbankzugriff
Stateless Object Database Access – C++-Bibliothek für Datenbankzugriff über andere Programmiersprachen
19
Character Large Object – lange Folge von Zeichen
20
Component Object Model – Technologie zur Anwendungserstellung aus binären Softwarekomponenten
18
KAPITEL 3. EXISTIERENDE DATENBANKSYSTEME
3.3
24
Microsoft SQL Server 2000 Windows CE 2.0
Microsoft SQL Server 2000 Windows CE 2.0 Edition ist ein relationales Datenbanksystem für Pocket PC basierte PDAs und Embedded Systems, das als Teil von SQL
Server 2000 Developer Edition lizenziert wird. Es werden zwei Szenarien unterschieden:
• Stand-Alone-Modus auf dem Windows CE Gerät – die Lizenz der Developer Edition erlaubt eine unbeschränkte Verteilung der mobilen Datenbank auf mehreren
Geräten. Die Geräte dürfen sich nicht zum SQL Server verbinden oder ihn nutzen.
• Austausch von Daten mit dem SQL Server – falls sich das Windows CE Gerät mit
einem SQL Server verbindet oder ihn nutzt, muss dieser im Pro-Prozessor-Modus
lizenziert sein oder das Gerät eine SQL Server Client Access License haben.
Das Datenbanksystem verfügt über nachfolgende Merkmale:
• Schnittstellen für Datenzugriff: ADOCE, ADO.NET, OLE21 DB für Windows
CE, Visual Basic/C++, Visual Studio .NET
• unterstützte Standards: SQL, Unicode
• DDL: CREATE/DROP/ALTER für Datenbanken, Tabellen und Indizes
• DML: INSERT, DELETE, UPDATE, SELECT, INNER/OUTER JOIN, GROUP
BY/HAVING, ORDER BY, UNION, scrollable cursor
• Aggregatfunktionen und Operatoren, DEFAULT-Werte, NULL-Werte, referenzielle Integrität mit kaskadierenden DELETE-/UPDATE-Klauseln
• mehrspaltige Indizes
• parametrisierte/geschachtelte Anfragen und Anfrageoptimierung
• geschachtelte Transaktionen bis maximal fünf Ebenen mit Table-Level-Locking
• Datentypen: tinyint, smallint, int, bigint, real, numeric, float, double, bit, binary, varbinary, Unicode-Zeichendatentypen, image, money, datetime, BLOB bis
maximal ein GB, UNIQUEIDENTIFIER, IDENTITY columns
Die Synchronisationskomponente unterstützt folgende Features:
• Mergereplikation und horizontale/vertikale Filter zum Definieren/Verwalten eindeutiger Datenteilmengen für verschiedene Clients
• nachrichtenbasierte Internetreplikation mit bidirektionaler Synchronisierung durch
eine HTTP-Verbindung mit dem SQL Server über den Internet Information Server (IIS) unter Verwendung von drahtlosen/verdrahteten LANs und WANs
• Remotedatenzugriff auf SQL Server 6.5/7.0/2000 möglich unter Nutzung von IIS
Die oben angeführten Informationen kann man in [Mic00, Mic02, FB03] nachlesen.
Weitere Einzelheiten stehen auf der Webseite http://www.microsoft.com/germany/
ms/sql/2000/wince/index.htm.
21
Object Linking and Embedding – Schnittstelle für Datenaustausch zwischen Anwendungen
KAPITEL 3. EXISTIERENDE DATENBANKSYSTEME
3.4
25
Sybase SQL Anywhere Studio 9
Das SQL Anywhere Studio 9 der Sybase-Tochterfirma iAnywhere umfasst die Datenbanksysteme Adaptive Server Anywhere und UltraLite. Adaptive Server Anywhere 9
(ASA 9) ist ein relationales Datenbanksystem für Notebooks und sehr leistungsstarke
PDAs. Es kann auch auf stationären Computern als klassische Datenbank eingesetzt
werden. Für leistungsschwächere mobile Geräte existiert die Datenbank UltraLite 9,
die jedoch kein eigenständiges Datenbanksystem mehr ist, sondern eine anwendungsoptimierte Datenbank. Die UltraLite-Datenbank ist für die Geräteklassen PDA, Smartphone und Handy wesentlich interessanter als der Adaptive Server Anywhere und wird
daher genauer betrachtet. Sie bietet folgende Funktionalitäten:
• Schnittstellen für Datenzugriff: Static C/C++ API mit Embedded SQL, Static
Java API mit JDBC, Dynamic SQL
• unterstützte Standards: SQL, Unicode
• DDL: CREATE/DROP TABLE, CREATE/DROP INDEX
• DML: INSERT, DELETE, UPDATE, SELECT, GROUP BY/HAVING, ORDER
BY, JOIN
• Aggregatfunktionen und Operatoren, DEFAULT-Werte, NULL-Werte, referenzielle Integrität
• B+-Baum-Indizes und mehrspaltige Indizes
• Transaktionen mit Row-Level-Locking und automatischem Recovery mit Zustandsbyte für die Tabellenzeile
• Datentypen: tinyint, smallint, int, bigint, decimal, real, float, double, char, varchar, long varchar, binary, varbinary, long binary, BLOB, date, time, timestamp
Die Synchronisation erfolgt für beide Datenbanksysteme über den MobiLink-Synchronisationsserver, der nachfolgende Eigenschaften umfasst:
• bidirektionale Synchronisation mit Datenbanken von Sybase, IBM, Oracle und
Microsoft, serverinitiierte Synchronisation sowie automatische Erstellung von Synchronisationsskripten
• unterstützte Synchronisations-/Netzwerkprotokolle: TCP/IP, HTTP, HTTPS,
HotSync, ActiveSync
• programmierbare Konfliktbehebung
• vertikale/horizontale Datenpartitionierung und prioritätsbasierte Synchronisation von mehreren Daten-Subsets
• Downloadänderungen als Broadcast-Datei
• Entwicklung der Synchronisationslogik mit SQL, Java oder .NET
KAPITEL 3. EXISTIERENDE DATENBANKSYSTEME
26
• bidirektionale, nachrichtenbasierte Synchronisation mit SQL Remote zwischen
Datenbankservern und Clients von Sybase über FTP, e-Mail oder dateibasiert,
minimale Kommunikationskosten da nur aktualisierte Daten gesendet werden
Darüber hinaus bietet QAnywhere ein umfangreiches Messaging API zur Entwicklung
mobiler Datenübertragungsanwendungen. Es nutzt erweiterte MobiLink-Funktionen
und arbeitet wie ein Messaging-Server. Die zuvor aufgezählten Gesichtspunkte wurden [iAn04a, iAn04b] entnommen. Detaillierte Informationen stehen auf der Webseite
http://www.ianywhere.com/deutschland/products/sql_anywhere.html.
3.5
Tamino Mobile 4.0
Die XML-Datenbank Tamino Mobile 4.0 der Software AG ist eine mobile Datenbank für
Handhelds und Embedded Systems. Sie kann speziell für einen kleinen Footprint oder
eine hohe Performance optimiert werden. Die XML-Datenbank besitzt diese Merkmale:
• unterstützte Schnittstellen: DOM22 Level 2 und DOM Level 3 XPath Integration
• Verwendung von XPath 1.0 bei Anfragen und zur Navigation
• strukturierte XML-Dokumente durch Nutzung von DTD23 -Skripten
• Transformation eines beliebigen Datenbankteils in einen ByteStream (z.B. eine
XML-Datei) basierend auf SAX24 Version 2
• Unterstützung der Codierungen UTF-8, UTF-16, US ASCII und Latin-1 Unicode
• Schnittstellen zur XML API für C++ und Java
Die Synchronisation der Daten kann über LAN, Wireless LAN, GPRS oder UMTS
erfolgen. Mit Hilfe des Datenlademoduls von MobileLogic – einem Business Services
Framework mit fertig entwickelten Komponenten für die schnelle Erstellung von Portallösungen – kann man die Daten vom Tamino XML Server in die Tamino Mobile
Datenbank herunterladen. Durch die Arbeit mit einem vorkonfigurierten Portal kann
die zu übertragende Datenmenge bei der Synchronisation reduziert werden. Die oben
genannten Informationen sind in [Sof03] enthalten. Ergänzende Fakten findet man auf
der Webseite http://www2.softwareag.com/de/products/tamino/default.asp.
3.6
Borland JDataStore 7
Borland JDataStore 7 ist ein plattformunabhängiges, komplett in Java geschriebenes,
relationales Datenbanksystem für mobile, eingebettete und kleine bis mittlere Serveranwendungen. Es verfügt über folgende Eigenschaften:
22
Document Object Model – baummanipulierende XML-Prozessoren
Document Type Definition – zur Modellierung von XML-Dokumenten
24
Simple API for XML – ereignisorientierte XML-Prozessoren
23
KAPITEL 3. EXISTIERENDE DATENBANKSYSTEME
27
• Schnittstellen für Datenzugriff: JDBC/ODBC, interaktives SQL-Utility
• unterstützte Standards: Untermenge von SQL92 Entry Level, Unicode
• DDL: CREATE/DROP SCHEMA, CREATE/DROP/ALTER TABLE, CREATE/DROP/ALTER VIEW, CREATE/DROP INDEX, GRANT/REVOKE
• DML: INSERT, DELETE, UPDATE, SELECT, GROUP BY/HAVING, ORDER
BY, INNER/OUTER JOIN, UNION, EXCEPT, INTERSECT
• Aggregatfunktionen, Operatoren und Prädikate, DEFAULT-Werte, NULL-Werte,
referenzielle Integrität
• Trigger, Java Stored Procedures, user-defined Functions (UDFs)
• Transaktionen mit Row-/Table-Level-Locking, read-only Transaktionen ohne
Locking, automatisches Crash-Recovery und inkrementelles Datenbankbackup
• verteilte Transaktionen mit JTA25 , X/Open XA26 Standard, Connection Pooling
• hohe Betriebssicherheit durch automatische Ausfallsicherung auf Spiegelservern,
read-only Cluster für Load Balancing
• Datentypen: Java-Typen, Objekte, SQL-Typen (tinyint, smallint, int, bigint, decimal, real, float, double, boolean, bit, varchar, binary, varbinary, date, time,
timestamp), BLOB bis maximal zwei GB
Die Datenbank unterstützt eine unidirektionale Datenreplikation. Außerdem existiert
eine grafische Server Management Konsole für die Verwaltung der Datenbank sowie
visuelle Tools zur Bearbeitung der Datenbankkomponenten und zum Monitoring bzw.
Logging der Datenbankaktivitäten. Die zuvor erwähnten Aspekte kann man in [Bor03b,
Bor03a] nachlesen. Für weitere Details sei auf die Webseite http://www.borland.de/
jdatastore/index.html verwiesen.
3.7
Versant/Poet FastObjects j2 und e7
Nach der Fusion von Versant und Poet werden die FastObjects-Datenbanken von Versant vertrieben. FastObjects j2 und FastObjects e7 sind objektorientierte, echtzeitfähige Einbenutzer-Datenbanken für die lokale Datenspeicherung. Sie werden in Handhelds und Embedded Systems verwendet. Die beiden Datenbanken haben nachstehende
gemeinsame Eigenschaften:
• Schnittstellen für Datenzugriff: JDO27 1.0.1, ODMG 3.0 Java-Binding, Database
Administration API
25
Java Transaction API
eXtended Architecture – Schnittstelle für verteilte Transaktionen
27
Java Data Objects – Schnittstelle zur dauerhaften, transparenten Speicherung von Objekten in
Java-Anwendungen
26
KAPITEL 3. EXISTIERENDE DATENBANKSYSTEME
28
• Anfragen/Datenzugriff über JDOQL, Retrieval/Navigation durch Referenz
• Import/Export mit XML und Online-Backup
• geschachtelte/parallele Transaktionen mit Object-Level-Locking, automatische
Integritätskontrolle und Reparatur der Dateien
• Schemaevolution, Schemaversionierung und „On the Fly“-Objektversionierung
• direkte Abbildung der Objektrepräsentation vom Speicher auf die Platte, wobei
Memory Pointer in interne Objektidentifier konvertiert werden
Die beiden Datenbanksysteme haben trotzdem einige Unterschiede. FastObjects j2 ist
komplett in Java geschrieben und wird in Java-Anwendungen genutzt. Es besteht aus
einem Kernsystem sowie mehreren optionalen Modulen und hat folgende zusätzliche
Funktionen:
• j2-Bytecode-Enhancer extrahiert automatisch die Schemainformationen, speichert
die persistenzfähigen Klassen in einem Persistence Descriptor File und modifiziert
den Bytecode für eine persistente Speicherung (Persistenz durch Erreichbarkeit)
• Undo-Log-Recovery
• Replikation mit einer Shadow-Datenbank
FastObjects e7 ist in C++ geschrieben und wird in C++-Anwendungen verwendet. Es
verfügt über nachfolgende zusätzliche Funktionalitäten:
• e7-Präprozessor verwendet die Headerdateien der Anwendung zur Definition der
Datenbankschemata und zur Erzeugung der Datenzugriffslogik direkt aus dem
Objektmodell
• Forward-Log-Recovery
• Schnittstellen: C++-Binding, ODBC für Windows
• Anfragen/Datenzugriff über OQL oder PtQL28 und eine Anfrageoptimierung
• Caching von Objekten zwischen Transaktionen und optimistisches Locking
• Nutzerauthentifizierung/-autorisierung
• Migration von lokaler Datenbank zu Mehrbenutzer-Datenbankserver möglich
Die oben angeführten Informationen sind in [Fas04b, Fas04a, Poe01] enthalten. Weitere
Einzelheiten bietet die Webseite http://www.fastobjects.com/us.
28
Program Trace Query Language
KAPITEL 3. EXISTIERENDE DATENBANKSYSTEME
3.8
29
DataMirror PointBase Micro und Embedded 5.0
PointBase Micro 5.0 und PointBase Embedded 5.0 von DataMirror sind plattformunabhängige, komplett in Java geschriebene, relationale Datenbanksysteme für mobile
Umgebungen (z.B. Laptops, PDAs, Smartphones). PointBase Micro ist speziell für
J2SE sowie J2ME CDC + CLDC optimiert und verfügt über folgende Features:
• Schnittstellen für Datenzugriff: JDBC
• unterstützte Standards: Untermenge von SQL92, Unicode
• unterstützte Sicherheitsstandards: XTEA
• DDL: CREATE/DROP/ALTER TABLE, CREATE/DROP INDEX, CREATE
FUNCTION, CREATE USER
• DML: INSERT, DELETE, UPDATE, SELECT, JOIN über mehrere Tabellen
• Aggregatfunktionen und Prädikate für Vergleich/LIKE, NULL-Werte, Primärschlüssel, Java-Funktionen in DDL-/DML-Statements
• regelbasierter Anfrageoptimierer
• automatisches Recovery
• Datentypen: integer, decimal, char, varchar, BLOB, date, time, timestamp
PointBase Embedded wird mit J2EE, J2SE sowie J2ME CDC verwendet. Es umfasst
alle Bestandteile von PointBase Micro und bietet folgende ergänzende Funktionen:
• unterstützte Standards: SQL92 Entry & Transition Level, SQL99-Kernfunktionen
• unterstützte Sicherheitsstandards: Blowfish, Twofish, DES, DES3, TEA, IDEA
• DDL: CREATE/DROP SCHEMA, CREATE/DROP PROCEDURE, CREATE/
DROP read-only VIEW, CREATE/DROP TRIGGER, GRANT/REVOKE
• Prädikate IN/BETWEEN, DEFAULT-Werte, CHECK constraints, IDENTITY
columns, Fremdschlüssel, referenzielle Integrität, SQL-Funktionen in DDL-/DMLStatements, skalare Funktionen
• Unteranfragen, temporäre Tabellen, scrollable/updateable Cursors, updateable
Resultsets, Batchupdates, Java Stored Procedures
• kostenbasierter Anfrageoptimierer, Online-Anfragestatistiken
• Online-Backups
• Datenbank kann als Ressource Manager dienen, um die Transaktionsverwaltung
des Application Servers zu unterstützen
KAPITEL 3. EXISTIERENDE DATENBANKSYSTEME
30
• verteilte Transaktionen mit JTA, X/Open XA Standard, Connection Pooling,
Two-Phase-Commit
• Datentypen: smallint, bigint, numeric, bigdecimal, float, double, real, boolean,
CLOB
• einstellbare Datenbankeigenschaften: Cache Size, Database Page Size, Sort Buffer
Size, SQL Caching
Für die Datenbankentwicklung stehen die grafische Oberfläche PointBase Console und
PointBase Commander, ein kommandozeilenorientiertes Tool für den Datenzugriff und
das Skripting, zur Verfügung. PointBase Embedded kann auch auf stationären Computern als klassisches Datenbanksystem benutzt werden und es gibt eine Serveroption
für eine Client-/Server-Umgebung. Das Synchronisationssystem für beide Datenbanken
PointBase UniSync ist vollkommen in Java implementiert und unterstützt nachfolgende
Eigenschaften:
• bidirektionale Synchronisation (PointUpdate = delta changes, Snapshot = full
changes) mit Oracle, Microsoft und anderen JDBC-kompatiblen Datenbanken,
Publish & Subscribe Modell inklusive Filtermöglichkeiten mit JOINs
• automatische Datentypabbildung zwischen Oracle, Microsoft und PointBase
• unterstützte Synchronisations-/Netzwerkprotokolle: TCP/IP, HTTP, HTTPS
• Hub & Spoke Network Modell für mehrere, simultane Verbindungen zwischen
UniSync-Engine und Datenbank, Nutzeranzahl von Hardwaregrenzen abhängig
• Logging bei Konflikten, Standardlösungen: „spoke win“oder „hub win“, Alternativen: regelbasierte Algorithmen oder anwendungsspezifische Lösung
• Businesslogik durch Entwickler in PointBase UniSync vor/nach der Synchronisationsoperation implementierbar (z.B. über EJB29 , Servlets, Java-Klassen)
Darüber hinaus existiert noch die UniSync Console, die ein grafisches Entwicklertool zur
Konfiguration der Synchronisation ist. Die oben aufgezählten Fakten wurden [Dat04b,
Dat04a, Dat04c] entnommen. Ergänzende Informationen findet man auf der Webseite
http://www.pointbase.com/products.
3.9
Mimer SQL Engine, Mobile und Embedded 9.2
Die Mimer SQL Engine 9.2 stellt die Funktionalitäten bereit, um ein DatenbankManagementsystem in eine Nutzeranwendung einzubauen. Die relationale DatenbankEngine kann auf einer Vielzahl von Plattformen (z.B. PDA, Laptop, Desktop PC,
Enterprise-Server) übertragen werden und hat nachfolgende Merkmale:
29
Enterprise Java Beans – serverseitige Komponentenarchitektur für J2EE zur einfachen Entwicklung von komplexen, verteilten Anwendungen
KAPITEL 3. EXISTIERENDE DATENBANKSYSTEME
31
• Schnittstellen für Datenzugriff: JDBC/ODBC, ADO, ADO.NET, Embedded SQL
in C/C++/COBOL/FORTRAN, Mimer BSQL (interaktives SQL-Utility)
• unterstützte Standards: SQL92 Entry, Intermediate & Transition Level, SQL99Kernfunktionen, Unicode
• DDL: CREATE/ALTER/DROP TABLE, CREATE/DROP INDEX, CREATE/
DROP VIEW, CREATE/DROP PROCEDURE, CREATE/DROP TRIGGER,
CREATE/DROP FUNCTION, CREATE/DROP SCHEMA, GRANT/REVOKE
• DML: INSERT, DELETE, UPDATE, SELECT, GROUP BY/HAVING, ORDER
BY, INNER/OUTER JOIN, UNION
• Aggregatfunktionen, Operatoren und Prädikate, DEFAULT-Werte, NULL-Werte,
CHECK constraints, skalare Funktionen, referenzielle Integrität
• scrollable/updateable Cursors, updateable Resultsets, Batchverarbeitung
• Indizes mit maximal 32 Spalten
• automatische Online-Datenbankreorganisation und Online-Backup
• Transaktionskontrolle mit optimistischen Verfahren und ohne Locking
• verteilte Transaktionen mit JTA, X/Open XA Standard, Connection Pooling,
2-Phase-Commit sowie COM+ und DTC30
• Datentypen: smallint, int, bigint, decimal, real, float, double, char, varchar, CLOB,
binary, varbinary, BLOB, date, time, timestamp
Mimer SQL Mobile 9.2 ist eine relationale Datenbank für Handhelds, Mobiltelefone
und andere kleine Geräte. Die Datenbank kann in die Anwendungen integriert werden.
Mimer SQL Embedded 9.2 ist eine relationale Datenbank für Embedded Systems. Sie
ist für verschiedene Plattformen verfügbar oder kann auf die gewünschte Plattform in
30 bis 90 Tagen portiert und validiert werden. Die beiden Datenbanken besitzen die
Funktionen der Mimer SQL Engine und nachfolgende zusätzliche Features:
• automatische „On the Fly“-Datenkompression
• automatische Sammlung von statistischen Informationen
• Mehrbenutzerbetrieb und automatisches Recovery
• unterstützte Synchronisations-/Netzwerkprotokolle: serielle Schnittstelle, LAN,
IR, Wireless LAN, Bluetooth
• Unterstützung von Client-/Server-Verbindungen zwischen mehreren Mimer SQL
Datenbanken
30
Distributed Transaction Coordinator – Transaction Manager for Windows Environments
KAPITEL 3. EXISTIERENDE DATENBANKSYSTEME
32
Darüber hinaus kann Mimer SQL Mobile auch selbst als Handheld-Datenbankserver arbeiten, auf den man mit beliebigen Clients über JDBC/ODBC zugreifen kann. Folglich
werden mehrere, parallele Datenbankverbindungen mit JDBC/ODBC und Embedded
SQL unterstützt. Des Weiteren ermöglicht Mimer SQL Embedded auch Netzwerkverbindungen über TCP/IP. Für die Erstellung einer Datenbankapplikation unter Mimer
SQL Mobile bzw. Mimer SQL Embedded steht jeweils eine Entwicklungsumgebung
bereit. Für die verschiedenen Mimer SQL Produkte gibt es mehrere Lizenzmodelle
z.B. basierend auf der Plattform, einem Mengenrabatt entsprechend der Lizenzanzahl oder dem Endbenutzerpreis. Die zuvor genannten Informationen kann man in
[Upr04b, Upr04c, Upr04a, Mim04] nachlesen. Für weitere Einzelheiten sei auf die Webseite http://developer.mimer.com verwiesen.
3.10
Birdstep RDM Embedded 7.1 und Mobile 3.0
Birdstep RDM Embedded 7.1 ist ein Datenbanksystem für Embedded Systems und
Echtzeitanwendungen, dass das Netzwerk- sowie das Relationenmodell unterstützt.
Birdstep RDM Mobile 3.0 ist ein Datenbanksystem für Mobile Computing Systems,
das mit dem Netzwerkmodell arbeitet. Es wird z.B. in Notebooks, PDAs und Smartphones verwendet. Beide Datenbanken nutzen zum Teil dieselbe Datenbank-Engine.
Dadurch ist eine Migration von RDM Embedded zu RDM Mobile möglich. Die Datenbanksysteme verfügen über nachstehende gemeinsame Funktionalitäten:
• unterstützte Schnittstellen: Native C/C++ API mit Datenbankfunktionen, Java
API basierend auf JNI31 , XML API für Import/Export
• C/C++-basierte DDL und Unterstützung von Unicode
• Cachingschemata für minimale Laufwerkszugriffe
• Zugriff auf mehrere Datenbankdateien und Netzwerkzugriff über LANs
• Mehrbenutzerbetrieb und automatisches Datenbank-Recovery
• Transaktionen mit File-Locking bzw. Table-Level-Locking
• Datentypen: C-Datentypen, Arrays, Structs
• einstellbare Datenbankparameter: Page Size, Cache Size
Für die Datenbankentwicklung stehen beiden Datenbanken einige Utilities zur Verfügung z.B. für Interactive Database Access, Database Consistency und Import/Export.
Zusätzlich hat Birdstep RDM Embedded noch eine SQL92-Schnittstelle für Anfragen
und ermöglicht ein Datenbank-Mirroring für eine höhere Performance. Die oben erwähnten Aspekte sind in [Bir04b, Bir04c, Bir04a] enthalten. Weitere Details stehen auf
der Webseite http://www.birdstep.com/database_technology/index.php3.
31
Java Native Interface
KAPITEL 3. EXISTIERENDE DATENBANKSYSTEME
3.11
33
McObject eXtremeDB 2.3
McObject eXtremeDB 2.3 ist ein anwendungsoptimiertes, objektorientiertes Hauptspeicher-Datenbanksystem für Embedded Systems und Echtzeitanwendungen, das nicht
unbedingt ein Betriebssystem erfordert. Es wird z.B. in Consumer Electronics, Prozesskontrollsystemen, Routern und Handhelds eingebaut. Die Datenbank wird in vier
Versionen angeboten:
• eXtremeDB Standard Edition – ist eine eingebettete Datenbank, die eine strikte
speicherbasierte Architektur hat. Sie unterstützt mehrere Threads sowie hohe
Transaktionsraten. Die Daten werden in der Form, wie sie in der Anwendung
benötigt werden, gespeichert und direkt im Speicher manipuliert. Typische Leseund Schreibzugriffe liegen im Bereich weniger Mikrosekunden.
• eXtremeDB Shared Memory Edition – diese Version der eXtremeDB Standard
Edition ist für Mehrprozessorumgebungen (z.B. Linux, SUN Solaris, QNX Neutrino) geeignet. Die Datenbank wird im Shared Memory erzeugt und auf den
lokalen Adressraum jedes Prozesses abgebildet. In Abhängigkeit von der Zielplattform unterstützt die eXtremeDB eine der folgenden Synchronisationsmethoden
für Shared Memory Datenbanken: UNIX System V IPC32 -Mechanismus, POSIX
Shared Memory und Win32 Shared Memory.
• eXtremeDB Single Threaded Edition – ist eine lizenzfreie Version der eXtremeDB.
Sie ist identisch mit der Standard Edition, jedoch darf sich nur ein Thread mit
der Datenbank verbinden.
• eXtremeDB High Availability Edition – ermöglicht mehrere identische Datenbanken in getrennten Hardwareinstanzen, die durch nutzerdefinierte Kommunikationskanäle über TCP/IP, UDP/IP, Named Pipes, Qnet33 , CAN34 oder USB
miteinander verbunden sind. Die Kanäle werden für den Datenaustausch und
Kommunikationsnachrichten bei der Transaktionsverarbeitung verwendet. Die
Datenbank wird bei Applikationen mit hoher Verfügbarkeit eingesetzt. Sie unterstützt Load Balancing, ein zeitbewusstes Two-Phase-Commit-Protokoll und
eine Kontrollschnittstelle zur Verwaltung der Datenbankverbindungen.
Die eXtremeDB Standard Edition bietet folgende Features:
• beschleunigte Datenverwaltung durch vollständige Speicherung im Hauptspeicher
und kein Overhead durch Laufwerkszugriffe, Caching und andere Prozesse
• direkter, schneller Datenzugriff im Speicher ohne Kopieren der Daten zwischen
Datenbankspeicher, Cache und Anwendungsspeicher
• eigener Memory Manager und synchrone/asynchrone Ereignisverarbeitung
32
Interprocess Communication
QNX Networking – ermöglicht transparenten Zugriff auf Dateisysteme, Server, Hardwareressourcen im Netzwerk und das Internet über TCP/IP
34
Controller Area Network – asynchrones, serielles Bussystem von Bosch für die Autoindustrie
33
KAPITEL 3. EXISTIERENDE DATENBANKSYSTEME
34
• zwei C/C++-Datenbank APIs: für Basisoperationen (Cursor-Bewegungen, Datenbank öffnen/schließen) und für Datenmanipulationen (abgeleitet vom anwendungsspezifischen Datenmodell und mit Schemacompiler erzeugt)
• Hashindizes für Exact-Match-Suche, Baumindizes für Pattern-Match-Suche, Bereichsanfragen und Sortierung sowie OIDs für direkten Zugriff
• eigener Transaction Manager mit warteschlangen- und prioritätsbasierten Scheduling, eigenes Spin Locking zur Kontrolle des wechselseitigen Ausschlusses, Transaction Logging für Recovery
• Datentypen: 1/2/4/8-byte signed/unsigned integer, float, double, date, time, char,
string, enum, array, vector, struct, BLOB
Des Weiteren gibt es noch die eXtremeDB XML Extensions zur Schemaevolution und
zum Datenaustausch mit externen Systemen. Die XML-Erweiterungen sind konform
zum SOAP35 -Standard des W3C. Der Schemacompiler erzeugt Schnittstellenfunktionen
zum Auffinden, Erzeugen sowie Ersetzen von XML-Objekten in der Datenbank und
zur Generierung von XML-Schemata. Die oben angeführten Informationen wurden
[McO04c, McO04b, McO04a] entnommen. Ergänzende Fakten stehen auf der Webseite
http://www.mcobject.com/extremedbfamily.shtml.
3.12
smartDB – eine mobile Datenbank
In diesem Abschnitt wird die mobile Datenbank smartDB vorgestellt. Sie wurde vom
Fraunhofer Institut für Graphische Datenverarbeitung, Abteilung Mobile MultimediaTechnologien, in Rostock entwickelt. Die smartDB in der Version 2.0 wurde mit Personal Java 3.1 programmiert. Daher wird sie vorwiegend auf Smartphones und Pocket
PCs genutzt. Diese relationale Datenbank wurde bereits als mobiles Messeinformationssystem im Rahmen des xGuide-Projektes (siehe [fGDR]) eingesetzt. Vor der Portierung der smartDB auf die Handyplattform besteht eine Aufgabe darin, die vorhandenen Fähigkeiten zu analysieren und Verbesserungsmöglichkeiten für zukünftige
Datenbankversionen zu finden, da die smartDB nur grundlegende Datenbankfunktionalitäten aufweist.
3.12.1
Analyse der vorhandenen Fähigkeiten
Die vorliegende smartDB unterstützt einige grundlegende Funktionen relationaler Datenbanken, die durch Java-Methodenaufrufe realisiert werden.
• Man kann eine neue Datenbank erzeugen oder eine existierende Datenbank verwenden. In einer vorhandenen Datenbank ist es dann möglich neue Tabellen zu
erzeugen oder bestehende Tabellen zu nutzen.
35
Simple Object Access Protocol – leichtgewichtiges, XML-basiertes Protokoll für den Nachrichtenaustausch in verteilten Umgebungen
KAPITEL 3. EXISTIERENDE DATENBANKSYSTEME
35
• Die Informationen zu einer Tabelle werden auf zwei Dateien – eine für die Tabellendaten und eine für die zugehörigen Tabellenindizes – abgebildet. Für den
Zugriff auf die Tabellen werden zwei verschiedene Strategien gestattet:
– direkter Zugriff auf die Tabellendatei im Java-Archiv
– Caching der Tabellendatei im Arbeitsspeicher für einen schnelleren Zugriff
• Ferner existieren Methoden, um Tupel zu einer Tabelle hinzuzufügen bzw. zu
löschen oder Tabelleninformationen abzufragen.
• Als Datentypen werden die primitiven Datentypen (Byte, Short, Integer, Long,
Float, Double, Boolean) sowie die Typen String und ByteArray für nichttypisierte
Daten unterstützt.
• Indizes können über eine oder mehrere Tabellenspalten definiert werden. Außerdem stehen Methoden zum Lesen, Schreiben, Einfügen und Löschen der einzelnen
Indexeinträge sowie des ganzen Indexes zur Verfügung.
Neben den oben genannten Operationen zur Datendefinition und für Datenänderungen
sind auch Anfragemethoden verfügbar. Bei der Ausführung von Anfragen wird eine
Selektion der relevanten Datensätze vorgenommen. Für die Selektion können entsprechend dem Datentyp verschiedene Selektoren genutzt werden. Es werden Selektoren für
Integer- und Realzahlen, für Strings (case-sensitive und case-insensitive) sowie Selektoren auf ByteArray-Ebene bereitgestellt. Die Selektoren auf ByteArray-Ebene können
auf Enthaltensein, Gleichheit oder Übereinstimmung mit einem Präfix testen. Darüber
hinaus gibt es die Möglichkeit neben einer Selektion auf den Werten einer Spalte auch
eine Selektion auf den Werten mehrerer Spalten durchzuführen. Bei der Anfrage von
Informationen werden, wenn möglich, die Indizes und binäre Suche verwendet. Unter
Nutzung der Selektoren und der Tabellen sind auch Sichten definierbar.
3.12.2
Verbesserungsmöglichkeiten für zukünftige Versionen
Nachdem im vorhergehenden Abschnitt die existierenden Funktionen der smartDB
beschrieben wurden, sollen in diesem Abschnitt mögliche neue Features präsentiert
werden. Dazu werden die im vorangehenden Kapitel diskutierten Datenbankkriterien
herangezogen. Für die Relevanz der neuen Funktionen sind insbesondere die Anforderungen der mobilen Nutzung zu beachten.
• Zwecks Integritätssicherung gibt es nur einen Versionsvergleich zwischen den
Daten- und Indexdateien. Falls unterschiedliche Dateiversionen existieren, werden die Indizes neu erstellt, damit ein Zugriff auf die korrekten Datenbankinhalte möglich ist. Darüber hinaus könnte man noch zusätzliche Mechanismen zur
Sicherung korrekter Datenbankinhalte hinzufügen. Beispielsweise fehlt eine Prüfung auf Schlüsseleigenschaft und die Verwendung von Fremdschlüsselbedingungen. Weitere Maßnahmen zur Konsistenzüberwachung wie z.B. Check-Klauseln
oder Trigger sind in Abhängigkeit von der Leistungsfähigkeit der mobilen Geräte
einzusetzen.
KAPITEL 3. EXISTIERENDE DATENBANKSYSTEME
36
• In den Tabellen existiert noch keine Unterstützung für Null-Werte. Falls ein Wert
undefiniert ist, wird er durch leere Bytes gekennzeichnet. Eventuell wäre die explizite Festlegung eines Null-Symbols für die Kennzeichnung von undefinierten
Werten sinnvoll. Gegebenenfalls könnte man noch andere Datentypen (z.B. Char,
Date, Time, usw.) ergänzen.
• Eine Zugriffskontrolle und Rechtevergabe ist nicht weiter relevant, weil in der
Regel nur ein Nutzer das mobile Gerät bedient. Bei der Verbindung zwischen
dem mobilen Client und dem Datenbankserver sollte eine verschlüsselte Datenübertragung sowie eine Authentifizierung ermöglicht werden. In den bisherigen
Anwendungsszenarien spielte es noch keine Rolle, da nur eine Datenverwaltung
auf dem mobilen System verlangt wurde. Zwecks Datenschutz ist auch eine verschlüsselte Datenspeicherung auf dem mobilen Client erforderlich.
• Für eine einfache Datenverwaltung auf dem mobilen Gerät werden normalerweise
keine Transaktionskonzepte und Synchronisationsverfahren benötigt. Interessant
werden Synchronisationsmethoden erst, wenn der Nutzer über das Mobilfunknetz
aktuelle Daten vom Datenbankserver abruft. Ein Transaktionskonzept ist nur
dann notwendig, wenn der Nutzer die Änderungen an seinen lokalen Daten auf
dem mobilen Client auf den Server überspielen möchte.
• Mechanismen zur Datensicherung und Datenwiederherstellung bei Systemfehlern
bestehen noch nicht. Im Hinblick auf die beschränkten Speicherkapazitäten mobiler Einheiten ist das auch schwierig. Eine erdenkliche Lösung ist ein Datenbankbackup auf dem eigenen Rechner.
• Als Schnittstelle für die Datenbankoperationen wird nur der Aufruf von JavaMethoden angeboten. Deswegen ist die Definition einer SQL-Schnittstelle für
Anfragen sowie für den Import und Export der Daten eine weitere sinnvolle
Ergänzung. In Anbetracht des limitierten Speicherplatzes kann nur eine kleine
Untermenge des gesamten SQL-Sprachumfangs auf dem mobilen Gerät realisiert
werden. Besonders wichtig sind dabei Tabellen, Indizes, Sichten und Änderungsoperationen auf den Daten. Die Projektion, der Verbund, die Vereinigung, die
Differenz und die Umbenennung fehlen noch, da in der vorliegenden Datenbank
nur die Selektion vorhanden ist. Ergänzen könnte man die Anfragesprache noch
um Gruppierung, Aggregatfunktionen und Quantoren.
• Zur Anfrageoptimierung trägt nur die konsequente Nutzung der Indexstrukturen
bei. Eine weitere Optimierungsmöglichkeit ist die Verwendung von vorsortierten
Daten, wenn auf eine Tabellenspalte sehr häufig zugegriffen wird. Dieser Vorgehensweise spart Speicherplatz für zusätzliche Indizes ein. Außerdem könnte
man noch die vorhandenen Caching-Strategien weiter optimieren. Diese Verbesserung wäre für die Performance des Systems sicherlich gut, ist aber nur bei
genügend Speicher realisierbar. Zudem müssen bei der Anfrageoptimierung die
Kosten (Optimierungszeit, CPU-Auslastung, Speicherbedarf, Batterieverbrauch)
und der Nutzen ins Verhältnis gesetzt werden.
KAPITEL 3. EXISTIERENDE DATENBANKSYSTEME
37
• Bei der Speicherverwaltung ist man sehr stark an die zu Grunde liegende Hardware gebunden. Die Tupel werden in der Regel sequenziell gespeichert. Eine Optimierung könnte man durch einen zusätzlichen Index über dem Sortierattribut
der sequenziellen Daten erhalten (indexsequenzielle Organisation). Durch bessere
mehrstufige Zugriffsstrukturen (z.B. ein dünnbesetzter Index oder ein geclusterter Index) könnte man die Performance bei der Suche verbessern. Eine weitere
Möglichkeit ist die Verwendung einer B-Baum-Struktur, die einen dynamischen,
balancierten Indexbaum darstellt. Bei allen Zugriffsstrukturen muss jedoch der
verfügbare Arbeitsspeicher auf dem mobilen Gerät berücksichtigt werden.
Natürlich ist bei einer Implementierung wieder die Leistungsfähigkeit der Hardware
und das Einsatzszenario zu beachten, so dass gegebenenfalls der Funktionsumfang des
Datenbanksystems eingeschränkt werden muss, um eine akzeptable Performance zu erreichen. Neben den bereits aufgezählten Erweiterungsmöglichkeiten für die smartDB
ist die Portierung auf eine andere Plattform zu überlegen, weil Personal Java und
Embedded Java durch die Java 2 Micro Edition (Java 2 ME) ergänzt werden. Java 2
ME ist die Plattform der Zukunft, da sie von zahlreichen Herstellern mobiler Geräte
schon unterstützt wird oder die Entwicklung von Anwendungen mit Java 2 ME forciert
wird. Auch wäre eine Portierung auf C/C++ zu überlegen, weil eine Implementierung
des Datenbanksystems in einer systemnahen Programmiersprache eine bessere Performance bieten könnte. Die Entscheidung für C/C++ hat jedoch den Nachteil, dass die
Plattformunabhängigkeit von Java verloren geht. Eine Implementierung der smartDB
in C/C++ existiert zur Zeit nur in Ansätzen für den Pocket PC.
Kapitel 4
Implementierungsarbeiten
Anschließend an die vorangegangene Diskussion der Funktionalitäten der smartDB
wurden einige Aspekte ausgewählt und implementiert. Aus folgenden Gründen wurde
eine Portierung der smartDB auf die Java 2 Micro Edition (Java 2 ME) vorgenommen:
• Die Java 2 ME wird von vielen aktuellen und fast allen neuentwickelten mobilen
Geräten, unabhängig vom Betriebssystem, unterstützt.
• Die Mehrheit der mobilen Datenbanksysteme ist vorwiegend für den Einsatz auf
PDAs und Smartphones gedacht. Durch die steigende Leistungsfähigkeit der mobilen Endgeräte, insbesondere der Handys, eröffnet sich ein neuer Markt auf dem
bislang nur wenige Datenbanksysteme existieren.
• Gegenüber den teureren Handhelds und Smartphones sind Mobiltelefone heutzutage in der Bevölkerung wesentlich stärker verbreitet. Infolgedessen kann jeder
Nutzer sein Handy z.B. auf Messen, Ausstellungen oder in Museen als mobiles
Informationssystem nutzen.
• Dieser Bedarf für eine mobile Handydatenbank geht einher mit dem xGuideProjekt (siehe [fGDR]), das ein mobiles Messeinformationssystem auf allen mobilen Plattformen (PDA, Smartphone und Handy) bereitstellen will.
Für eine größtmögliche Kompatibilität mit den mobilen Geräten wurde die Java 2
ME (CLDC 1.0/MIDP 1.0) für die Portierung der smartDB ausgewählt. Dazu erfolgte einer Neuimplementierung der benötigten Funktionen mittels der Java 2 ME, bei
der man sich an den vorhandenen Funktionalitäten und den Einschränkungen der gewählten Plattform orientieren muss. Zusätzlich wurden einige neue Features bei der
Implementierung hinzugefügt. Die Details zur Java 2 Micro Edition kann man dem
nachfolgenden Abschnitt entnehmen. Folglich können alle Mobiltelefone, Smartphones
und Handhelds, die die entsprechenden Java ME Profile unterstützten, die smartDB
verwenden. Dazu zählen z.B. alle Smartphones mit Symbian OS 6.0 oder höher, Palm
PDAs ab Palm OS 5.2 unter Verwendung des IBM WebSphere Micro Environments
(WME) sowie die meisten neueren Handys.
38
KAPITEL 4. IMPLEMENTIERUNGSARBEITEN
4.1
39
Java 2 Micro Edition
Auf Grundlage der Java 2 Plattform wurden von Sun Microsystems verschiedene JavaEditionen entsprechend dem Einsatzgebiet entwickelt:
• die Java 2 Enterprise Edition (J2EE) für Server-Anwendungen
• die Java 2 Standard Edition (J2SE) für Desktop-Rechner
• die Java 2 Micro Edition (J2ME) für kleine, mobile Geräte und eingebettete
Systeme (z.B. Mobiltelefone)
• die Java Card Spezifikation für Smart Cards und andere Mini-Geräte
Die J2ME Technologie unterscheidet zwei Hauptkomponenten: Konfigurationen und
Profile. Eine Konfiguration ist eine Spezifikation, die eine Java Virtual Machine (JVM)
und eine grundlegende Menge von APIs für eine bestimmte Geräteklasse beschreibt.
Ein Profil ist eine Spezifikation, die die darunter liegende Konfiguration nutzt und die
vorhandenen APIs erweitert, um eine komplette Laufzeitumgebung für ein spezielles
Gerät bereitzustellen. Beispielsweise ist das UserInterface für ein Gerät profilspezifisch.
Darüber hinaus können die Profile in Abhängigkeit von der Konfiguration durch weitere optionale Pakete ergänzt werden. Die Abbildung 4.1 zeigt die Architektur der
Java 2 Micro Edition, wobei zwischen zwei Klassen unterschieden wird. Im Rahmen
dieser Studienarbeit ist insbesondere die Klasse mit den in Abbildung 4.1 eingerahmten Komponenten für die Portierung der smartDB auf ein Handy interessant. Weitere
Details zur Java 2 Micro Edition kann man [Suna] entnehmen.
Abbildung 4.1: Architektur der Java 2 Micro Edition
KAPITEL 4. IMPLEMENTIERUNGSARBEITEN
4.1.1
40
Konfigurationen und Profile
• Die Connected Device Configuration (CDC) ist eine Spezifikation für mobile Geräte mit viel Speicher und großer Rechenleistung (z.B. High-End-PDAs, Telematik, Set-Top-Boxen, Netzwerkdrucker und Router). Diese Geräte haben eine
ständige Netzwerkverbindung, 32-Bit-Prozessoren und minimal 2 MB verfügbaren Speicher für Java. Die Compact Virtual Machine (CVM) ist eine optimierte
JVM, die von CDC genutzt wird.
• Das Foundation Profile ist eine auf CDC aufbauende Spezifikation, die zusätzliche Klassen und Schnittstellen hinzufügt, aber keine APIs für die Benutzeroberfläche, eine dauerhafte Speicherung und die Anwendungslebensdauer. Die
fehlenden APIs werden durch weitere Profile wie das Personal Basis Profile
mit einem leichtgewichtigen GUI und das Personal Profile mit vollem AWTSupport ergänzt. Ferner kann man die Funktionalität noch mit optionalen Paketen für RMI und JDBC erweitern. Für weitere Informationen zu CDC sei auf
[Sun03b] verwiesen.
• Die Connected Limited Device Configuration (CLDC) ist eine Spezifikation für Geräte mit 160 kB bis 512 kB Speicher für Java und begrenzten,
zeitweilig unterbrochenen Netzwerkverbindungen. Diese Geräte haben eine eingeschränkte Rechenleistung (16-Bit- oder 32-Bit-Prozessor), wenig Speicher, limitierte graphische Funktionen und sind oft batteriebetrieben (z.B. Mobiltelefone, Pager und Low-End-Organizer). Die Kilobyte Virtual Machine (KVM) ist
eine in ihrer Leistungsfähigkeit reduzierte, speziell für kleine Geräte konzipierte JVM. Sie unterstützt einige APIs für grundlegende Anwendungsdienste. Die
APIs sind Minimalversionen der J2SE-Pakete java.io, java.lang und java.util sowie javax.microedition.io für Netzwerkverbindungen.
• Das Mobile Information Device Profile (MIDP) ist die Spezifikation einer
Schicht über CLDC, die APIs für die Anwendungslebensdauer, die Benutzeroberfläche, den Netzwerkbetrieb und eine dauerhafte Speicherung hinzufügt. Als
optionale Pakete können z.B. das Wireless Messaging API, das Mobile Media
API, das Location API und das Bluetooth API eingebunden werden. Eine Liste
aller optionalen Pakete findet man bei den Java Specification Requests (JSR) for
J2ME unter [Sunb].
4.1.2
Details zu CLDC und MIDP
Die J2ME hat einige Einschränkungen im Vergleich zur J2SE. Es gibt verschiedene
Versionen von CLDC und MIDP. Die Versionen sind aber abwärtskompatibel. In CLDC
1.0 gibt es folgende Restriktionen im Vergleich zur J2SE:
• keine Unterstützung von Gleitkommazahlen (Float, Double) auf Grund fehlender
Hardwareunterstützung
• eingeschränkte Fehlerbehandlung auf Grund sehr gerätespezifischer Fehlerbedingungen und Speichermangel
KAPITEL 4. IMPLEMENTIERUNGSARBEITEN
41
• kein Java Native Interface (JNI) wegen Sicherheits- und Speicherproblemen
• keine Methode Object.finalize() und Weak References für eine Vereinfachung
der Garbage Collection
• keine Reflection und Serialisierung von Objekten
• keine nutzerdefinierten Class Loader da stark geräteabhängig
• keine Thread Groups und Daemon Threads
• keine Klassenverifizierung im J2ME-Programm, sondern eine Zweiteilung in den
Preverifier nach dem Kompilieren und eine leichtere Runtime-Verifikation
Beim Kompilieren muss Bytecode für die Java-Version 1.1 erzeugt und die richtigen
Bootklassen eingebunden werden. Bei der Programmausführung werden gewöhnliche
Java-Programme von der JVM auf konsistenten Bytecode geprüft. Dieser Prozess erfolgt in zwei Phasen, da die Geräte mit der KVM nur geringe Ressourcen haben. Es
wird eine erste Pre-Verifizierung (Bytecode-Erweiterung um StackMap-Attribute) auf
dem Entwicklungsrechner durchgeführt und eine zweite Runtime-Verifizierung (schnell
und speichersparend) auf dem mobilen Gerät vorgenommen.
Außerdem sind in CLDC 1.0 als Speicheranforderungen 128 kB nichtflüchtiger Speicher für die JVM und die CLDC-Bibliotheken sowie 32 kB flüchtiger Speicher für die
Java-Runtime und die Objekte festgelegt. In CLDC 1.1 wurden einige Überarbeitungen
vorgenommen und die Unterstützung von Gleitkommazahlen sowie Weak References
hinzugefügt. Deswegen wurde der minimale nichtflüchtige Speicher auf 160 kB erhöht.
Weitere Fakten dazu kann man in den CLDC-Spezifikationen [Sun00a, Sun03a] finden.
In MIDP 1.0 sind folgende Minimalanforderungen an die Hardware definiert:
• Displaygröße mit 96 x 54 Pixeln, 1 Bit Farbtiefe und Pixelshape 1:1
• Telefontastatur, Computertastatur oder Touchscreen als Eingabemöglichkeit
• drahtlose, bidirektionale und gegebenenfalls unterbrochene Netzwerkverbindung
mit limitierter Bandbreite
• 128 kB nichtflüchtiger Speicher (ROM/Flash) für die MIDP-Komponenten
• 8 kB nichtflüchtiger Speicher für die dauerhafte Datenspeicherung
• 32 kB flüchtiger Speicher (RAM) für die Java-Runtime
Auf MIDP basierende Anwendungen unterstützen folgende Features:
• minimaler Kernel zum Hardwaremanagement (z.B. Handling von Interrupts, Exceptions, Scheduling)
• Systemfunktionen (z.B. Abfragen von Systemeigenschaften, Auslesen von Ressourcendateien)
• Timer für die Verzögerung und Planung von Aktivitäten
KAPITEL 4. IMPLEMENTIERUNGSARBEITEN
42
• Netzwerkverbindungen durch Verwendung einer Untermenge des HTTP-Protokolls 1.1 und Implementierung mit TCP/IP, WAP oder iMode
• High-Level-APIs (GUI-Portierung auf verschiedene Geräte möglich) und LowLevel-APIs (direkte Displayänderungen möglich) für die Entwicklung von Benutzeroberflächen
• dauerhafte Datenspeicherung (siehe Abschnitt Record Management System)
• Anwendungsmanagement (siehe Abschnitt MIDlets)
In MIDP 2.0 wurden für Formulare und Spiele einige Erweiterungen beim User Interface vorgenommen (z.B. neues Formularlayout, neue Formularelemente und OffscreenRendering möglich). Zudem wurde eine einfache Soundunterstützung als Untermenge
des Mobile Media APIs ergänzt. Die Netzwerkfähigkeiten wurden durch verschlüsselte
Verbindungen mit HTTPS verbessert. Die Geräte müssen einen „Over the Air“-Zugriff
(OTA) und eine Rechtevergabe für MIDlet-Suites ermöglichen. MIDlet-Suites können
mit Hilfe des MIDP X.509 Zertifikats signiert und authentifiziert werden. Daneben
wurde der minimale nichtflüchtige Speicher auf 256 kB erhöht. Zusätzliche Einzelheiten stehen in den MIDP-Spezifikationen [Sun00b, Sun02].
4.1.3
Record Management System – eine einfache Datenbank
Das Record Management System (RMS) ist eine einfache record-orientierte Datenbank,
um die Anwendungsdaten dauerhaft zu speichern. Es kann von einem mobilen Datenbanksystem oder von einem Anwendungsprogramm zur Datenspeicherung verwendet
werden. Das RMS wird häufig für die Speicherung von kleinen Datenmengen (z.B.
Spielständen) eingesetzt.
Ein RecordStore besteht aus einer Sammlung von Records, die bei mehrfachen MIDletAufrufen persistent bleiben. Die RecordStores werden plattformabhängig irgendwo im
Speicher abgelegt. MIDlets können mehrere RecordStores mit eindeutig identifizierenden Namen innerhalb einer MIDlet-Suite erzeugen und nur auf diese zugreifen. Erst
ab MIDP 2.0 kann ein MIDlet einem MIDlet aus einer anderen MIDlet-Suite Daten
freigeben. Beim Entfernen einer MIDlet-Suite werden alle zugehörigen RecordStores
gelöscht. Es gibt keine Locking-Operationen für parallele Zugriffe, da alle einzelnen
Operationen atomar, synchron und serialisiert sind. Ein RecordStore hat einen Zeitstempel und eine Versionsnummer. Das Lesen und Schreiben in einen RecordStore ist
sehr langsam, da die Zugriffszeiten in Abhängigkeit von den Geräten zwischen 50 ms
und 1000 ms liegen. Eine Übersicht dazu findet man unter [dUD]. Ein weiteres Problem
ist die maximale Größe eines RecordStores. Sie ist geräteabhängig und liegt meist bei
64 kB oder weniger. Darum sollte man möglichst kleine Datenblöcke verwenden oder
ganz darauf verzichten.
Die einzelnen Records sind ByteArrays, auf die mit InputStreams und OutputStreams zugegriffen wird. Sie werden über eine RecordID als Primärschlüssel eindeutig
identifiziert. Die Records können mit einem RecordFilter gefiltert und mit einem RecordComparator sortiert werden. Indizes werden mit Hilfe einer RecordEnumeration
definiert.
KAPITEL 4. IMPLEMENTIERUNGSARBEITEN
4.1.4
43
MIDlets – die MIDP-Anwendungen
Ein MIDlet ist eine MIDP-Anwendung, die in einer SandBox-Umgebung ausgeführt
wird. Es besitzt keine main()-Methode und ist einem Applet ähnlich. Das MIDlet kann
auf keine Dateien außerhalb des eigenen Java-Archivs (JAR) zugreifen. Die JAR-Datei
enthält eine MIDlet-Suite mit einem oder mehreren MIDlets, die untereinander interagieren können. Außerdem sind in der JAR-Datei ein Manifest zur Beschreibung des
Archivinhaltes, die von den MIDlets exklusiv bzw. gemeinsam genutzten Klassen sowie
die Ressourcendateien enthalten. Das Manifest ordnet jedem MIDlet, einen Namen,
ein Icon und die zugehörigen Klassen zu. Es muss Informationen über den JAR-Inhalt
wie die Namen, die Versionen, die Lieferanten und die Nummern der MIDlets mit entsprechender Startklasse sowie die CLDC- und MIDP-Versionen enthalten. Ein MIDlet
kann sich während seines Lebenszyklusses in folgenden Zuständen befinden:
• active – interagiert gerade mit dem Benutzer
• paused – wird gerade nicht genutzt bzw. wurde gerade erzeugt
• destroyed – hat alle Ressourcen freigegeben bzw. eine Exception ist aufgetreten
Jedes Gerät hat eine Application Management Software (AMS), die sich um die Installation, die Ausführung, die Deinstallation und die Nutzerinteraktion mit der MIDletSuite kümmert. Die AMS liest die benötigten Attribute aus dem Manifest und dem
Application Descriptor aus. Der Java Application Descriptor (*.jad-Datei) wird von
der AMS zur MIDlet-Verwaltung genutzt und kann konfigurations- und anwendungsspezifische Parameter enthalten. Er muss als Informationen die Namen, die Versionen,
die Lieferanten und die Nummern der MIDlets sowie die URL und die Größe des JavaArchivs in Bytes enthalten.
4.2
Anforderungen und Restriktionen bei der Programmierung der smartDB mit J2ME
Die Entwicklung der smartDB für J2ME verlangt vor allem eine effiziente und speicherschonende Implementierung, da die mobile Handydatenbank möglichst die gesamte
Bandbreite an Geräten von der Einstiegsklasse bis hin zur Profiklasse abdecken soll.
Geräte der Einstiegsklasse sind in der Regel dadurch gekennzeichnet, dass die maximale Heapgröße auf 150 kB und die maximale Größe der JAR-Datei auf 64 kB begrenzt
sind. Diese Werte sind jedoch von der entsprechenden Gerätespezifikationen abhängig und werden sich mit zukünftigen Gerätegenerationen sicherlich weiter erhöhen.
Deshalb sind für eine mobile Datenbank schon enge Grenzen für die Größe des Datenbanksystems und den Umfang der Daten gesetzt worden. Des Weiteren kann man
einen Großteil des verfügbaren Speichers auf dem mobilen Gerät wegen der schlechten RMS-Zugriffszeiten und der begrenzten RecordStore-Größe so gut wie gar nicht
verwenden. Als Ergebnis dieser Voraussetzungen bleibt nur die Implementierung eines elementaren Datenbanksystems, das mit fortschreitender Hardwareentwicklung in
seiner Leistungsfähigkeit erweitert wird.
KAPITEL 4. IMPLEMENTIERUNGSARBEITEN
44
• Daher sollte ein möglichst geringer Speicherverbrauch bei der Implementierung
durch wenige Klassen, einfache Variablentypen anstatt Objekten, keine Schnittstellen, nur absolut notwendigen Methoden und effizienten Datenstrukturen Rechnung getragen werden.
• Die Verwendung eines File Shrinkers & Code Obfuscators ist fast unabdingbar.
Dadurch wird die Dateigröße der Java-Klassen verringert. Kommentare, unbenutzte Klassen, Felder, Methoden und Attribute werden erkannt und entfernt.
Ferner erfolgt eine Umbenennung der übrig gebliebenen Klassen, Felder und Methoden mit kurzen Namen (z.B. a.class anstatt Database.class).
• Im Hinblick auf die langsamen Prozessoren in mobilen Geräten sollte man alle rechenintensiven Operationen möglichst gering halten, indem man Objekte
wiederverwendet, lokale Variablen anstatt Klassen-/Objektvariablen gebraucht
sowie bitweise Shiftoperationen anstatt Multiplikationen und Divisionen nutzt.
Auf Verkettungen von String-Objekten und Exceptions sollte man verzichten und
durch eine elegante Programmierung umgehen. Den Garbage Collector sollte man
dadurch unterstützen, dass man die Referenzen von nicht mehr benötigten Objekten auf Null setzt (für eine schnellere Speicherfreigabe) oder den Garbage
Collector an passenden Stellen manuell aufruft.
• Der Datenverkehr zwischen dem mobilen Gerät und der Basisstation sollte auf
Grund der limitierten Bandbreite klein gehalten werden. Dieser Aspekt ist vorläufig nicht weiter relevant, da bei der smartDB mit J2ME nur die Datenverwaltung
und effiziente Anfragen im Vordergrund stehen.
4.2.1
JOIN-Implementierung – ja oder nein?
Bevor man einen Verbund für die Handydatenbank implementiert, ist eine KostenNutzen-Betrachtung sinnvoll. Zu diesem Zweck muss man sich folgende Fragen stellen:
• Welchen Aufwand hat die Implementierung eines JOINs?
Der Verbund ist eine teure Operation und für die effiziente Ausführung einer Anfrage müsste man eine Anfrageoptimierung programmieren. Ein Beispiel für die
Kosten bei optimierter und nicht optimierter Anfrageauswertung kann man in
[HS99] im „Kapitel 7.2 Motivierende Beispiele“nachlesen. Diese Beispiele zeigen,
dass die Implementierung eines Verbundes in der Regel nur in Verbindung mit
einer Anfrageoptimierung sinnvoll ist. Ohne eine Optimierung wäre der Verbund
auf Grund der eingeschränkten Ressourcen eines Handys (schwacher Prozessor
und wenig Speicher) problematisch. Folglich ist die Implementierung eines Verbundes und der zugehörigen Anfrageoptimierung aufwändig.
• Welche Vorteile bringt ein JOIN für die Handydatenbank?
Ein Verbund hat nur einen Vorteil, wenn man dadurch Datenredundanz vermeiden kann. Bei den geringen Datenmengen auf einem mobilen Gerät ist das weniger
wichtig. Deshalb ist zu überlegen, ob ein zusätzlicher Overhead beim DBMS, für
einen nicht oft gebrauchten Verbund, gerechtfertigt ist.
KAPITEL 4. IMPLEMENTIERUNGSARBEITEN
45
• Wie viele Tabellen soll man beim JOIN miteinander verknüpfen können?
Beliebig viele Tabellen können wegen Speicherknappheit nicht miteinander verknüpft werden. Des Weiteren wird bei vielen auszuführenden Verbundoperationen
der schwache Prozessor stark belastet. Darum muss man in Abhängigkeit vom
Gerät die Verbundanzahl begrenzen oder bei ganz schwachen Geräten ganz auf
Verbunde verzichten.
• Welche Verbundalgorithmen kann man verwenden?
Für die Berechnung eines JOINs zweier Relationen gibt es mehrere Techniken:
– Beim Hash-Join wird die kleinere Relation in einer Hashtabelle gespeichert
und die Tupel der anderen Relation finden ihre Vergleichspartner für die Verknüpfung über eine Hashfunktion. Der Hash-Join ist bei geeigneter Wahl der
Hashfunktion und einem hinreichendem Arbeitsspeicher am effizientesten.
Dieses Verfahren ist allerdings nur bei kleinen Datenmengen auf dem Handy
möglich, da die Speicherkapazitäten gering sind.
– Für den Merge-Join werden die beiden Relationen in der vorgegebenen
Tupelreihenfolge durchlaufen und miteinander verknüpft. Als Vorbereitung
müssen beide Relationen nach dem gleichen Sortierkriterium geordnet sein.
Die Details zu den verschiedenen Sortierverfahren kann man dem nächsten
Abschnitt entnehmen. Die Sortierung der Relationen hat den größten Aufwand und ist bei großen Datenmengen auf dem Handy wegen schwacher
Prozessoren sehr langwierig. Der Merge-Join ist am günstigsten, wenn eine
oder beide Relationen bereits sortiert vorliegen.
– Beim Nested-Loop-Join werden die beiden Relationen durch die Abarbeitung
zweier ineinander geschachtelter Schleifen verknüpft. Der Nested-Loop-Join
benötigt die meisten Vergleiche, ist aber für alle Verbundarten geeignet.
• Benötigt man einen Verbund und wenn ja welchen JOIN-Typ verwendet man für
die smartDB mit J2ME?
Auf den JOIN wurde erst einmal verzichtet, weil der Aufwand für die Implementierung eines Verbundes groß ist und die Ressourcen für die mobile Handydatenbank begrenzt sind. Außerdem war ein Ziel bei der Programmierung der
smartDB mit J2ME ein sehr kleines Datenbanksystem zu programmieren, damit
das Java-Archiv möglichst viele Nutzdaten aufnehmen kann. Ferner erfordern die
bisherigen Anwendungsszenarien nur eine einfache Datenverwaltung, so dass ein
Verbund nur unbenötigte Ressourcen belegen würde. Falls der Verbund trotzdem
notwendig ist, kann das auch leicht der Anwendungsprogrammierer realisieren,
indem er einzelne Anfragen an verschiedene Tabellen stellt und die Ergebnismengen mittels Nested-Loop-Join verknüpft.
4.2.2
Varianten von Sortierverfahren
In diesem Abschnitt sollen verschiedene Sortierverfahren betrachtet werden, die man
eventuell für die Sortierung der Daten verwenden kann.
KAPITEL 4. IMPLEMENTIERUNGSARBEITEN
46
• Externe Sortierverfahren wie z.B. das Sort-Merge-Verfahren aus der klassischen
Datenbanktechnik sind für die smartDB mit J2ME nicht verwendbar, weil man
nur lesend auf die Tabellendaten zugreifen kann. Darüber hinaus steht kein Dateisystem zur Zwischenspeicherung zur Verfügung bzw. das RMS ist nur beschränkt
und für kleine Datenmengen nutzbar. Folglich bleiben nur Hauptspeicheralgorithmen.
• Ein schnelles Sortierverfahren das im Hauptspeicher arbeitet ist QuickSort. Dieser Sortieralgorithmus ist sehr gut für kleine Datenmengen auf dem mobilen Gerät einsetzbar. Im Gegensatz dazu ist bei großen Datenmengen der zusätzliche
Aufwand an Speicherplatz für die Rekursionsaufrufe zu groß, so dass man dieses Verfahren und andere rekursive Verfahren wie MergeSort nur in bestimmen
Einsatzszenarien benutzen kann.
• Eine andere Algorithmenklasse sind die elementaren Sortierverfahren wie z.B.
InsertSort. Dieses Verfahren setzt man am besten auf mobilen Geräten mit viel
Speicher ein, da es neben dem Speicherplatz für die Originaldaten noch einmal
den selben Speicherplatz für die Ergebnisdaten zum Einsortieren benötigt. Bei
Handys mit geringen Speicherkapazitäten ist doppelter Speicherplatzbedarf ein
Problem.
• Folglich sind für bestimmte Geräteklassen Sortieralgorithmen notwendig, die keinen oder nur sehr wenig zusätzlichen Speicherplatz für die Sortierung verlangen
und ohne Rekursionen arbeiten. Ein Beispiel dafür ist SelectSort, da nur für die
Suche des minimalen Elementes zusätzlicher Speicherplatz gebraucht wird. Dieser
Aspekt ist hinsichtlich der knappen Ressourcen der Handys wichtig.
• Ein weiterer Algorithmus, der kaum zusätzlichen Speicherplatz beansprucht, ist
HeapSort. Außerdem hat HeapSort eine logarithmische Zeitkomplexität für die
Sortierung gegenüber einer quadratischen Zeitkomplexität bei SelectSort und ermöglicht deshalb eine schnellere Sortierung. Dieser Gesichtspunkt ist bei den
Handys mit langsamen Prozessoren zu beachten.
Für die smartDB mit Java 2 ME wurden der SelectSort- und der HeapSort-Algorithmus
implementiert.
4.2.3
Probleme und Lösungen bei großen Datenmengen
Bei großen Datenmengen können Schwierigkeiten auftreten, da die Speicherkapazitäten
von mobilen Geräten und insbesondere des Heapspeichers begrenzt sind. Eine einfache
Lösung dafür ist die Daten der Tabelle nur teilweise einzulesen. Diese Maßnahme hat
den Vorteil, dass man Speicherplatz einspart. Der Nachteil ist die vergrößerte Anfragezeit. Man muss mehrfach auf die Ressourcendateien im Java-Archiv Zugriff nehmen,
weil die Daten nicht im Hauptspeicher liegen. Das fällt bei Handys mit ihren schwachen Prozessoren besonders auf. Es kann ebenfalls Probleme geben, wenn alle Tupel
der Tabelle sortiert oder Duplikate eliminiert werden sollen. Das Datenvolumen ist begrenzt, da die Größe der JAR-Datei meist auf 64 kB limitiert ist. Demzufolge kann
KAPITEL 4. IMPLEMENTIERUNGSARBEITEN
47
man die Daten meistens komplett in den Heapspeicher von in der Regel 150 kB einlesen. Außerdem muss man noch den Speicherbedarf des Datenbanksystems und des
Anwendungsprogramms im JAR abziehen. Das Ziel bei der Entwicklung der smartDB
mit Java 2 ME war ein möglichst kleines DBMS mit den notwendigsten Funktionalitäten für die begrenzten Handyressourcen zu entwickeln. Das programmierte DBMS hat
eine Größe von circa 12 kB im JAR. Folglich hat man noch rund 50 kB für Daten und
Anwendungsprogramme im JAR zur Verfügung. Die Daten im Java-Archiv werden auf
circa ein Drittel der Originalgröße komprimiert, so dass man ungefähr 135 kB Daten
unterbringen könnte.
Eine andere Alternative bei zu kleinem Speicher wäre die Daten situationsabhängig zu
laden. Dazu müsste man sich stets über Wireless LAN, Bluetooth, UMTS, GPRS, usw.
die aktuellen Daten herunterladen. Diese Vorgehensweise verursacht wiederum Kommunikationskosten. Bei schlechten Empfangsbedingungen sind Online-Zugriffe schwierig.
Bei der J2ME werden HTTP-Zugriffe auf einen Webserver ermöglicht, so dass man sich
die entsprechenden JAR-Dateien herunterladen und installieren kann.
Eine weitere Möglichkeit zum Sparen von Speicherplatz ist die Datenreduktion, indem
man versucht den Wertebereich der Datentypen besser auszunutzen. Beispielsweise liegen Integerwerte zwischen -2147483648 und 2147483647. Falls man nur positive Werte
benötigt, könnte man die vorzeichenbehafteten Zahlen auf den vorzeichenlosen Wertebereich zwischen 0 und 4294967295 abbilden. Dadurch könnte man in bestimmten
Anwendungsszenarien auf 8 Byte Longzahlen verzichten und mit 4 Byte Integerzahlen
arbeiten.
Mit der zukünftigen Entwicklung immer leistungsfähiger, mobiler Hardware, die schon
teilweise in Smartphones und High-End-PDAs eingebaut wird, sollten sich die Restriktionen für die mobilen Anwendungen verringern.
4.3
Datentypen und Struktur des Dateiformats
Die ursprüngliche smartDB und das Dateiformat unterstützen als Datentypen Byte,
Short, Integer, Long, Float, Double, Boolean, String und ByteArray. Die smartDB mit
J2ME basiert auf der Konfiguration CLDC 1.0 und dem Profil MIDP 1.0. Deshalb
wurden die gemäß der Spezifikation unterstützten Datentypen mit den entsprechenden
Vergleichsfunktionen (siehe Klasse Type.java) implementiert. In Abhängigkeit vom
Datentyp stehen folgende Vergleichsoperationen zur Verfügung:
• Byte, Short, Integer und Long – Equal, NotEqual, LessThan, LessThanEqual,
GreaterThan und GreaterThanEqual
• Boolean – Equal und NotEqual
• String – Equal, NotEqual, LessThan, LessThanEqual, GreaterThan, GreaterThanEqual, StartsWith und Contains
Falls man Gleitkommazahlen nicht umgehen kann, muss man sie mittels Festkommazahlen simulieren oder eine weitere Datenbankversion für CLDC 1.1 und MIDP 2.0
programmieren.
KAPITEL 4. IMPLEMENTIERUNGSARBEITEN
48
Die einzelnen Tabellen der Datenbank sind als Ressourcendateien im Java-Archiv enthalten. Die Ressourcendateien haben die Bezeichnung Tabellenname.Erweiterung (z.B.
TABLE.STD), wobei Datendateien die Erweiterung STD und Indexdateien die Erweiterung STI haben. Die Tabellendaten sind im Binärformat in den Dateien abgespeichert
und kompatibel mit dem Dateiformat der smartDB mit Personal Java. Die Kompatibilität des Dateiformates ist wichtig, damit man auf allen mobilen Geräten und Plattformen ein einheitliches Binärformat verwenden kann. Dieser Ansatz vereinfacht auch
die Anwendungsentwicklung. Die Tabelle 4.1 gibt einen Überblick über das Dateiformat der Datendateien mit 64 Byte Tabellenheader, Tabellenschema und Tabellendaten.
Das Dateiformat der Indexdateien ist ähnlich aufgebaut. Es enthält einen Adressindex
und kann mehrere Spaltenindizes enthalten. Der Adressindex ist unsortiert und enthält alle Recordpositionen in der Datei. Die Spaltenindizes sind in der entsprechenden
logischen Reihenfolge der Records sortiert. Die Indexdateien werden von der smartDB
mit J2ME wegen Speichermangel auf den Handys zunächst nicht verwendet. Jedoch
wird der benötigte Adressindex mit den Bytepositionen der Tupel beim Auslesen der
Datendateien erzeugt. Indexstrukturen über andere Tabellenspalten werden zur Zeit
noch nicht erzeugt, um Speicherplatz zu sparen.
4.4
Definition und Ausführung von Anfragen
Die Anfragen an die Datenbank sind SQL-ähnlich gehalten. Sie werden nicht als String
übergeben und anschließend geparst, sondern mittels Methodenaufrufen für die einzelnen Anfragekomponenten konstruiert (siehe Klasse Query.java), da die mobilen Geräte in ihrer Leistungsfähigkeit eingeschränkt sind. Dadurch wird eine schnellere Anfrageverarbeitung ermöglicht. Die Methode setSelect (boolean distinct, String[]
resultcolumns) setzt die zu projizierenden Spalten für das Anfrageergebnis und legt
fest, ob Duplikateliminierung genutzt wird oder nicht. Mit Hilfe der Methode setFrom
(String querytable) wird die Tabelle für die Anfrage bestimmt. Für die Definition
der Selektionsbedingungen existieren die Methoden setWhereLogicOperation (int
logicoperation) und setWhereIgnoreCaseStringCompare (boolean ignorecase).
Die erste Methode setzt entweder die logische Operation AND = 1 oder OR = 2 (als Integerwert codiert) mit der alle Selektionsbedingungen verknüpft werden. Die zweite
Methode definiert, ob bei Stringvergleichen die Groß- und Kleinschreibung ignoriert
werden soll. Die Selektionsbedingungen der Anfrage werden über Methoden für jeden
einzelnen Datentyp (Byte, Short, Integer, Long, Boolean und String) festgelegt. Dazu kann man in jeder Methode mehrere Vergleichsspalten, Vergleichsoperationen und
Vergleichswerte für den selben Datentyp angeben. Für Integerwerte lautet die Methode z.B. setWhereInt (String[] comparecolumns, int[] compareoperations,
int[] comparevalues). Man muss dabei beachten, dass die Dimension aller übergebenen Felder gleich ist. Die Anzahl der Selektionsbedingungen ist beliebig groß und wird
nur vom Wertebereich des Datentyps Integer begrenzt. Ferner sind nur Konstantenselektionen definierbar. Durch Kombination zweier Selektionsbedingungen erhält man eine Bereichselektion. Es gibt keine Verbundbedingungen, weil kein Verbund unterstützt
wird. Die Methode setOrderBy (boolean ascending, String[] sortcolumns) bestimmt die Tabellenspalten für die Sortierung und die Sortierreihenfolge.
KAPITEL 4. IMPLEMENTIERUNGSARBEITEN
Byteposition
00
20
24
40
44
48
52
-
19
23
39
43
47
51
63
64 - 67
68 - 71
72 - x0
x1 - x2
x3 - x4
x5 - x6
x7 - x8
x9 - xa
xb - xx
y0
y1 - y2
y3 - y4
y5 - y6
y7 - y8
y9 - ya
yb - yc
yd
ye - yy
Feldname
Tabellenheader
Signatur der Datenbank
Länge des Tabellennamens
Tabellenname
Tabellenversion
Recordanzahl in Datei
Dateigröße
frei
Tabellenschema
Länge des Tabellenschemas
Spaltenanzahl der Tabelle
1. Spalte - Name
1. Spalte - Datentyp
1. Spalte - Datentypgröße
2. Spalte - Name
2. Spalte - Datentyp
2. Spalte - Datentypgröße
...
Tabellendaten
1. Tupel Recordtyp
1. Tupel - Datenlänge =
feste Länge + variable Länge
1. Tupel - Wert der 1. Spalte mit
fester Länge
...
1. Tupel - Länge der 1. Spalte mit
variabler Länge
1. Tupel - Wert der 1. Spalte mit
variabler Länge
...
2. Tupel Recordtyp
...
49
Beispiel
SDB3.0JAVA2ME
8
TestData
1
500
25190
62
4
Name
1 = String
-1 = variabel
Groesse
2 = Int
4 Byte = fest
...
1 = Daten
47
50000
...
13
Heinz-Dieter0
...
1 = Daten
...
Tabelle 4.1: Dateiformat der Datendateien
KAPITEL 4. IMPLEMENTIERUNGSARBEITEN
50
Nachdem man eine Datenbank erzeugt hat, kann man zur Auswertung einer Anfrage
die Methode executeQuery (Query query) der Datenbank aufrufen. Diese Funktion
berechnet das Anfrageergebnis und liefert das entsprechende ResultSet zurück (siehe
Klasse Database.java). Dazu wird auf die für die Anfrage benötigte Tabelle zugegriffen. Danach werden die in der Anfrage für die Projektion und Sortierung angegebenen Spaltennamen auf Gültigkeit geprüft. Bei den Projektionsspalten wird getestet,
ob sie in der Tabelle vorhanden sind. Wenn Sortierattribute existieren, erfolgt eine
Kontrolle, ob sie auch in den Ergebnisspalten auftreten. Bei einem Fehler wird eine
Exception ausgelöst. Nach erfolgreicher Überprüfung wird ein ResultSet generiert und
werden die Selektionsbedingungen darauf angewendet. Zu diesem Zweck werden die
Bytepositionen der einzelnen Tupel zum ResultSet hinzugefügt und für jedes Tupel
die Selektionsbedingungen ausgewertet. Die Vergleichsergebnisse der einzelnen Selektionsbedingungen werden entsprechend der festgelegten logischen Operation (AND oder
OR) miteinander verknüpft. Falls das Ergebnis negativ ausfällt, wird die entsprechende
Byteposition des Tupels wieder aus dem ResultSet entfernt. Nachdem die relevanten
Tupel selektiert wurden, wird gegebenenfalls eine in der Anfrage definierte Sortierung
vorgenommen. Standardmäßig wird HeapSort1 als Sortieralgorithmus verwendet. Im
nächsten Schritt findet eine Eliminierung der Duplikate statt, falls das in der Anfrage
spezifiziert wurde. Wenn in der Ergebnismenge das Flag für alle Tupel gesetzt wurde,
werden vor der Sortierung bzw. der Duplikateliminierung noch die Bytepositionen aller
Tupel in das ResultSet kopiert.
4.5
Tabellendaten
Beim Benutzen einer Tabelle werden nacheinander der Tabellenheader, das Tabellenschema und die Tabellendaten aus der JAR-Datei ausgelesen. Die Metainformationen
werden in Variablen und die Tabellendaten in einem Datenpuffer gespeichert (siehe
Table.java). Die Details zu den einzelnen Tabellenfeldern sind dem Abschnitt zum
Dateiformat zu entnehmen. Beim Auslesen der Tabellendaten wird ein Adressindex
mit den Bytepositionen der einzelnen Tupel in der Tabellendatei erzeugt. Über einen
Parameter im Konstruktor der Tabelle steuert man, ob dieser Index dicht- oder dünnbesetzt sein soll. Wird als Indexparameter 1 übergeben, so wird jedes Tupel in den
Index aufgenommen. Beim Indexparameter 2 wird jedes 2. Tupel hinzugefügt, beim
Indexparameter 3 jedes 3. Tupel, usw. Durch einen dünnbesetzten Adressindex reduziert sich der Speicherverbrauch, aber man erhöht damit die Anfragezeit auf Grund
einer aufwändigeren Tupelsuche.
Des Weiteren existieren noch verschiedene Methoden für die Arbeit mit der Tabelle.
Es ist möglich die aktuelle Datenlänge und die Kapazität des Datenpuffers abzufragen, Daten zum Puffer hinzuzufügen sowie die Anzahl der Tabellenzeilen und -spalten
zu bestimmen. Der Datenpuffer ist ein ByteArray (byte[] databuffer). Den Namen, den Datentyp und die Datentypgröße zu einem Spaltenindex kann man ebenso
ermitteln wie zu einem Spaltennamen den Spaltenindex. Zum Öffnen und Einlesen
einer Ressourcendatei aus dem JAR wird die Methode InputStream filestream =
1
Alternativ kann man auch SelectSort nutzen, indem man eine kleine Änderung am Quellcode
vornimmt und das J2ME-Projekt neu compiliert.
KAPITEL 4. IMPLEMENTIERUNGSARBEITEN
51
this.getClass().getResourceAsStream("/" + filename) mit String filename
eingesetzt, da es kein Dateisystem mit entsprechenden Zugriffsmethoden gibt. Zum
Datenlesen wurden verschiedene Read-Prozeduren programmiert, die die Daten komplett, ab einer bestimmten Byteposition oder zwischen zwei Bytepositionen einlesen.
Eine Besonderheit auf einigen mobilen Geräten ist, dass der Reset des InputStreams
nicht funktioniert. Man muss zum Datenlesen von einer anderen Byteposition den InputStream schließen und wieder neu öffnen. Darüber hinaus gibt es noch einige andere
Methoden, die nicht auf allen Geräten korrekt implementiert sind.
Zur internen Verwendung beim Auslesen der zwischengepufferten Tabellendaten existieren für alle Datentypen (Byte, Short, Integer, Long, Boolean und String) Funktionen, mit denen man den Datenwert für den jeweiligen Datentyp an einer bestimmten
Position bekommen kann. Für das Auslesen von Strings gibt es die zwei Funktionen
getStringValueAsString (int position) und getStringValueAsByteArray (int
position), da bei Vergleichsoperationen der Vergleich auf einem ByteArray schneller
als auf einem String-Objekt ist.
4.6
Anfrageergebnis
Als Ergebnis einer Anfrage an eine Tabelle erhält man ein JDBC-ähnliches ResultSet,
da ein komplexes Tabellenobjekt zuviel Speicherplatz benötigt (siehe ResultSet.java).
Dadurch kann man das Anfrageergebnis nicht in einer anderen Anfrage einsetzen. Im
Konstruktor der Ergebnismenge wird geprüft, ob alle Tupel der Tabelle selektiert wurden. Wenn das der Fall ist, wird nur ein Flag gesetzt und werden nicht noch einmal alle Bytepositionen der einzelnen Tupel in das ResultSet kopiert, um Speicherplatz zu sparen. Andernfalls wird die Ergebnismenge initialisiert. Danach können die
Bytepositionen von Tupeln zum ResultSet hinzugefügt oder wieder entfernt werden.
Bei diesem Prozess wird die Ergebnismenge wenn erforderlich dynamisch vergrößert.
Die Implementierung des ResultSets orientiert sich an JDBC. Infolgedessen existieren
die Methoden beforeFirst(), afterLast(), next(), previous(), absolute (int
row) und relative (int row) zur Navigation durch das ResultSet. Um die Daten
einer Ergebnisspalte an der aktuellen Position im ResultSet zu erhalten, existieren
für alle Datentypen (Byte, Short, Integer, Long, Boolean und String) entsprechende
Funktionen, die intern die im vorhergehenden Abschnitt beschriebenen Tabellenfunktionen zum Datenlesen benutzen. Analog zur Tabelle gibt es für das Auslesen von
Strings wieder zwei Funktionen getStringColumnValueAsString (int column) und
getStringColumnValueAsByteArray (int column). Daneben sind Funktionen verfügbar, mit denen man die aktuelle Größe und die Kapazität der Ergebnismenge sowie
die Ergebnisspalten ermitteln kann.
4.7
Entwicklungsumgebung
Für die Programmierung der smartDB mit J2ME wurde folgende Software verwendet:
• Java 2 Standard Edition 1.4.2_04 SDK,
siehe http://java.sun.com/j2se/index.jsp
KAPITEL 4. IMPLEMENTIERUNGSARBEITEN
52
• Java 2 Micro Edition Wireless Toolkits 2.1 und 1.0.4_01,
siehe http://java.sun.com/j2me/index.jsp
• Eclipse 3.0 RC3, siehe http://www.eclipse.org
• EclipseME-Plugin 0.4.5 für Eclipse 3.0,
siehe http://eclipseme.sourceforge.net
• ProGuard 2.1 File Shrinker & Code Obfuscator,
siehe http://proguard.sourceforge.net
Für Kompatibilitätstests mit anderen mobilen Geräten wurden folgende Tools genutzt:
• Nokia Developers Suite 2.1 für J2ME und verschiedene Nokia SDKs für Handys,
siehe http://www.forum.nokia.com/main.html
• Siemens Mobility Toolkit 2.00.3b und verschiedene SMTK Emulator Packs,
siehe http://www.siemens-mobile.com/developer
• Sony Ericsson J2ME SDK 2.1.1 Beta,
siehe http://www.sonyericsson.com/developer
• Motorola SDK 4.1 für J2ME,
siehe http://www.motocoders.com/motorola/pcsHome.jsp
• IBM WebSphere Micro Environment für Palm OS und verschiedene Palm OS
Simulatoren, siehe http://www.palmone.com/us/developers
Kapitel 5
Performancebetrachtung und
Kompatibilitätstests
Die ursprüngliche smartDB mit Personal Java wurde schon für die Verwaltung von
mehr als 5000 Datensätzen auf einem Smartphone eingesetzt. Diese Verwendung war
möglich, da die mobilen Geräte mit Personal Java wesentlich mehr Speicher als Geräte
mit J2ME zur Verfügung haben. Um die Leistungsfähigkeit der Handydatenbank einzuschätzen, sind Testversuche auf der J2ME-Plattform notwendig. Insbesondere sind
Tests auf Anfragezeiten und Speicherverbrauch interessant, um gegebenenfalls weitere
Tuningmöglichkeiten zu finden. Dieser Test wird durch den verfügbaren Speicherplatz
auf dem mobilen Gerät, vornehmlich dem Heapspeicher, und der Datensatzgröße limitiert. Folglich muss man Testdaten erzeugen, die die vorhandenen Speicherkapazitäten
in der JAR-Datei bei der Java 2 Micro Edition berücksichtigen. Im Abschnitt Probleme und Lösungen bei großen Datenmengen wurden bereits die Heapspeichergröße
von in der Regel 150 kB und die maximale Speichergrenze von circa 135 kB unkomprimierte Nutzdaten beschrieben. Das bedeutet, dass man bei einer durchschnittlichen
Datensatzgröße von 55 Byte ungefähr 2500 Datensätze verwalten kann.
5.1
Testumgebung
Zum Testen der Funktionalitäten der smartDB mit Java 2 ME wurde eine Nutzeroberfläche programmiert (siehe Klasse SDBTestMidlet.java). Gegenüber der Entwicklung
eines User Interfaces mit der Java 2 SE gibt es einige Unterschiede. Zum einen sind
die Gestaltungsmöglichkeiten wesentlich eingeschränkter als wie beim AWT oder mit
SWING und zum anderen ist die Strategie beim Formulardesign anders. Man kann beispielsweise nur ein Befehlsfeld zum Bildschirm hinzufügen, aber keine Positionsangaben
definieren. Diese Beschränkung ist bedingt durch den Layout-Manager, auf den man
nur einen minimalen Einfluss hat. Der Layout-Manager entscheidet in Abhängigkeit
von den Visualisierungsmöglichkeiten des konkreten Gerätes, wie z.B. das Befehlsfeld
am besten positioniert wird. Deswegen vereinfacht sich die Entwicklung einer grafischen Nutzeroberfläche, da man sich nicht mehr um die konkrete Visualisierung bei
einer unüberschaubaren Vielzahl von mobilen Geräten kümmern muss. Außerdem sollte die Gestaltung der Oberfläche nutzerfreundlich sein und die Programmfunktionen
mit wenig Interaktionen realisieren.
53
KAPITEL 5. PERFORMANCE UND KOMPATIBILITÄT
54
Nach dem Start der Anwendung sieht der Nutzer ein Menü, in dem er die einzelnen
Teile einer vereinfachten SQL-Anfrage (Select, From, Where, Order By) zum Definieren auswählen kann bzw. sich über den Menüpunkt Show Query die komplette Anfrage
anzeigen lassen kann. Die Standardanfrage ist immer SELECT * FROM TABLE. Über den
Button New Query kann die Anfrage wieder neu initialisiert werden bzw. mittels der
Schaltfläche Exit das Testprogramm verlassen werden.
Im Formular SELECT kann der Anwender die zu projizierenden Spalten für das Anfrageergebnis selektieren und festlegen, ob Duplikateliminierung vorgenommen werden
soll oder nicht. Dann bestimmt er im Formular FROM die Tabelle für die Anfrage. Es
ist nur eine Tabelle verfügbar, da kein JOIN implementiert ist. Die Selektionsbedingungen werden im Dialog WHERE definiert. In diesem Fenster besteht die Möglichkeit
die einzelnen Where-Klauseln entweder alle mit AND oder alle mit OR zu verknüpfen. Zusätzlich kann man einstellen, ob bei Stringvergleichen die Groß- und Kleinschreibung
beachtet werden soll. Anschließend können die Vergleichsspalten, die Vergleichsoperationen und die Vergleichswerte getrennt nach den Datentypen Integer und String
gesetzt werden. Zu Testzwecken wurden nur diese beiden Datentypen ausgewählt. In
anderen Einsatzszenarien sind natürlich auch die anderen Typen in einer angepassten
Nutzeroberfläche verwendbar. Eine auf- bzw. absteigende Sortierreihenfolge und die
Attributliste für die Sortierung sind im Formular ORDER BY definierbar.
Im Dialog Complete Query wird die komplette Anfrage angezeigt. Falls sie korrekt ist,
kann man sie durch den Button Execute ausführen lassen bzw. wenn nicht mittels der
Schaltfläche Back zurückgehen und die Anfrage ändern. Nach der Ausführung der Anfrage sieht man im Fenster Query Result das Anfrageergebnis. Mit den Befehlsfeldern
Scroll Down und Scroll Up wird seitenweise durch die Ergebnismenge gescrollt, falls sie
mehr als 5 Einträge enthält. Diese Navigation durch das ResultSet ist notwendig, weil
die TextBox für die Ergebnisanzeige eine maximale Größe für die Anzahl der Zeichen
hat. Die Größe ist abhängig von den Geräten und liegt bei 512 Zeichen oder mehr.
Über die Buttons Exit und New Query kann der Benutzer dann das Testprogramm
verlassen bzw. eine neue Anfrage initialisieren.
Die Testumgebung demonstriert die Funktionen des DBMS und wird nur zu Testzwecken eingesetzt. Das implementierte Test User Interface verbraucht circa 5 kB im
JAR. Bei einer späteren Verwendung der smartDB mit J2ME muss das Datenbanksystem in die Anwendung integriert werden, so dass die Datenbankanfragen im Programm vor dem Nutzer verborgen bleiben. Dieser erwartet z.B. ein Suchfeld in dem
er den Suchbegriff komplett oder teilweise eingibt und nach Auswahl eines Befehlsfeldes wird ihm eine Liste mit den Ergebnissen angezeigt. In Anbetracht der vielfältigen
Geräte sind eventuell die Restriktionen der speziellen Geräte zu berücksichtigen.
5.2
Tests auf Anfragezeiten und Speicherverbrauch
Zur Beurteilung der Leistungsfähigkeit der smartDB mit J2ME wurden unterschiedlich
große Datenmengen generiert und einige Anfragen zum Testen definiert. Die Testdaten
wurden aus den Ausstellerinformationen der Computermesse Systems 2003 erzeugt,
da die existierende smartDB vorwiegend als Messeinformationssystem eingesetzt wird.
Demzufolge kann man die Leistungsfähigkeit der Handydatenbank in einem realen
KAPITEL 5. PERFORMANCE UND KOMPATIBILITÄT
55
Einsatzszenario betrachten. Entsprechend dem Dateiformat der smartDB wurde unter
Verwendung von Klassen der ursprünglichen smartDB mit Personal Java eine Tabelle
mit folgenden vier Spalten erzeugt (siehe SDBConverterJ2ME.java):
• CompanyID1 – Integerzahl zur Identifizierung der Ausstellereinträge (z.B. 1816240)
• CompanyName – String mit dem Ausstellernamen (z.B. IBM Deutschland GmbH)
• LocationPath – String mit dem Ausstellerstandort auf dem Messegelände in Kurzform (z.B. /Messe/A1/516)
• RowNumber1 – Integerzahl nur für Testzwecke (z.B. 238)
Die erzeugten Tabellen mit den Testdaten haben 500 - 3000 Datensätze, die 30 - 175 kB
Speicherplatz für die Daten benötigen. Die daraus resultierenden JAR-Dateien haben
eine Größe von 28 - 83 kB. Ein Datentupel hat eine durchschnittliche Größe von 60
Byte. Für größere Datenmengen wurden einige Datensätze dupliziert, weil die verfügbaren Messedaten zur Systems 2003 nur 1400 Tupel umfassen. Der Speicherplatzbedarf
des Datenbanksystems wird im Diagramm 5.1 dargestellt.
Abbildung 5.1: Speicherplatzverbrauch der Daten und der Java-Archive
1
Die Schlüsseleigenschaft der CompanyID ging verloren, weil für die Tests einige Datensätze dupliziert wurden. Dieser Verlust wurde durch die zusätzliche Spalte RowNumber kompensiert. Dadurch
sind auch Testversuche mit Duplikateliminierung möglich und es gibt durch jeweils zwei Integer- und
Stringspalten mehr Kombinationsmöglichkeiten für Testanfragen.
KAPITEL 5. PERFORMANCE UND KOMPATIBILITÄT
56
Zur Bestimmung der Anfragezeiten wurden in mehreren Anfragen die Datenbankoperationen für unterschiedlich große Datenmengen getestet. Die Testversuche wurden auf
einem AMD Duron 1200 MHz mit 320 MB RAM durchgeführt. Dafür wurden fünf Handyemulatoren genutzt: Sun Wireless Toolkit 2.1, Sony Ericsson T616, Siemens CX65,
Nokia 7210 und Motorola E380. Folgende sechs Anfragen wurden definiert:
1. SELECT * FROM Table – Standardanfrage zur Auswahl der kompletten Tabelle
2. SELECT CompanyID FROM Table ORDER BY CompanyID ASC –
Projektion auf eine Integerspalte und Sortierung der Integerwerte
3. SELECT CompanyName FROM Table ORDER BY CompanyName DESC –
Projektion auf eine Stringspalte und Sortierung der Stringwerte
4. SELECT CompanyID, RowNumber FROM Table WHERE RowNumber < ’1000’ –
Projektion auf zwei Integerspalten und Selektion auf einer Integerspalte
5. SELECT CompanyName, LocationPath FROM Table
WHERE LocationPath STARTSWITH ’/Messe/A’ –
Projektion auf zwei Stringspalten und Selektion auf einer Stringspalte
6. SELECT DISTINCT CompanyID FROM Table
WHERE CompanyID > ’1000000’ AND CompanyName CONTAINS ’GmbH’ –
Projektion auf eine Integerspalte mit Duplikateliminierung und Verknüpfung
zweier Selektionen auf einer Integer- sowie einer Stringspalte mit UND
Die Testergebnisse kann man den Diagrammen 5.2, 5.3, 5.4, 5.5, 5.6 und 5.7 entnehmen. Man erkennt, dass alle Anfragen auf dem Standardemulator von Sun und dem
darauf basierenden Emulator von Sony Ericsson wesentlich länger dauern als auf den
anderen Emulatoren von Siemens, Nokia und Motorola. Eine mögliche Ursache dafür
ist, dass der Sun-Emulator universell für alle J2ME-Anwendungen einsetzbar ist und
somit auch ältere, langsamere Geräte emulieren soll.
Die Anfrage 1 wird auf allen Emulatoren innerhalb weniger Sekunden ausgeführt und
bietet für alle Datengrößen eine akzeptable Performance. Die Projektionsoperation erfordert nur einen unwesentlichen Anteil an der Anfragezeit. Die Sortierung der gesamten
Tabelle in den Anfragen 2 und 3 dauert bei Sun und Sony Ericsson einige Sekunden
länger als bei Siemens, Nokia und Motorola, aber hält sich noch in Grenzen. Es ist
zu beobachten, dass die Sortierung von Integerzahlen wesentlich schneller ist als die
Sortierung von Stringobjekten. Derselbe Effekt tritt auch bei der Selektionsoperation
in den Anfragen 4 und 5 auf. Allerdings ist die Selektion der relevanten Tupel nur
minimal langsamer als die Selektion der gesamten Tabelle.
Die aufwändigste Operation bei allen Emulatoren ist die Duplikateliminierung in Anfrage 6, da nur ein simpler Algorithmus mit zahlreichen Vergleichsoperationen verwendet
wird. Ebenso kostet die Reorganisation des ResultSets einige Zeit. Folglich sollte man
die Beseitigung von Duplikaten nur auf kleinen Datenmengen durchführen, um nicht
die Performance des mobilen Datenbanksystems zu reduzieren. Nur beim SiemensEmulator ist das unerheblich. Bei den Emulatoren von Nokia und Motorola dauert die
KAPITEL 5. PERFORMANCE UND KOMPATIBILITÄT
57
Duplikatentfernung nur wenige Sekunden. Diese Ergebnisse zeigen, dass die Handydatenbank eine gute Performance bietet, vorausgesetzt dass die Testergebnisse auf dem
Emulator mit denen auf einem realen Gerät übereinstimmen.
Bei den Diagrammen bemerkt man, dass einige Messwerte bei Nokia und Motorola
fehlen. Die Ursache dafür ist, dass die Emulatoren bis an ihre Leistungsgrenze getestet wurden. Bei einigen Emulatoren überschritten die Daten und das Programm die
J2ME-Spezifikationen, so dass der Speicher zur Ausführung der Anfrage nicht ausreichte. Außerdem konnte auf dem Motorola-Emulator nach dem Start der Anwendung nur
eine Anfrage bei 1500 oder mehr Datensätzen ausgeführt werden. Falls man danach
eine weitere Anfrage stellen wollte, trat dasselbe Speicherproblem auf. Offensichtlich
wird der Speicher nicht korrekt bereinigt. Des Weiteren war beim Nokia-Emulator die
erzeugte JAR-Datei bei 2500 oder mehr Datensätzen zu groß, so dass man das Programm nicht starten konnte. Dagegen verfügen die anderen Emulatoren über größere
Ressourcen. Die Kapazitäten und Fähigkeiten der Emulatoren sind von Hersteller zu
Hersteller verschieden.
5.3
Getestete mobile Geräte
Die Mehrzahl der Kompatibilitätstests wurde auf verschiedenen Emulatoren und Simulatoren von Nokia, Siemens, Sony Ericsson, Motorola und palmOne durchgeführt, weil
nicht alle mobilen Geräte zur Verfügung standen. Dadurch konnte ein großer Teil der
auf dem Markt existierenden Geräte auf Kompatibilität mit der smartDB mit J2ME
überprüft werden. Laut der Nokia-Webseite [Nok04] ist die Simulationsumgebung so
nah wie möglich an der Firmware der realen Geräte. Dennoch existieren kleine Unterschiede. Beispielsweise ist es nicht möglich die reale Prozessorgeschwindigkeit und die
mobile Netzwerkumgebung zu simulieren. Man kann aber gut den Speicherverbrauch
und die Nutzerinteraktionen überprüfen. Folglich ist das Testergebnis auf dem Emulator oder Simulator, bis auf Unterschiede bei den Programmlaufzeiten, ähnlich mit
dem Testergebnis auf einem realen Gerät. Für 100% sichere Kompatibilitätsaussagen
muss man das mobile Datenbanksystem aber immer auf realen Geräten testen. Bei der
Vielzahl mobiler Geräte können die Kompatibilitätstests umfangreich und schwierig
sein. Die Tabelle 5.1 gibt einen Überblick über erfolgreich getestete mobile Geräte.
Bei den Tests mit der Handydatenbank auf den verschiedenen Emulatoren und Simulatoren sind einige Besonderheiten aufgetreten.
• Beispielsweise haben einige Nokia-Handys und viele Siemens-Handys sehr wenig
Heapspeicher und können nur kleine Datenmengen verarbeiten.
• Bei den Motorola-Handys kann die eine Hälfte der Geräte nur MIDP 1.0 konforme
Anwendungen ausführen und die andere Hälfte nur MIDP 2.0 konforme Anwendungen. In Bezug auf den J2ME-Standard sind die MIDP-Versionen abwärtskompatibel, jedoch wurde das nicht von allen Herstellern korrekt implementiert.
Ferner haben die Hersteller die Spezifikationen um eigene Bibliotheken ergänzt.
1
Der Tungsten T wird offiziell nicht vom WME wegen kleinem Heapspeicher und Palm OS 5.0
unterstützt, aber er kann für die Anwendungsentwicklung verwendet werden. Tests auf einem realen
Gerät ergaben, dass die smartDB mit J2ME auf einem Tungsten T problemlos funktioniert.
KAPITEL 5. PERFORMANCE UND KOMPATIBILITÄT
Abbildung 5.2: Standardanfrage
Abbildung 5.3: Projektion und Sortierung für Integer
58
KAPITEL 5. PERFORMANCE UND KOMPATIBILITÄT
Abbildung 5.4: Projektion und Sortierung für String
Abbildung 5.5: Projektion und Selektion für Integer
59
KAPITEL 5. PERFORMANCE UND KOMPATIBILITÄT
60
Abbildung 5.6: Projektion und Selektion für String
Abbildung 5.7: Projektion mit Duplikateliminierung und Verknüpfung von Selektionen
KAPITEL 5. PERFORMANCE UND KOMPATIBILITÄT
Nokia
Nokia
Nokia
Nokia
Nokia
Nokia
Nokia
Nokia
Nokia
Nokia
Nokia
Sony
Sony
Sony
Sony
Sony
Sony
Sony
Sony
3300
3410
3510i
5100
6230
6310i
7210
7600
Series 40 SDK
Series 60 SDK
Series 90 SDK
Ericsson
Ericsson
Ericsson
Ericsson
Ericsson
Ericsson
Ericsson
Ericsson
K700
P800
P900
T610
T616
T630
Z500
Z1010
Siemens
Siemens
Siemens
Siemens
Siemens
Siemens
Palm
Palm
Palm
Palm
Palm
CX65
M50
M55
MC60
S57
SL45i
Treo 600
Tungsten T1
Tungsten T3
Zire 31
Zire 72
Sun WTK 2.1
Sun WTK 1.0.4_01
Motorola
Motorola
Motorola
Motorola
Motorola
Motorola
Motorola
Motorola
Motorola
Motorola
Motorola
Motorola
Motorola
Motorola
Motorola
Motorola
Motorola
Motorola
Motorola
Motorola
Motorola
61
A630
A760
A830
A835
C353t
C370/C450/C550
C650
E380
E398
T280i
T720
T720i
T725
v60i
v60t
v66i
V80
V180
V220
V300/V400/V500
V600
Tabelle 5.1: Liste erfolgreich getesteter mobiler Geräte
Das Problem der Inkompatibilität bei Motorola kann man dadurch umgehen,
dass man die smartDB mit J2ME jeweils für die entsprechende MIDP-Version
kompiliert und dann die zum vorhandenen Gerät passende Variante nutzt.
• Gemäß der Dokumentation zum IBM WebSphere Micro Environment für Palm
OS (siehe [pal04]) sollen die erzeugten Palm-Anwendungen auf allen Palm PDAs
ab Palm OS 5.2 lauffähig sein. Trotzdem gab es bei Tests mit einigen Simulatoren Probleme bei der Ausführung der JVM. Neben den erfolgreich getesteten
Palm PDAs aus Tabelle 5.1 werden auch folgende Handhelds genannt: Tungsten
T2, Tungsten E, Tungsten C, Zire 71 und Tungsten W mit der vorhergehenden
Version des WME.
Kapitel 6
Zusammenfassung und Ausblick
In dieser Studienarbeit wurden die Anforderungen an mobile Datenbanken im Vergleich
zu klassischen, stationären Datenbanken und verteilten Datenbanken diskutiert. Des
Weiteren wurden die aktuell verfügbare Hardware für mobile Geräte und die Einsatzbereiche mobiler Anwendungen betrachtet. Zu diesem Zweck kann man die Hardware
in die drei Geräteklassen PDA, Smartphone und Handy unterteilen. Ebenso wurden
Architekturfragen mobiler Datenbanken beschrieben. Noch nicht ergründet wurden die
technischen Grundlagen wie die Zellfunknetzwerke (z.B. GSM-Technik, Lokalisierung
der mobilen Nutzer über GPS) oder Ad-hoc-Netzwerke (spontane Vernetzung mobiler
Einheiten). In diesem Zusammenhang ist eine detaillierte Analyse der verschiedenen
Kommunikationstechnologien aus Tabelle 2.1 zu erwägen.
Zur Evaluierung des Leistungsvermögen mobiler Datenbanken wurde die Funktionalität einer Vielzahl auf dem Markt befindlicher Datenbanken für mobile und eingebettete
Systeme vorgestellt. Neben den Datenbankfunktionen sind insbesondere der Footprint
und die unterstützten Plattformen des Datenbanksystems wichtig. Die Vorstellung der
Systeme zeigte, dass es im mobilen Umfeld auf Grund der Heterogenität der existierenden Geräte keine universell einsetzbare Datenbank gibt, die für alle Anwendungsszenarien optimal geeignet ist. Dabei wurde vorzugsweise die mobile Datenbank smartDB,
vom Fraunhofer Institut für Graphische Datenverarbeitung in Rostock, detailliert hinsichtlich vorhandener Fähigkeiten und Verbesserungsmöglichkeiten analysiert.
Zur Erweiterung der bestehenden Plattformen der smartDB wurde die mobile Datenbank mit der Java 2 Micro Edition für Handys implementiert. Zu diesem Zweck wurden
die Funktionen der J2ME und die Restriktionen für die Programmierung untersucht.
Außerdem wurden ausführlich die implementierten Datenbankkomponenten wie z.B.
Anfragen, Tabellen und ResultSets beschrieben. Danach wurde die Leistungsfähigkeit
der smartDB mit J2ME bezüglich Performance und Kompatibilität mit vorhandenen
Mobiltelefonen getestet.
Nach der Implementierung und den Tests zeigte sich, dass die Funktionalität der Datenbank für Handys teilweise noch eingeschränkt ist oder für das entsprechende Anwendungsszenario angepasst werden muss. Nichtsdestotrotz liefert die Datenbank schon
eine akzeptable Performance auf der Handyplattform und kann in mobile Anwendungen
integriert werden. Da zukünftig die Leistungsfähigkeit der Handys in Zusammenhang
mit einer Weiterentwicklung der Hardware steigen wird, kann man später noch zusätzliche Funktionen, die in den aktuellen Anwendungen noch keine große Rolle spielten,
62
KAPITEL 6. ZUSAMMENFASSUNG UND AUSBLICK
63
zum Datenbanksystem hinzufügen. Dazu zählt beispielsweise eine SQL-Import- und
Exportschnittstelle. Ebenfalls ist die Implementierung eines Verbundes noch nicht geschehen. In diesem Zusammenhang muss man gegebenenfalls eine Erweiterung des Dateiformates der smartDB in Betracht ziehen, bei dem die Schlüssel- und Fremdschlüsselbeziehungen für den JOIN ergänzt werden. Eine andere Erweiterungsmöglichkeit ist
eine Schnittstelle für das Herunterladen von aktuellen Daten aus dem Internet z.B.
über eine HTTP-Verbindung.
Darüber hinaus ist das Anwendungsgebiet mobile Endgeräte ein Zukunftsmarkt, da
schon heute viele Leute über ein Handy verfügen und der Markt weiterhin wächst.
Diese Entwicklung wird sich vermutlich mit der allgemeinen Verbreitung von Smartphones und UMTS verstärken. Damit könnten in Zukunft mobile Geräte den Nutzer
bei seinen alltäglichen Aktivitäten im Arbeitsleben und in der Freizeit unterstützen.
Daher ist die Untersuchung der Interaktionsmöglichkeiten für den Nutzer und eine optimale Visualisierung der Informationen in mobilen Anwendungen wichtig. Ein Problem
bei der Nutzung mobiler Datenbanksysteme ist die Vielfalt an mobilen Plattformen,
die die Entwicklung einer universell einsetzbaren Anwendung erschweren. Die Java 2
Micro Edition versucht das durch ein plattformunabhängiges Framework für die Anwendungsprogrammierung zu lösen. Mit der smartDB unter J2ME existiert bereits jetzt ein
leistungsfähiges, relationales und mobiles Datenbanksystem für die Handyplattform.
Abbildungsverzeichnis
2.1
Architektur eines Datenbanksystems . . . . . . . . . . . . . . . . . . .
6
4.1
Architektur der Java 2 Micro Edition . . . . . . . . . . . . . . . . . . .
39
5.1
5.2
5.3
5.4
5.5
5.6
5.7
Speicherplatzverbrauch der Daten und der Java-Archive . . . . . . . . .
Standardanfrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Projektion und Sortierung für Integer . . . . . . . . . . . . . . . . . . .
Projektion und Sortierung für String . . . . . . . . . . . . . . . . . . .
Projektion und Selektion für Integer . . . . . . . . . . . . . . . . . . . .
Projektion und Selektion für String . . . . . . . . . . . . . . . . . . . .
Projektion mit Duplikateliminierung und Verknüpfung von Selektionen
55
58
58
59
59
60
60
64
Tabellenverzeichnis
2.1
2.2
Technische Daten der drei Hardwareklassen . . . . . . . . . . . . . . . .
Technische Daten einiger aktueller PDAs, Smartphones und Handys . .
12
12
3.1
3.2
3.3
Klassifikation der Datenbanksysteme in die drei Hardwareklassen . . .
Unterstützte Plattformen der mobilen Datenbanksysteme . . . . . . . .
Maximalwerte wichtiger Datenbankparameter mobiler Datenbanken . .
18
20
21
4.1
Dateiformat der Datendateien . . . . . . . . . . . . . . . . . . . . . . .
49
5.1
Liste erfolgreich getesteter mobiler Geräte . . . . . . . . . . . . . . . .
61
65
Literaturverzeichnis
[BBPV01] Bobineau, Christophe, Bouganim, Luc, Pucheral, Philippe, and Valduriez,
Patrick. PicoDBMS: Scaling down Database Techniques for the Smartcard.
The VLDB Journal, 10(2-3):120–132, September 2001.
[Bir04a] Birdstep Technology ASA. Birdstep Database Product Matrix, May 2004.
[Bir04b] Birdstep Technology, Inc. Birdstep RDM Embedded 7.1 Datasheet, June 2004.
[Bir04c]
Birdstep Technology, Inc. Birdstep RDM Mobile 3.0 Datasheet, June 2004.
[Bor03a] Borland Software Corporation. Borland JDataStore 7 Developer’s Guide,
2003.
[Bor03b] Borland Software Corporation. Borland JDataStore 7 Feature Matrix, 2003.
[Dat04a] DataMirror Mobile Solutions, Inc. PointBase Embedded Datasheet, 2004.
[Dat04b] DataMirror Mobile Solutions, Inc. PointBase Micro Datasheet, 2004.
[Dat04c] DataMirror Mobile Solutions, Inc. PointBase UniSync Datasheet, 2004.
[Dix03]
Dixon, Kevin. Symbian OS Version 7.0s Functional Description, Revision
2.1. Symbian Ltd, June 2003.
[dUD]
Fachbereich Informatik der Universität Dortmund. J2ME Device Database,
siehe http://kissen.cs.uni-dortmund.de:8080/devicedb/index.html.
[Fas04a] FastObjects, Inc. FastObjects – Overview FastObjects e7,
siehe http://www.fastobjects.com/us/FastObjects_PandS_e7.asp, 2004.
[Fas04b] FastObjects, Inc. FastObjects – Overview FastObjects j2,
siehe http://www.fastobjects.com/us/FastObjects_PandS_j2.asp, 2004.
[FB03]
Fox, Dan and Box, John. Building Solutions with the Microsoft .NET Compact Framework: Architecture and Best Practices for Mobile Development,
siehe http://www.windowsitlibrary.com/Content/1016/05/toc.html, chapter
Caching Data with SQL Server CE. Addison Wesley, October 2003.
[fGDR]
Fraunhofer Institut für Graphische Datenverarbeitung Rostock. Mobiles
Informationssystem xGuide, siehe http://www.igd-r.fraunhofer.de/IGD/
Abteilungen/AR3/Produkte_AR3/xGuide.
66
LITERATURVERZEICHNIS
67
[Höp01]
Höpfner, Hagen. Replikationstechniken für mobile Datenbanken. Diplomarbeit, Otto-von-Guericke Universität Magdeburg, Fakultät für Informatik,
März 2001.
[HS99]
Heuer, Andreas and Saake, Gunter. Datenbanken: Implementierungstechniken. MITP-Verlag, 1999.
[HS00]
Heuer, Andreas and Saake, Gunter. Datenbanken: Konzepte und Sprachen.
MITP-Verlag, 2000.
[iAn04a] iAnywhere Solutions, Inc. SQL Anywhere Studio Datenblatt, 2004.
[iAn04b] iAnywhere Solutions, Inc. UltraLite Datenbankhandbuch, Januar 2004.
[IBM03] IBM Corporation. IBM DB2 Everyplace 8.1 Datasheet, October 2003.
[Kön03]
König-Ries, Birgitta. Vorlesung Informationssysteme in mobilen und drahtlosen Umgebungen, siehe http://www.ipd.uka.de/∼koenig/ISMOD/. Universität Karlsruhe (TH) und TU München, 2003.
[Lub00]
Lubinski, Astrid. Small Database Answers for Small Mobile Resources, November 2000.
[McO04a] McObject LLC. eXtremeDB High Availability Edition,
siehe http://www.mcobject.com/highavailability.shtml, 2004.
[McO04b] McObject LLC. eXtremeDB Single Threaded Edition,
siehe http://www.mcobject.com/singlethreaded.shtml, 2004.
[McO04c] McObject LLC. eXtremeDB Standard Edition,
siehe http://www.mcobject.com/standardedition.shtml, 2004.
[Mic00]
Microsoft Corporation. Microsoft SQL Server 2000 Windows CE Edition,
Whitepaper, 2000.
[Mic02]
Microsoft Corporation. Microsoft SQL Server 2000 Windows CE Edition,
Datasheet, 2002.
[Mim04] Mimer Information Technology AB. Mimer SQL Engine Documentation Set,
Version 9.2, März 2004.
[Nok04]
Nokia. Nokia Documentation – Introduction to Java Tools,
siehe http://www.forum.nokia.com/main/0,6566,st_p_61,00.html, 2004.
[Pala]
PalmSource, Inc. Palm OS Cobalt Datasheet.
[Palb]
PalmSource, Inc. Palm OS Garnet Datasheet.
[Palc]
PalmSource, Inc. Palm OS Releases – Palm OS Cobalt,
siehe http://www.palmos.com/dev/tech/oses/cobalt60.html.
LITERATURVERZEICHNIS
68
[pal04]
palmOne, Inc. WebSphere Micro Environment for palmOne Devices – MIDP
2.0 Porting Guide (GM Final), March 2004.
[Poe01]
Poet Software GmbH. FastObjects Products – Features & Architecture, 2001.
[Rad04a] Radage, Kalle. Oracle Database Lite 10g – What’s the Difference with other
Oracle Database Editions? Oracle Corporation, April 2004.
[Rad04b] Radage, Kalle. Oracle Database Lite 10g Overview, Version 1.2. Oracle
Corporation, January 2004.
[Sof03]
Software AG. News – Tamino Mobile 4.0 Released, siehe
http://www.xmlstarterkit.com/corporat/news/jan2003/tamino_mobile4.htm,
January 2003.
[Suna]
Sun Microsystems, Inc. J2ME Documentation,
siehe http://java.sun.com/j2me/docs/index.html.
[Sunb]
Sun Microsystems, Inc. JSR for J2ME,
siehe http://www.jcp.org/en/jsr/tech?listByType=platform.
[Sun00a] Sun Microsystems, Inc. Connected Limited Device Configuration,
Specification Version 1.0a J2ME, May 2000.
[Sun00b] Sun Microsystems, Inc. Mobile Information Device Profile (JSR-37),
Specification Version 1.0a J2ME, December 2000.
[Sun02]
Sun Microsystems, Inc. Mobile Information Device Profile (JSR-118),
Specification Version 2.0 J2ME, November 2002.
[Sun03a] Sun Microsystems, Inc. Connected Limited Device Configuration,
Specification Version 1.1 J2ME, March 2003.
[Sun03b] Sun Microsystems, Inc. Whitepaper CDC: An Application Framework for
Personal Mobile Devices, June 2003.
[Upr04a] Upright Database Technology AB. Mimer SQL Embedded – The Tailor-made
Database, siehe http://www.mimer.com/ImageBottom.asp?secId=197, 2004.
[Upr04b] Upright Database Technology AB. Mimer SQL Engine – The Zero Maintenance Database, siehe http://www.mimer.com/imageBottom.asp?secId=200,
2004.
[Upr04c] Upright Database Technology AB. Mimer SQL Mobile – The Phone is the
Server, siehe http://www.mimer.com/ImageBottom.asp?secId=201, 2004.