Konzeption und Realisierung eines Constraint-basierten Datenbank-Cache

Slides:



Advertisements
Ähnliche Präsentationen
Object Relational Mapping
Advertisements

Eine dynamische Menge, die diese Operationen unterstützt,
C Tutorium – Semaphoren –
Datenbankzugriff im WWW (Kommerzielle Systeme)
Allgemeine Technologien II
Systemüberblick Beispiele: Microsoft Access Oracle Ingres Informix
Objektrelationales Mapping mit JPA
SendEplanung Datenbank
Java: Objektorientierte Programmierung
Sortierverfahren Richard Göbel.
Sortierverfahren Richard Göbel.
FH-Hof Effizienz - Grundlagen Richard Göbel. FH-Hof Inhalt Einführung Aufwand für Anfragen ohne Indexierung Indexstrukturen für Anfragen an eine Tabelle.
Markplätze für Agenten Seminar Softwareagenten Timo Hoelzel.
SQL als Abfragesprache
IS: Datenbanken, © Till Hänisch 2000 CREATE TABLE Syntax: CREATE TABLE name ( coldef [, coldef] [, tableconstraints] ) coldef := name type [länge], [[NOT]NULL],
SQL/XML. © Prof. T. Kudraß, HTWK Leipzig 2 2 Motivation Speicherung von XML in allen großen kommerziellen DBMS vorhanden proprietäre Lösungen für die.
Übung Datenbanksysteme SQL-Anfragen (2)
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
– Team 2 Aktueller Projektleiter: Christian Krapp
Datenintegrität Referentielle Integrität create table
Datenbanksysteme für FÜ SS 2000 Seite Worzyk FH Anhalt Transaktionen und Parallelverarbeitung Eigenschaften von Transaktionen Konsistenz Isolation.
JDBC -Java Database Connectivity-. 15./22. April 2004JDBC2 JDBC.... verbindet Java-Programme mit SQL-basierten Datenbanken.. liefert eine generische SQL-API.
Abfragen – Tipps und Tricks Buch S102ff (Informatik I, Oldenbourg-Verlag) Nach einer Vorlage von Dieter Bergmann.
Einführung MySQL mit PHP
1 Sichten (1) Oftmals ist es für Anwendungen einfacher, nicht mit dem Original- Datenbestand, sondern einem speziell zugeschnittenen Ausschnitt zu arbeiten.
Einführung und Überblick
Grundschutztools
JDBC: JAVA Database Connectivity
... und alles was dazugehört
Datenbankentwicklung IV-LK
ODBC (Open Database Connectivity)
SQL PHP und MySQL Referat von Katharina Stracke und Carina Berning
TWS/Graph HORIZONT Produkt-Präsentation Software für Rechenzentren
Betrieb von Datenbanken Marco Skulschus & Marcus Wiederstein Datenmanipulation Lehrbuch, Kapitel 4.
Adaption von K-Means Algorithmen an Datenbanken
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #7 SQL (Teil 2)
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #7 SQL (Teil 4)
WS 2013/14 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #5 SQL (Teil 2)
CGI (Common Gateway Interface)
Analyse von Ablaufdiagrammen
HORIZONT 1 XINFO ® Das IT - Informationssystem HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 /
Publikation auf Knopfdruck Judith Riegelnig Michael Grüebler 19. Oktober 2010 / Statistiktage Neuenburg.
Lernmodul Einführung Nutzen Sie diese Powerpoint-Präsentation beim Selbstlernen oder in Veranstaltungen zur Einführung in das jeweilige Thema. Nutzungsbedingungen:
Ganzheitliches Projekt-, Ressourcen- und Qualitätsmanagement 1 Reports und AddOns Auf den folgenden Seiten wird Ihnen die Funktionsweise der Reports und.
Datenbanksysteme für hörer anderer Fachrichtungen
Einführung in Datenbankmodellierung und SQL
SQL - Structured Query Language AIFB SS (1/9) Join-Operationen in SQL-92(1/9) Syntax einer Join-Operation: join-op := CROSS JOIN | [NATURAL]
LOD Levels of Detail Oliver Gassner Christian Troger.
Untersuchungen zur Erstellung eines
Integritätserhaltung und -Überprüfung in deduktiven Datenbanken
Structured Query Language
Eike Schallehn, Martin Endig
8 Erzeugen und Verwalten von Tabellen Ziele Kennenlernen der wichtigsten Datenbankobjekte Anlegen von Tabellen Datentypen zur Definition von Spalten.
T. Wallrath Optimierung des Photon Mapping Verfahrens durch Verbesserung der Radiance Estimate Berechnung und Einsatz von Radiosity Photonen.
Einführung Dateisystem <-> Datenbanksystem
WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
ArcView als SDE - Client SDE Client inklusive! ArcViewGIS: ArcView GIS: Michael Jacobi ESRI GmbH ESRI EUROPEAN USER CONFERENCE.
Datenbanken im Web 1.
1 Prof. Dr. Andreas SchmietendorfWS06/07 Übung 3 Test der Möglichkeiten des JDBC-Interfaces.
12. November 2001 Seminar Geoinformation Folie 1 Inhalt Einführung Bearbeitung raumbezogener Anfragen Ausblick Seminar Geoinformation Themenblock: „Implementierung.
PHPmyadmin Maya Kindler 6c.
WS 2014/15 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #9 SQL Zusammenfassung.
Datenbanken abfragen mit SQL
1 StatiX: Making XML Count J.Freire, J.R.Haritsa, M.Ramanath, P.Roy, J.Siméon: StatiX: Making XML Count ACM SIGMOD, June 2002 Ann Früchtl
Entwicklung einer Webapplikation mittels HTML, PHP, MySQL, jQuery, und Smarty-Templates am Beispiel einer Studienarbeitsverwaltung.
1. Betreuer: Prof. Dr. Jörg Striegnitz 2. Betreuer: Dr. Martin Schindler Kontextsensitive Autocompletion für Klassendiagramme in der UML/P Florian Leppers.
XML-Erweiterungen in ORDBMS Seminar: DBMS für spezielle Anwendungen Florian Brieler.
Dr. Wolfram Amme, Automatische Speicherverwaltung, Informatik II, FSU Jena, SS Automatische Speicherverwaltung.
Sprachumfang von SQL Vier Kategorien DDL (Data Definition Language)
(Structured Query Language)
 Präsentation transkript:

Konzeption und Realisierung eines Constraint-basierten Datenbank-Cache Diplomarbeit von Christian Merker

Gliederung Motivation Constraint-basiertes Datenbank-Caching Existierende Prototypen CBCS: Unser Prototyp Ausblick

Motivation Situation: Aus Sicht der Unternehmen: Internet als neue Verkaufsplattform Individuelles Ansprechen der Kunden durch Web-Anwendungen Aus Sicht der Benutzer: Zahl der Breitbandinternetanschlüsse wächst stetig  Immer mehr Internetbenutzer Hohe Erwartungen an Web-Anwendungen: Kurze Reaktionszeit, Aktuelle Informationen, Anpassung an persönliche Bedürfnisse, …  Neue Herausforderungen für Anbieter von Web-Anwendungen

Typische Mehrschichtenarchitektur Viele Clients stellen an mehrere Applikationsserver Anfragen Mehrere Applikationsserver generieren Web-Seiten aus den gespeicherten Informationen einer Datenbank  Datenbank wird zum Flaschenhals

Mehrschichtenarchitektur mit DB-Caching Jeder Applikationsserver besitzt einen Datenbank-Cache Datenbank-Cache enthält Ausschnitt der Daten aus der Backend-DB Informationen aus dem Datenbank-Cache verwenden

Constraint-basiertes Datenbank-Caching Ein Cache sollte … für den Benutzer transparent sein … keine/kaum Änderungen an bestehenden Web-Anwendungen erfordern … seinen Inhalt automatisch an die Benutzeranfragen anpassen  Constraint-basiertes Datenbank-Caching erfüllt diese Forderungen Cache-Constraints Spezifizieren den Inhalt des Cache Passen den Cache-Inhalt dynamisch an das Anfrageverhalten an Bilden einen Mechanismus, der das Füllen des Cache mit Datensätzen steuert Müssen jederzeit eingehalten werden, damit die Anfrageauswertung korrekte Ergebnisse liefert

Definition Cache Group = Menge von Cache-Tabellen und Cache-Constraints NU Darsteller (D) Id Vname Nname Wohnort U Regisseur (R) NU Id Vname Nname Wohnort U Darst_Film (DF) NU did fid Ort (O) NU PLZ Name Film (F) U NU Id Titel Ort Genre Regie U NU Füllspalte RCC-Spalte RCC Cache-Group Unique-Spalte Non-Unique-Spalte Genre (G) U NU Id Name

Definition Füllspalte, RCC Cache-Constraint, der für das Füllen der Cache Group mit Datensätzen verantwortlich ist Liste spezifiziert alle Werte w, die in den Cache eingelagert werden dürfen Cache-Verwaltung sorgt dafür, dass benötigte Datensätze eingelagert werden Referenzieller Cache-Constraint (RCC) Definiert Wertebeziehung zwischen zwei Spalten der Cache-Tabellen Gewährleistet, dass für jeden Wert in der RCC-Quellspalte die entsprechenden Join-Partner in der Zieltabelle ebenfalls vorhanden sind  RCCs ermöglichen die Auswertung von Anfragen mit Equi-Joins Vname Darsteller (D) Id Nname Wohnort Ort (O) PLZ Name

Sondierungsverfahren Prüfung, ob ein Wert im Cache vorhanden ist (einfacher Existenztest) SELECT * FROM Regisseur R, Film F WHERE R.id = '4711' AND R.id = F.regie Tabelle ist bei positivem Ergebnis Einstiegspunkt in Cache-Group  Equi-Joins entlang der RCCs können im Cache ausgewertet werden Cache-Verwaltung muß garantieren, daß alle Datensätze mit diesem Wert im Cache vorhanden sind, wenn die Sondierung positiv ausfällt  Wert muss wertvollständig sein Verfahren 1: (Altes Sondierungsverfahren) Sondierung wird im Allg. auf Füllspalten und Unique-Spalten durchgeführt  Alle Werte der Sondierungsspalte müssen wertvollständig sein  Sondierungsspalte ist bereichsvollständig  Bereichsvollständige Füllspalten notwendig

Neues Sondierungsverfahren Verfahren 2: (Neues Sondierungsverfahren) Sondierung wird auf RCC-Quellspalten durchgeführt  Ein Schritt zurück entlang der RCCs RCCs garantieren Wertvollständigkeit für Werte in der RCC-Zielspalte Bereichsvollständige Spalten werden nicht benötigt Id K1 K2 SELECT * FROM ORT WHERE PLZ = 67663 Vname Darsteller (D) Id Nname Wohnort Ort (O) PLZ Name Problem Füllspalten benötigen besondere Behandlung Lösung Einführung von Kontrolltabellen Nur Werte in den Kontrolltabellen werden vollständig gemacht

Einstiegspunkte: Altes Verfahren NU Darsteller (D) Id Vname Nname Wohnort U Regisseur (R) NU Id Vname Nname Wohnort U Darst_Film (DF) NU did fid Ort (O) NU PLZ Name Film (F) U NU Id Titel Ort Genre Regie U NU Füllspalte RCC-Spalte RCC Cache-Group Unique-Spalte Non-Unique-Spalte Genre (G) U NU Id Name  10 potentielle Einstiegspunkte in die Cache-Group

Einstiegspunkte: Neues Verfahren NU Darsteller (D) Id Vname Nname Wohnort U Regisseur (R) NU Id Vname Nname Wohnort U Darst_Film (DF) NU did fid Ort (O) NU PLZ Name Film (F) U NU Id Titel Ort Genre Regie U NU Füllspalte RCC-Spalte RCC Cache-Group Unique-Spalte Non-Unique-Spalte Genre (G) U NU Id Name  11 potentielle Einstiegspunkte in die Cache-Group

Anfragebearbeitung Anfrage: SELECT * FROM Regisseur R, Film F WHERE R.Id = 20 AND R.Id = F.Regie Sondierung R.Id = 20 Regisseur (R) Vname Id Nname Wohnort Film (F) Titel Ort Genre Regie negativ positiv Anfrage auf Backend-DB Auswerten Wert in Cache einlagern Regisseur ist Einstiegspunkt  verankern Existiert RCC R.Id  F.Regie negativ positiv Equi-Join- Auswertung nicht im Cache möglich Tabelle Film verankern

RCC-Zyklen Homogene Zyklen: Heterogene Zyklen: Enden nach einem Durchlauf  Sind sicher, d. h. es entstehen keine rekursiven Ladevorgänge Heterogene Zyklen: Sind im Allg. nicht sicher, d. h. sie verursachen rekursive Ladevorgänge  Keine heterogene Zyklen in Cache-Group-Definition Darsteller (D) Regisseur (R) Id Vname Nname Id Vname Nname Darsteller (D) Regisseur (R) Id Vname Nname Id Vname Nname

Existierende Prototypen: MTCache Entwickelt von Microsoft Cache auf Basis von materialisierten Sichten Werte in den Sichten durch Kontrolltabellen spezifiziert Cache besitzt Schattendatenbank, zur Erstellung des Anfrageplans Erweiterung des SQL-Sprachumfangs (zur Beschreibung von Konsistenzanforderungen) Leseoperationen Kostenbasierter Optimierer erstellt Anfrageplan Anfrageplan enthält Cache- und Backend-Tabellen Änderungsoperationen Änderungsoperationen werden in Backend-Datenbank ausgeführt Cache bleibt durch regelmäßige Schnappschüsse aktuell

Existierende Prototypen: DBCache Constraint-basierter Datenbank-Cache von IBM Erweiterungen im DB2-Datenbanksystem (neuer Objekttyp: Cache Table) Verwendung von Funktionen zum Zugriff auf föderierte Datenbanken Einsatz des alten Sondierungsverfahrens Überprüfung der potentiellen Einstiegspunkte in einer Existenz-Anfrage SELECT * FROM R, D WHERE R.Id = 20 AND D.Nname = 'Müller‚  EXISTS(R.Id = 20) AND EXISTS(D.Nname = 'Müller') Daemon lagert benötigte Datensätze in Cache ein (asynchron) Leseoperationen Janus-Plan: Zwei Anfragepläne (Local- und Remote-Plan) Switch-Operator entscheidet welcher Anfrageplan ausgeführt wird Änderungsoperationen Werden auf der Backend-Datenbank ausgeführt Änderungen werden durch Nachrichten an Cache propagiert (asynchron)

Vergleich der Prototypen Stärken und Schwächen von MTCache und DBCache MTCache DBCache + Transparenter Cache + Kontrolltabellen verhindern Einlagerung von Werten mit geringer Selektivität - Füllspalten sind bereichsvollständig (wegen alten Sondierungsverfahren). Existenz einer Liste mit erlaubten Werten zum Einlagern fehlt. - Kontrolltabellen von Administrator verwaltet. (Nicht bekannt, ob automatische Anpassung der Werte) + Einlagerung von Datensätzen geschieht nach Bedarf - Sondierung: Nur eine Existenzanfrage mit konjunktiver Verknüpfung aller potentiellen Einstiegspunkte - Kann wegen Erweiterung der SQL-Syntax nur auf Microsoft SQL-Server eingesetzt werden - Durch die Integration in die IBM DB2 kann kein anderes DBMS als Cache eingesetzt werden

CBCS: Überblick CBCS (Constraint-based Caching-System) Cache-DB Anwendungslogik CBCS (Constraint-based Caching-System) JDBC- Schnittstelle Starter Initialisierung Fill Daemon Hit Counter Garbage Collector Query Worker Middle-Tier Cache-DB Backend-DB

CBCS: Initialisierungskomponente Bereitet alle Komponenten für den Start vor Behandelt Fehler während der Initialisierung Zwei Initialisierungsarten Normale Initialisierung Auslesen der Konfigurationsdatei Erzeugung der internen Datenstruktur (Tabellen, Spalten, RCCs) Erstellen von Prepared Statements Initialisieren der übrigen Komponenten (Query Worker, Fill Daemon, …) Erweiterte Initialisierung (Ur-Initialisierung) Anlegen der spezifizierten Cache-Tabellen im Cache Anlegen der Kontroll- und Füllwert-Tabellen im Cache Anlegen von Indizes auf allen potentiellen Einstiegspunkten

CBCS: Middle-Tier-Komponente Verwaltet die Verbindungen zur Cache- und Backend-Datenbank Bietet eine homogene Sicht auf die Tabellen Stellt den übrigen Komponenten Schnittstellen zum DB-Zugriff bereit Vorteil: Cache- und Backend-Datenbank können leicht ausgetauscht werden Im CBCS muss „nur“ die Middle-Tier-Komponente angepasst werden

CBCS: Query Worker Bearbeitung von Leseoperationen Kern des CBCS Analysiert und Verarbeitet Benutzeranfragen Bearbeitung von Leseoperationen Anfrage gegen unterstützte SQL-Syntax validieren Prädikate der Where-Klausel extrahieren Für jeden potentiellen Einstiegspunkt Sondierung durchführen (neues Sondierungsverfahren) Anfrage modifizieren d. h. Backend-Tabellen durch verankerte Cache-Tabellen ersetzen Modifizierte Anfrage ausführen und Ergebnis zurückliefern Bearbeitung von Änderungsoperationen Wird noch nicht unterstützt

Anfragebearbeitung im Query Worker SELECT r.Name, Film.Titel FROM Regisseur r, Film WHERE r.Id = Regie AND r.Id = '4711' Einstiegspunkte suchen Generierter Baum Regisseur.Id Regisseur Film  Verankerte Tabellen Anfrage modifizieren Anfrage ausführen; Ergebnis zurückgeben SELECT r.Name, CA_FILM.Titel FROM CA_REGISSEUR r, CA_FILM WHERE r.Id = Regie AND r.Id = '4711' Middle-Tier- Komponente

CBCS: Fill Daemon Untersuchte Einlagerungsstrategien Läuft in einem eigenständigen Thread Lagert Datensätze in den Cache ein Wird vom Query Worker mittels Nachrichten über fehlende Werte (in einer Füllspalte) informiert Einlagerung geschieht asynchron zur Arbeit der Query Worker (eigenständiger Thread) Vorgefertigte Insert-Anweisungen (PreparedStatements) Untersuchte Einlagerungsstrategien Top-Down Bottom-Up

Einlagerungsstrategien: Top-Down Wichtig: Alle Cache-Constraints müssen nach jedem Einlagerungsvorgang wieder erfüllt sein !!! Einlagerungsvorgang startet auf der Kontrolltabelle Rekursiver Abstieg entlang der ausgehenden RCCs ABER: Gesamte Einlagerung muss innerhalb einer TA geschehen  Lange Schreibsperren auf den Cache-Tabellen Id K1 Darsteller (D) Regisseur (R) Id Vname Nname Wohnort Id Vname Nname Wohnort Darst_Film (DF) Ort (O) U NU Füllspalte RCC-Spalte RCC Cache-Group Unique-Spalte Non-Unique-Spalte Did Fid PLZ Name Film (F) Id Titel Ort Genre Regie Genre (G) Id Name

Einlagerungsstrategien: Bottom-Up Einlagerungsvorgang verläuft in umgekehrter Reihenfolge Topologische Sortierung notwendig Rekursiver Aufstieg entlang der RCCs Vorgang endet mit Füllen der Kontrolltabelle  Füllvorgang jeder Tabelle in eigener TA möglich Kurze Schreibsperren Keine unnötige Blockierung der Query Worker Id K1 Darsteller (D) Regisseur (R) Id Vname Nname Wohnort Id Vname Nname Wohnort Darst_Film (DF) Ort (O) U NU Füllspalte RCC-Spalte RCC Cache-Group Unique-Spalte Non-Unique-Spalte Did Fid PLZ Name Film (F) Id Titel Ort Genre Regie Genre (G) Id Name

Erzeugung der Füllanweisungen (während der Initialisierungsphase) 1. Cache-Tabellen in atomare Zonen einteilen Initialisierung: Jede Cache-Tabelle in eigener atomarer Zone Anschließend alle RCC-Pfade verfolgen RCC-Zyklus gefunden: Alle am Zyklus beteiligten Tabellen in eine Zone zusammenfassen 2. Atomare Zonen topologisch sortieren 3. Insert-Anweisungen für Kontrolltabelle generieren 4. Rekursiv alle ausgehenden RCCs verfolgen; Insert-Anweisung für jede erreichte Tabelle generieren 5. Tabelle besitzt keine ausgehenden RCCs  Auf höherer Rekursionsebene fortfahren Bei homogenem Zyklus: Alle ausgehenden, nicht am Zyklus beteiligten, RCCs verfolgen Bei heterogenem Zyklus: Generierung mit Fehlermeldung abbrechen

Atomare Zonen Bottom-Up-Verfahren: Probleme bei zyklischer Referenzierung  RCCs zwischen Cache-Tabellen werden verletzt  Alle Cache-Tabellen im Zyklus müssen in einer TA gefüllt werden Lösung Einführung von atomaren Zonen Atomare Zone enthält eine oder mehrere Tabellen Tabellen einer Zone werden in einer TA gefüllt [1] K1 Id K Regisseur (R) Id Vname Nname Wohnort [2] Film (F) R Id Titel Ort Genre Regie [3] O O Ort (O) F F PLZ Name

Generierung der Füllanweisungen K1 Id [1] Regisseur (R) Id Vname Nname Wohnort [2] Film (F) Id Titel Ort Genre Regie [3] Ort (O) PLZ Name Generierte Anweisungen: 1. INSERT INTO K1 (ID, TIME, LASTACCESS, HITCOUNTER) VALUES (?, ?, ?, 0) 2. INSERT INTO REGISSEUR SELECT * FROM REGISSEURB WHERE ID = ? AND (ID) NOT IN (SELECT ID FROM REGISSEUR) 3. INSERT INTO ORT SELECT * FROM ORTB WHERE PLZ IN (SELECT WOHNORT FROM REGISSEURB WHERE ID = ?) AND (PLZ, NAME) NOT IN (SELECT PLZ, NAME FROM ORT) 4. INSERT INTO REGISSEUR SELECT * FROM REGISSEURB WHERE WOHNORT IN (SELECT PLZ FROM ORTB WHERE PLZ IN (SELECT WOHNORT FROM REGISSEURB WHERE ID = ?) AND (ID) NOT IN (SELECT ID FROM REGISSEUR) …

Generierung der Füllanweisungen (Fort.) K1 Id [1] Regisseur (R) Id Vname Nname Wohnort [2] Film (F) Id Titel Ort Genre Regie [3] Ort (O) PLZ Name Generierte Anweisungen: 1. INSERT INTO K1 … 2. INSERT INTO REGISSEUR … 3. INSERT INTO ORT … 4. INSERT INTO REGISSEUR … 5. INSERT INTO FILM … 6. INSERT INTO FILM …

CBCS: Hit Counter Läuft in einem eigenständigen Thread Sammelt Statistikdaten, die der Garbage Collector zur Verdrängung von Datensätzen benötigt Query Worker informiert Hit Counter über jeden gefundenen Einstiegspunkt Hit Counter aktualisiert die Statistiken in den Kontrolltabellen, die für die Einlagerung des Einstiegspunkt verantwortlich sind Vorgefertigte Update-Anweisungen (für jeden potentiellen Einstiegspunkt) Query Worker Zugriff auf Spalte x Stats Hit Counter Statistiken aktualisieren

Generierung der HitCounter-Anweisungen K1 Id Darsteller (D) Id VName Nname Wohnort Ort (O) PLZ Name Where-Klausel: 1. WHERE PLZ = ? 2. WHERE WOHNORT IN (SELECT PLZ FROM ORT WHERE PLZ = ?) 3. UPDATE K1 SET lastAccess = ?, hitcounter = hitcounter + 1 WHERE (ID IN (SELECT ID FROM DARSTELLER WHERE WOHNORT IN (SELECT PLZ FROM ORT WHERE PLZ = ?)))

CBCS: Garbage Collector Läuft in einem eigenständigem Thread Überprüft periodisch, ob Cache spezifizierte Füllmarke überschreitet Löscht bei Überschreitung Datensätze aus dem Cache „Opfer“ wird anhand der Statistikdaten bestimmt (LRU-Strategie) Löscht Opfer aus Kontrolltabelle Anschließend rekursives Löschen entlang der ausgehenden RCCs (nur nicht referenzierte Datensätze werden gelöscht) Top-Down-Ansatz (Löschvorgang beginnt auf der Kontrolltabelle)  keine langen Schreibsperren  Cache besitzt nach jeder Löschoperation einen gültigen Zustand Stats Cache Opfer bestimmen Garbage Collector Opfer löschen

Generierung der Löschanweisungen K1 Id Darsteller (D) Id VName Nname Wohnort Ort (O) PLZ Name Generierte Anweisungen: 1. DELETE FROM K1 WHERE ID = ? 2. DELETE FROM DARSTELLER WHERE (ID NOT IN (SELECT ID FROM K1)) 3. DELETE FROM ORT WHERE (PLZ NOT IN (SELECT WOHNORT FROM DARSTELLER)) Aber: Zyklische Referenzierung verhindert das Löschen von Datensätzen

Gleichzeitiges Löschen und Einlagern K1 Id Darsteller (D) Löschvorgang Füllvorgang Id VName Nname Wohnort Ort (O) PLZ Name Ungültiger Cache-Zustand, da RCC D.Wohnort  O.PLZ verletzt ist Lösung: Einführung von Exklusivsperren  Cache darf zu einem Zeitpunkt nur von Fill-Daemon- oder Garbage-Collector-Instanzen bearbeitet werden

CBCS: JDBC-Schnittstelle Schnittstelle zwischen Benutzer und CBCS Einfache Einbindung in (bestehende) Web-Anwendungen Nimmt Anfragen des Benutzers entgegen Leitet alle Anfragen, für den Benutzer transparent, an die Query Worker weiter Stellt die Ergebnisse dem Benutzer in gewohnter Weise zur Verfügung Der Benutzer bemerkt die Existenz des CBCS nicht

Zusammenfassung Motivation Constraint-basiertes Datenbank-Caching Datenbank ist Flaschenhals in typischer Mehrschichten-Architektur Constraint-basiertes Datenbank-Caching Cache Group, Füllspalten, RCC, Sondierungsverfahren Einstiegspunkte und Anfrageauswertung Existierende Prototypen DBCache und MTCache Stärken-Schwäche-Analyse CBCS-Prototyp Übersicht über die Komponenten Query Worker, Fill Daemon, Hit Counter, Garbage Collector Anfragebearbeitung Einlagerungsstrategie (Bottom-Up) Löschstrategie (Top-Down) Wechselwirkung von Füll- und Löschvorgängen

Wie geht es weiter? Weiterentwicklung in vielen Bereichen möglich: Funktionale Erweiterungen Unterstützung von Änderungsoperationen Erweiterung der unterstützten SQL-Syntax Verbesserung der Performance Ausführliche Testreihen Optimierungen am Programmcode Entwicklung effizienterer Komponenten Erweiterung der Benutzerfreundlichkeit Entwicklung einer graphischen Benutzeroberfläche zur Steuerung des CBCS