Mobile Endgeräte sind in erster Linie – verglichen mit etablierten DesktopSystemen – durch Restriktionen gekennzeichnet. Diese reichen von beschränkten Eingabemöglichkeiten über teure und langsame Datennetzanbindungen bis hin zur stark eingeschränkten Speicherkapazität. Insbesondere die zahlreichen Nachteile von Funknetzwerken werden häufig durch das lokale Zwischenspeichern von Daten auf den Mobilgeräten reflektiert. Offensichtlich besteht hierbei ein Konflikt zwischen der Cachegröße und der verfügbaren Speicherkapazität. In diesem Papier werden erste Ideen zur Ausnutzung semantischer Ähnlichkeiten von Anfragen zur Komprimierung von Cacheeinträgen durch Anfragegeneralisierung vorgestellt. 1 Einleitung und Motivation Mobile Informationssysteme unterliegen zahlreichen Beschränkungen, welche in erster Linie aus ihren jeweiligen Einsatzgebieten und den verwendeten Geräten resultieren. Funknetzwerke sind zwar mittlerweile fast flächendeckend verfügbar, die Datenübertragung ist jedoch im Allgemeinen vergleichsweise teuer und langsam. Aus diesem Grund wird der Zugriff auf im Netzwerk verfügbaren Informationen häufig durch Zwischenspeichertechniken unterstützt. Generell gilt: Daten, die nicht über das Netzwerk bezogen werden müssen, sind kostengünstiger. Eine weitere Einschränkung ist, dass Mobilgeräte in der Regel leichtgewichtig sind. Das heißt, dass sie nur beschränkt Daten speichern und verarbeiten können. Offensichtlich tritt hier ein Konflikt auf. Aus Sicht der Datenübertragungskosten wäre es am Besten, alle einmal übertragenen Daten lokal zwischenzuspeichern und neue Anfragen vorrangig lokal zu beantworten. Aufgrund des beschränkten Speicherplatzes auf den Mobilgeräten ist diese Strategie aber nur kurz realisierbar. In dem vorliegenden Papier stellen wir erste Ideen zu einer kompakten Darstellung der Daten im Zwischenspeicher vor. Dabei werden semantische Überlappungen bzw. Nachbarschaftsbeziehungen unterschiedlicher Anfragen genutzt und mittels Generalisierung die Anzahl der im Zwischenspeicher gehaltenen Referenzanfragen reduziert. Nach der Diskussion verwandter Arbeiten in Abschnitt 2 wird in Abschnitt 3 kurz die gewählte Struktur Gefördert durch die DFG unter der Fördernummer SA 782/3-2. des lokalen Caches erläutert, und darauf aufbauend in Abschnitt 4 ein Algorithmus vorgestellt, der beim Einfügen von neuen Cacheeinträgen deren „Kompatibilität“ mit bereits lokal verfügbaren Anfrageergebnissen prüft. Zur Abgrenzung sei darauf hingewiesen, dass wir hier kein detailliertes Kostenmodell vorstellen. Vielmehr wird ein Verfahren vorgestellt, welches ausschließlich das Ziel hat, möglichst viele Anfragen lokal zu beantworten und gleichzeitig die dazu notwendigen Metadaten zu reduzieren. 2 Verwandte Arbeiten Sematische Caches werden in zahlreichen Forschungsgebieten und Anwendungsbereichen mit dem Ziel der Minimierung von Antwortzeiten und Übertragungskosten eingesetzt. Dies schließt klassische Client/Server-Datenbanken [DFJ96, KB96], heterogene MultiDatenbank Systeme [GG97, GG99], Web-Datenbanken [LC98, LC01, KSGH03] sowie die hier betrachteten mobilen Informationssysteme [LC99, RD00] ein. Der Unterschied zu klassichen Zwischenspeichertechniken besteht darin, dass die Anfragen dazu benutzt werden, um die entsprechenden Ergebnisse lokal (in unserem Szenario auf dem mobilen Endgerät) zu referenzieren. Nach [RD99] hängt die Effizienz eines derartigen Caches davon ab, wie stark der semantische Zusammenhang zwischen Anfragen ist und wie effizient der Cache verwaltet wird. Der Begriff Effizienz wir in unserer Arbeit als „möglichst wenig Meta-Informationen“ interpretiert. Daher ist der Ausgangspunkt die Idee der semantischen Regionen [DFJ96], die besagt, dass die Daten eines Caches derart strukturiert sind, dass sie nichtüberlappende Regionen im Datenraum bilden. Auf diesem Vorschlag aufbauend existieren zwei erweiterte Ansätze. Bei der in [RD99] vorgeschlagenen semantischen Clusterung, werden ähnliche Anfragen zu Clustern zusammengefasst. Wenn eine Anfrage Q komplett oder zum Teil durch eine bereits gecachte Anfrage C beantwortet werden kann, wird Q in das selbe Cluster wie C aufgenommen womit semantisch ähnliche Anfragen dicht beieinander gespeichert werden. Hierzu wird eine zusätzliche Cluster-Indexstruktur eingeführt. Da unser Ziel eine Reduktion der Metainformationen ist, repräsentieren wir die mit dem Clusterindex vergleichbaren Metainformationen implizit in der notwendigen Indexstruktur des Caches. Die zweite zentrale Erweiterung der semantischen Regionen diskutiert [LLS99]. Durch die Cache-Partitionierung wird versucht, die häufig benutzten von den weniger oft verwendeten Daten zu trennen. Dazu werden die semantischen Regionen weiter in Sub-Fragmente zerlegt. Es werden also zusätzliche Metainformationen eingefügt, die später durch die Ersetzungsstrategie genutzt werden können, um diejenigen Daten zu entfernen, die am seltensten benutzt wurden. Im Gegensatz zu unserem Verfahren stellt die Partitionierung eine Spezialisierung dar. Die Cacheeinträge werden verfeinert und nicht generalisiert. Aus Sicht der Speichereffizienz wäre sicherlich ein „Mittelweg“ zu empfehlen. Eine diesbezügliche Evaluation wird in Folgearbeiten betrachtet werden. 3 Stuktur des Zwischenspeichers Der in diesem Papier diskutierte Ansatz basiert auf dem trie-basierten Cache, welcher detailliert in [HS03c] eingeführt wurde. Die Anfrageergebnisse werden als Relationen lokal gespeichert und durch eine Indexstruktur, welche die Anfragen in Form eines Tries [Fre59] repräsentiert, referenziert. Die hierzu verwendete kalkülbasierte Anfragesprache wurde ebenfalls in [HS03c] eingeführt und in [HS03b] derart erweitert, dass kontextbasierte Anfragen als Konjunktionen der folgenden Prädikate repräsentiert werden: Relationenprädikate r repräsentieren die Attribute welche in das Ergebnis einfließen sollen. Sie sind folglich mit den Parametern des Projektionsoperators der Relationenalgebra vergleichbar. Beispiel: address(name,fname) Verbundprädikate j repräsentieren Verbünde von Relationen und die dabei zu verwendenden Verbundattribute. Sie sind folglich mit den Parametern des Verbundoperators der Relationenalgebra vergleichbar. Beispiel: address.name=phone.last_name Selektionsprädikate s repräsentieren die Bedingungen, die erfüllt sein müssen, damit ein Tupel in die Ergebnisrelation aufgenommen wird. Sie sind folglich mit den Parametern der Selektionsoperation der Relationenalgebra vergleichbar. Eine Selektion σF (r(R)) mit der Selektionsbedingung F wird als Selektionsprädikat r(R).F beschrieben. F ist hierbei auf Konstantenselektion beschränkt und muss der Konvention attributθconstant genügen. Desweiteren wird gefordert, dass θ ∈ {≤, < , =, 6=,≥, >} gilt und dass logische Verknüpfungen in separate Selektionsprädikate zerlegt werden. Beispiel: address.fname = ’George’ Kontextprädikate c repräsentieren Informationen über den Kontext unter dem die Datenbankanfrage gestellt wurde (z.B. aktuelle Lokation). Auf dem Datenbankserver können sie genutzt werden, um die Anfrage nur auf vordefinierten personalisierte Schemata (Fragmente) auszuführen (vgl. [HS03a]). Auf dem mobilen Endgerät können sie u.A. in die Ersetzungsstrategie des Zwischenspeichers einfließen 1. Eine kontextbasierte Anfrage CBQ = {c1 ∧ · · · ∧ cq ∧ r1 ∧ · · · ∧ rm ∧ j1 ∧ · · · ∧ jn ∧ s1 ∧ · · · ∧ so} wird als Sequenz von Prädikaten 〈c1, . . . , cq , r1, . . . , rm, j1, . . . , jn, s1, . . . , so〉 repräsentiert, wobei ∀i, k ∈ 1 . . . q, i < k ⇒ ci / ck, ∀i, k ∈ 1 . . .m, i < k ⇒ ri / rk , ∀i, k ∈ 1 . . . n, i < k ⇒ ji / jk und ∀i, k ∈ 1 . . . o, i < k ⇒ si / sk gilt. Hierbei steht / für lexikographisch kleiner. Offensichtlich ist diese Anfragesprache nicht streng relational vollständig. Beispielsweise ist kein Vereinigungsoperator definiert. Für zukünftige Arbeiten wird aber die relationale Vollständigkeit angestrebt. Daneben werden aufgrund des Kalkülcharakters der Sprache keine Aggregatfunktionen unterstützt. 1Wird in diesem Papier aber vorerst nicht betrachtet. Die trie-basierte Indexstruktur repräsentiert nun derartige kontextbasierte Anfragen als Pfade eines Tries (von der Wurzel zu den Blättern). Die Blätter bilden hierbei die jeweiligen Anfrageergebnisse. Somit kann durch Traversierung des Tries in Kombination mit entsprechenden Prädikatvergleichen effizient festgestellt werden, ob neue Anfragen komplett, partiell oder garnicht lokal beantwortet werden können. Für eine genaue Beschreibung dieses Vorgehens sei auf [HS03c] verwiesen. 4 Anfragegeneralisierung Ziel der Generalisierung von Anfragen ist es, die Anzahl der Index-Einträge zu reduzieren und dennoch möglichst genausoviele Anfragen lokal beantworten zu können. Das heisst, dass die folgende Situation betracht werden muss: • Eine Anfrage Q konnte lokal nicht beantwortet werden und wurde an den Server geschickt. • Das Ergebnis dieser Anfrage soll in den Zwischenspeicher eingetragen werden. • Es ist bereits eine Anfrage P im Zwischenspeicher vorhanden, die „ähnliche“ Daten abdeckt. Wir gehen zuerst davon aus, dass Q eine Anfrage ist, die vollständig durch den Server beantwortet werden musste und keine Kompensationsanfrage. Folglich muss Q separat in den Index eingetragen werden. Wie bereits eingangs erwähnt, handelt es sich bei diesem Papier um erste Ideen. Daher wird vorerst angenommen, dass sich Q und P nur in den Selektionsprädikaten unterscheiden. Für P und Q gilt also: • Q = {c1 ∧ · · · ∧ cq ∧ r1 ∧ · · · ∧ rm ∧ j1 ∧ · · · ∧ jn ∧ s11 ∧ · · · ∧ s 1 o} und • P = {c1 ∧ · · · ∧ cq ∧ r1 ∧ · · · ∧ rm ∧ j1 ∧ · · · ∧ jn ∧ s21 ∧ · · · ∧ s 2 q}. Der Einfachheit halber werden im Folgenden nur noch die Selektionsprädikate betrachtet. Der Generalisierungalgorithmus optimiert zuerst die einzelnen Anfragen. Aufgrund der konjunktiven Verknüpfung der Prädikate wird somit erreicht, dass maximal zwei positive2 Prädikate das gleiche Attribut der gleichen Relation verwenden. Beispielsweise wäre t1.a>100 ∧ t1.a<150 ∧ t1.a<200 eine im Sinne des verwendeten K
[1]
Edward Fredkin,et al.
Trie memory
,
1960,
Commun. ACM.
[2]
Jarek Gryz,et al.
Answering Queries by Semantic Caches
,
1999,
DEXA.
[3]
Dongwon Lee,et al.
Towards Intelligent Semantic Caching for Web Sources
,
2001,
Journal of Intelligent Information Systems.
[4]
Jarek Gryz,et al.
Semantic Query Caching for Hetereogeneous Databases
,
1997,
KRDB.
[5]
Dongwon Lee,et al.
Semantic caching via query matching for web sources
,
1999,
CIKM '99.
[6]
Dongwon Lee,et al.
Conjunctive Point Predicate-based Semantic Caching for Wrappers in Web Databases
,
1998,
Workshop on Web Information and Data Management.
[7]
Hagen Höpfner,et al.
Semantic Replication in Mobile Federated Information Systems
,
2003,
EFIS.
[8]
Hagen Höpfner,et al.
SmoS: A Scalable Mobility Server
,
2003,
BNCOD Posters.
[9]
Ken C. K. Lee,et al.
Semantic query caching in a mobile environment
,
1999,
MOCO.
[10]
Margaret H. Dunham,et al.
Using semantic caching to manage location dependent data in mobile computing
,
2000,
MobiCom '00.
[11]
K. Sattler,et al.
Towards Trie-Based Query Caching in Mobile DBS ∗
,
2003
.
[12]
Margaret H. Dunham,et al.
Using clustering for effective management of a semantic cache in mobile computing
,
1999,
MobiDe '99.
[13]
Arthur M. Keller,et al.
A predicate-based caching scheme for client-server
database architectures
,
1994,
Proceedings of 3rd International Conference on Parallel and Distributed Information Systems.
[14]
Divesh Srivastava,et al.
Semantic Data Caching and Replacement
,
1996,
VLDB.
[15]
Marcel Karnstedt,et al.
Semantic Caching in Ontology-based Mediator Systems
,
2003,
Berliner XML Tage.