Wer bringt den Müll raus? - Verteilung der Hauptaufgaben im CbDBC

Werbung
Wer trägt den Müll raus?
Verteilung der Hauptaufgaben im DatenbankCaching (CbDBC)
Joachim Klein, 26.09.2008
Ht
tp
Datenbank-Caching
Customers
WHERE Region=“west”
SQ
DB
Cache
SQL
Web
server
Application
server
Web
server
Application
server
Web
server
Application
logic
Browser requests
of clients
L
DB
Server
Customers
WHERE Region=“east”
Back-End (BE)
DB Server
Application
server
DB
Cache
SQL
Front-End (FE)
DB Server
Verteilung der Hauptaufgaben im CbDBC
2
Ht
tp
Datenbank-Caching
DBS
Customers
WHERE Region=“west”
SQ
DB
Cache
SQL
Web
server
Application
server
Web
server
Application
server
Web
server
Application
logic
Browser requests
of clients
L
DB
Server
Customers
WHERE Region=“east”
Back-End (BE)
DB Server
Application
server
DB
Cache
SQL
Front-End (FE)
DB Server
Verteilung der Hauptaufgaben im CbDBC
3
Hauptaufgaben
DBS
Sondierung
➔
Laden, Entladen
➔
Synchronisation
➔
(Adaption)
CacheDBMS
➔
BackendDBMS
BackendDaten
Wer?
Wann?
Gemeinsam?
CacheDaten
DBTransaktionen
(Anfragen)
Wie?
... ?
Aufgabenverteilung?
Verteilung der Hauptaufgaben im CbDBC
4
Funktionsprinzip
(Constraint-basiertes Datenbank-Caching)
SELECT p.Id, p.Name
FROM Person, Abt
WHERE p.Abt=a.Id
AND a.Name='GBIS'
order by p.Name
Backend-Datenbank
Abt.
Id
Name
Gebäude
01
02
GBIS
HIS
36
36
Person Id Name
Ort
Abt
1
2
3
4
KL
MZ
KL
ZW
01
02
02
01
Andreas
Thomas
Jürgen
Joachim
Verteilung der Hauptaufgaben im CbDBC
5
Funktionsprinzip
(Constraint-basiertes Datenbank-Caching)
SELECT p.Id, p.Name
FROM Person, Abt
WHERE p.Abt=a.Id
AND a.Name='GBIS'
order by p.Name
Backend-Datenbank
Abt.
Id
Name
Gebäude
01
02
GBIS
HIS
36
36
Cache-Datenbank
Person Id Name
Ort
Abt
1
2
3
4
KL
MZ
KL
ZW
01
02
02
01
Andreas
Thomas
Jürgen
Joachim
C_Abt. Id
01
Name
Gebäude
GBIS
36
C_Per. Id Name
Ort
Abt
1
4
KL
ZW
01
01
Verteilung der Hauptaufgaben im CbDBC
Andreas
Joachim
6
Funktionsprinzip
(Constraint-basiertes Datenbank-Caching)
Cache-Group
(Cache-Metadaten)
FC
C_Abt. Id Name Gebäude
Backend-Datenbank
Abt.
RCC
Id
Name
Gebäude
01
02
GBIS
HIS
36
36
C_Per. Id Name Ort Abt
Cache-Datenbank
Person Id Name
Ort
Abt
1
2
3
4
KL
MZ
KL
ZW
01
02
02
01
Andreas
Thomas
Jürgen
Joachim
SELECT p.Id, p.Name
FROM Person, Abt
WHERE p.Abt=a.Id
AND a.Name='GBIS'
order by p.Name
C_Abt. Id
01
Name
Gebäude
GBIS
36
C_Per. Id Name
Ort
Abt
1
4
KL
ZW
01
01
Verteilung der Hauptaufgaben im CbDBC
Andreas
Joachim
7
Funktionsprinzip
(Constraint-basiertes Datenbank-Caching)
Cache-Group
(Cache-Metadaten)
FC
C_Abt. Id Name Gebäude
Backend-Datenbank
Abt.
RCC
Id
Name
Gebäude
01
02
GBIS
HIS
36
36
C_Per. Id Name Ort Abt
Cache-Datenbank
Person Id Name
Ort
Abt
1
2
3
4
KL
MZ
KL
ZW
01
02
02
01
Andreas
Thomas
Jürgen
Joachim
SELECT p.Id, p.Name
FROM Person, Abt
WHERE p.Abt=a.Id
AND a.Name='GBIS'
order by p.Name
C_Abt. Id
01
Name
Gebäude
GBIS
36
Cache-Unit „GBIS“
C_Per. Id Name
Ort
Abt
1
4
KL
ZW
01
01
Verteilung der Hauptaufgaben im CbDBC
Andreas
Joachim
8
Problem: Verteilung
Beispiel: Ladevorgang
C_Abt. Id Name Gebäude
Lade: Abt.Name=“GBIS“
C_Per. Id Name Ort Abt
C_Ort Id Name Vorwahl Kreis
Einfüllen der Daten sollte
Bottom-Up erfolgen, da
sonst RCCs verletzt werden.
CacheDaten
Verteilung der Hauptaufgaben im CbDBC
9
Problem: Verteilung
Direktes Laden
BackendDBMS
Select-Anfrage
CacheDBMS
Anfrageergebnis
Einfügung
BackendDaten
CacheDaten
- Ablauf:
• nur schematisch
• wird mindestens ein mal pro zu füllender Tabelle durchlaufen
Verteilung der Hauptaufgaben im CbDBC
10
Problem: Verteilung
Direktes Laden
BackendDBMS
Select-Anfrage
CacheDBMS
✔ Direktes Einfüllen der
Anfrageergebnisse
Anfrageergebnis
Einfügung
BackendDaten
CacheDaten
- Ablauf:
• nur schematisch
• wird mindestens ein mal pro zu füllender Tabelle durchlaufen
Verteilung der Hauptaufgaben im CbDBC
11
Problem: Verteilung
Direktes Laden
BackendDBMS
Select-Anfrage
CacheDBMS
✔ Direktes Einfüllen der
Anfrageergebnisse
✔ Cache-DBMS organisiert
Ladevorgang
(Backend-DBMS entlastet)
Anfrageergebnis
Einfügung
BackendDaten
CacheDaten
- Ablauf:
• nur schematisch
• wird mindestens ein mal pro zu füllender Tabelle durchlaufen
Verteilung der Hauptaufgaben im CbDBC
12
Problem: Verteilung
Direktes Laden
BackendDBMS
Select-Anfrage
CacheDBMS
✔ Cache-DBMS organisiert
Ladevorgang
(Backend-DBMS entlastet)
Anfrageergebnis
Einfügung
BackendDaten
✔ Direktes Einfüllen der
Anfrageergebnisse
✔ Backend benötigt keinerlei
Cache-Metadaten
CacheDaten
- Ablauf:
• nur schematisch
• wird mindestens ein mal pro zu füllender Tabelle durchlaufen
Verteilung der Hauptaufgaben im CbDBC
13
Problem: Verteilung
Direktes Laden
BackendDBMS
Select-Anfrage
CacheDBMS
Anfrageergebnis
Einfügung
BackendDaten
CacheDaten
- Ablauf:
• nur schematisch
• wird mindestens ein mal pro zu füllender Tabelle durchlaufen
Verteilung der Hauptaufgaben im CbDBC
14
Problem: Verteilung
Direktes Laden
BackendDBMS
Select-Anfrage
CacheDBMS
✗ Mehrfaches Anfragen vom
Cache an Backend
 Latenzproblematik
Anfrageergebnis
Einfügung
BackendDaten
CacheDaten
- Ablauf:
• nur schematisch
• wird mindestens ein mal pro zu füllender Tabelle durchlaufen
Verteilung der Hauptaufgaben im CbDBC
15
Problem: Verteilung
Direktes Laden
BackendDBMS
Select-Anfrage
CacheDBMS
Anfrageergebnis
✗ Mehrfaches Anfragen vom
Cache an Backend
 Latenzproblematik
✗ Große Abhängigkeit vom
Füllgrad der Cache-Tabellen
Einfügung
BackendDaten
CacheDaten
- Ablauf:
• nur schematisch
• wird mindestens ein mal pro zu füllender Tabelle durchlaufen
Verteilung der Hauptaufgaben im CbDBC
16
Problem: Verteilung
Direktes Laden
BackendDBMS
Select-Anfrage
CacheDBMS
Anfrageergebnis
✗ Große Abhängigkeit vom
Füllgrad der Cache-Tabellen
Einfügung
BackendDaten
✗ Mehrfaches Anfragen vom
Cache an Backend
 Latenzproblematik
✗ Unkontrollierbar lange
Prädikate in Anfragen
CacheDaten
- Ablauf:
• nur schematisch
• wird mindestens ein mal pro zu füllender Tabelle durchlaufen
Verteilung der Hauptaufgaben im CbDBC
17
Problem: Verteilung
Indirektes Laden
BackendDBMS
Select-Anfragen
Anfrageergebnisse
CacheDBMS
1
CacheUnit
2
BackendDaten
Einfügungen
CacheDaten
1
aufsammeln: top-down
2
einfüllen: bottom-up
Verteilung der Hauptaufgaben im CbDBC
18
Problem: Verteilung
Indirektes Laden
BackendDBMS
Select-Anfragen
Anfrageergebnisse
CacheDBMS
1
CacheUnit
2
BackendDaten
✔ Cache-DBMS organisiert
Ladevorgang
(Backend-DBMS entlastet)
Einfügungen
CacheDaten
1
aufsammeln: top-down
2
einfüllen: bottom-up
Verteilung der Hauptaufgaben im CbDBC
19
Problem: Verteilung
Indirektes Laden
BackendDBMS
Select-Anfragen
Anfrageergebnisse
CacheDBMS
1
CacheUnit
2
BackendDaten
Einfügungen
✔ Cache-DBMS organisiert
Ladevorgang
(Backend-DBMS entlastet)
✔ Backend benötigt keinerlei
Cache-Metadaten
CacheDaten
1
aufsammeln: top-down
2
einfüllen: bottom-up
Verteilung der Hauptaufgaben im CbDBC
20
Problem: Verteilung
Indirektes Laden
BackendDBMS
Select-Anfragen
Anfrageergebnisse
CacheDBMS
1
CacheUnit
2
BackendDaten
Einfügungen
✔ Cache-DBMS organisiert
Ladevorgang
(Backend-DBMS entlastet)
✔ Backend benötigt keinerlei
Cache-Metadaten
✔ Geringe Abhängigkeit vom
Füllgrad der Cache-Tabellen
CacheDaten
1
aufsammeln: top-down
2
einfüllen: bottom-up
Verteilung der Hauptaufgaben im CbDBC
21
Problem: Verteilung
Indirektes Laden
BackendDBMS
Select-Anfragen
Anfrageergebnisse
CacheDBMS
1
CacheUnit
2
BackendDaten
Einfügungen
CacheDaten
1
aufsammeln: top-down
2
einfüllen: bottom-up
✔ Cache-DBMS organisiert
Ladevorgang
(Backend-DBMS entlastet)
✔ Backend benötigt keinerlei
Cache-Metadaten
✔ Geringe Abhängigkeit vom
Füllgrad der Cache-Tabellen
✔ Konstante Prädikatlänge
in Anfragen
Verteilung der Hauptaufgaben im CbDBC
22
Problem: Verteilung
Indirektes Laden
BackendDBMS
Select-Anfragen
Anfrageergebnisse
CacheDBMS
1
CacheUnit
2
BackendDaten
Einfügungen
CacheDaten
1
aufsammeln: top-down
2
einfüllen: bottom-up
Verteilung der Hauptaufgaben im CbDBC
23
Problem: Verteilung
Indirektes Laden
BackendDBMS
✗ Indirektes Einladen
Select-Anfragen
Anfrageergebnisse
CacheDBMS
1
CacheUnit
2
BackendDaten
Einfügungen
CacheDaten
1
aufsammeln: top-down
2
einfüllen: bottom-up
Verteilung der Hauptaufgaben im CbDBC
24
Problem: Verteilung
Indirektes Laden
BackendDBMS
✗ Indirektes Einladen
Select-Anfragen
Anfrageergebnisse
CacheDBMS
1
CacheUnit
2
BackendDaten
✗ Mehrfaches Anfragen vom
Cache an Backend
 Latenzproblematik
Einfügungen
CacheDaten
1
aufsammeln: top-down
2
einfüllen: bottom-up
Verteilung der Hauptaufgaben im CbDBC
25
Ergebnisse
Direktes Laden vs. indirektes Laden
Homogene Kette, drei Cache-Tabellen
25000
C_2
20000
NU
NU
Zeit [ms]
C_1
direktes Laden
indirektes Landen
15000
10000
C_3
NU
5000
0
300
100
700
500
900
1100
1500
1900
2300
2700
1300
1700
2100
2500
2900
Verteilung der Hauptaufgaben im CbDBC
26
Problem: Verteilung
Vorbereitetes, indirektes Laden
CU-Anforderung
BackendDBMS
SelectAnfragen
CacheUnit
CacheDBMS
1
Cache-Unit
CacheUnit
2
BackendDaten
Einfügungen
CacheDaten
1
aufsammeln: top-down
2
einfüllen: bottom-up
Verteilung der Hauptaufgaben im CbDBC
27
Problem: Verteilung
Vorbereitetes, indirektes Laden
CU-Anforderung
BackendDBMS
SelectAnfragen
CacheUnit
CacheDBMS
1
Cache-Unit
CacheUnit
2
BackendDaten
✔ Konstante Prädikatlänge
in Anfragen
Einfügungen
CacheDaten
1
aufsammeln: top-down
2
einfüllen: bottom-up
Verteilung der Hauptaufgaben im CbDBC
28
Problem: Verteilung
Vorbereitetes, indirektes Laden
CU-Anforderung
BackendDBMS
SelectAnfragen
CacheUnit
CacheDBMS
1
Cache-Unit
CacheUnit
2
BackendDaten
✔ Konstante Prädikatlänge
in Anfragen
✔ Geringe Abhängigkeit vom
Füllgrad der Cache-Tabellen
Einfügungen
CacheDaten
1
aufsammeln: top-down
2
einfüllen: bottom-up
Verteilung der Hauptaufgaben im CbDBC
29
Problem: Verteilung
Vorbereitetes, indirektes Laden
CU-Anforderung
BackendDBMS
SelectAnfragen
CacheUnit
CacheDBMS
1
Cache-Unit
CacheUnit
2
BackendDaten
✔ Konstante Prädikatlänge
in Anfragen
✔ Geringe Abhängigkeit vom
Füllgrad der Cache-Tabellen
Einfügungen
✔ Einmalige Anfrage an das
Backend
CacheDaten
1
aufsammeln: top-down
2
einfüllen: bottom-up
Verteilung der Hauptaufgaben im CbDBC
30
Problem: Verteilung
Vorbereitetes, indirektes Laden
CU-Anforderung
BackendDBMS
SelectAnfragen
CacheUnit
CacheDBMS
1
Cache-Unit
CacheUnit
2
BackendDaten
Einfügungen
CacheDaten
1
aufsammeln: top-down
2
einfüllen: bottom-up
Verteilung der Hauptaufgaben im CbDBC
31
Problem: Verteilung
Vorbereitetes, indirektes Laden
CU-Anforderung
BackendDBMS
SelectAnfragen
CacheUnit
✗ Indirektes Einladen
CacheDBMS
1
Cache-Unit
CacheUnit
2
BackendDaten
Einfügungen
CacheDaten
1
aufsammeln: top-down
2
einfüllen: bottom-up
Verteilung der Hauptaufgaben im CbDBC
32
Problem: Verteilung
Vorbereitetes, indirektes Laden
CU-Anforderung
BackendDBMS
SelectAnfragen
CacheUnit
✗ Indirektes Einladen
CacheDBMS
1
Cache-Unit
CacheUnit
2
BackendDaten
✗ Backend muss CacheGroup-Definitionen kennen
Einfügungen
CacheDaten
1
aufsammeln: top-down
2
einfüllen: bottom-up
Verteilung der Hauptaufgaben im CbDBC
33
Problem: Verteilung
Vorbereitetes, indirektes Laden
CU-Anforderung
BackendDBMS
SelectAnfragen
CacheUnit
✗ Indirektes Einladen
CacheDBMS
1
Cache-Unit
CacheUnit
2
BackendDaten
Einfügungen
✗ Backend muss CacheGroup-Definitionen kennen
✗ Backend muss das Aufsammeln
der Daten organisieren
CacheDaten
1
aufsammeln: top-down
2
einfüllen: bottom-up
Verteilung der Hauptaufgaben im CbDBC
34
Fazit: Verteilung
●
●
Zentral:
–
Aufwand für die Verwaltung der verteilten
Komponenten?
–
Verwaltung präziserer Metadaten:
●
bietet gezieltere Verarbeitungsmöglichkeiten
●
verursacht größeren Verwaltungsaufwand
noch wesentlich komplizierter:
–
Synchronisation, Adaption
Verteilung der Hauptaufgaben im CbDBC
35
Den Müll − bringt der
Cache raus!
Backend
Cache
Verteilung der Hauptaufgaben im CbDBC
36
Problem: Verteilung
Beispiel: Ladevorgang (1)
Backend-DBMS
Cache-DBMS
1
Aufsammeln, Einladen
(in einem Schritt)
2
Aufsammeln, Einladen
(in getrennten Schritten)
3
Aufsammeln
4
Aufsammeln, Einladen
(in getrennten Schritt)
5
Aufsammeln, Einladen
(in einem Schritt)
Einladen
C_Abt. Id Name Gebäude
C_Per. Id Name Ort Abt
C_Ort Id Name Vorwahl Kreis
CacheDaten
Verteilung der Hauptaufgaben im CbDBC
37
Problem: Verteilung
Vor- und Nachteile
Vorteile
1
2
- Backend ist entlastet
- direktes Einladen
- Backend benötigt
keinerlei zusätzliche
Metadaten
- Backend ist entlastet
- Backend benötigt
keinerlei zusätzliche
Metadaten
- unkontrollierbar lange
Prädikate in Anfragen
- kleine Abhängigkeit
vom Füllgrad der
Cache-Tabellen
3
- einmalige Anfrage
- Backend verwaltet
Metadaten/Wissen
- kleine Abhängigkeit
vom Füllgrad der
Cache-Tabellen
- kleine Abhängigkeit
vom Füllgrad der
Cache-Tabellen
- Cache ist entlastet
- mehrfache Anfragen
Nachteile
- große Abhängigkeit
vom Füllgrad der
Cache-Tabellen
- Backend hat kein
Wissen (z. B. über
den Füllzustand)
- indirektes Einladen
- mehrfache Anfragen
- Backend hat kein
Wissen (z. B. über
den Füllzustand)
4
- indirektes Einladen
- Backend teilweise
belastet
5
- Cache ist entlastet
- direktes Einladen
- große Abhängigkeit
vom Füllgrad der
Cache-Tabellen
- indirektes Einladen
- unkontrollierbar lange
Prädikate in Anfragen
- mehrfache Einfügeoperationen
- mehrfache Einfügeoperationen
- Backend benötigt
komplettes Wissen
- Backend benötigt
komplettes Wissen
- Backend ist stark
belastet
- Backend ist stark
belastet
Verteilung der Hauptaufgaben im CbDBC
38
Herunterladen