indizierung von graphen durch häufige subgraphen (2) maria tsitiridou...
TRANSCRIPT
Indizierung von Graphen durch häufige Subgraphen (2)
Maria Tsitiridou([email protected])
Indizieren und Anfragen von Graphen in Datenbanken Seminar, WS 2007/8
19.02.2008
Überblick
Einführung
-Tolerance Closed Frequent subGraphs (TCFGs)
Index-Konstruktion
Abfrage-Verarbeitung
Performanz-Bewertung
Schlussfolgerung und zukünftige Arbeiten
Einführung
Graph:• Immer mehr Graphendatenbanken
=> effiziente Abfrageverarbeitung notwendig!!
• Neuer effizienter Index für die Verarbeitung von Graphabfragen
Einführung
Grundlegende Begriffe:
• Größe von g size(g):= Die Anzahl der Kanten in g• Subgraph:= g Subgraph von g‘, (gg‘), wenn eine
Subgraph-Isomorphie von g nach g‘ existiert.• FG abgeschlossen (closed):= g ist abgeschlossen, wenn
g‘F: g‘g und freq(g‘)=freq(g)• FG maximal := g ist maximal, wenn g‘F : g‘g
Einführung
Graph-Abfrage: • Sei D={g1,…,gn} eine Graphdatenbank
• Eine Graph-Abfrage :Gegeben sei ein Graph q, finde alle gi D so, dass gi Übergraph von q, gi q
Einführung
Einführung
Einführung
Bisherige Lösungen: 1. Filtern: Nutze einen Index um einen Teil von falschen
Ergebnissen auszusortieren und erzeuge eine potentielle Antwortmenge (Kandidat)
2. Kandidaten-Überprüfung:Überprüfe, ob jeder Kandidat ein Übergraph von q ist.
Die Kandidaten-Menge ist kleiner als die DB => effizienter als die sequentielle Überprüfung , aber immer noch teuer!
Einführung
FG-Index [SIGMOD07]: • wurde konstruiert auf der Basis von häufigen
Subgraphen (FGs)• FG: Frequent subGraph• g ist ein häufiger Subraph (FG), wenn g ein Subgraph
von mindestens ( |D|) Graphen in einer Datenbank D, wobei 0
• ist ein vordefinierter Grenzwert
Einführung
Fallunterscheidung bei der Verwendung vom FG-Index:
1. q ist häufiger Subgraph (FG)
Antwort sofort ohne Kandidaten-Verifikation
Einführung
Fallunterscheidung bei der Verwendung vom FG-Index: 2. q ist kein häufiger Subgraph
Kandidatenmenge wird erzeugt
Einführung
Einführung
Herausforderung: Die Menge der FGs ist groß , wenn klein.
Viele FGs => großer Index => Hohe Zugriffskosten, wenn der Index zu groß für den Hauptspeicher=>Schlechte Abfrage-Performanz
Lösung: Kompressionstechnik anwenden (-TCFGs) • Über die Größe des Index regeln• Jedes -TCFG ist ein stellvertretender Übergraph von einem
Cluster von FGs.
-TCFGs
-TCFGs : Gegeben sei ein benutzerdefinierter Faktor mit 0
Ein häufiger Subgraph g ist ein -TCFG, wenn
g‘F : g‘g und freq(g‘) freq(g)
-TCFGs
de freq(g‘)/ freq(g)
•wenn de TCFG•Sonst kein TCFG
Bsp.: =0.04
T={f1,f4,f5,f8,f9,f13}
Abschluß (closure) eines -TCFGs
Nächster (closest) -TCFG Übergraph
gt ist der nächste -TCFG Übergraph von g, wenn
• gt ein -TCFG und g kein -TCFG ist
• gtg und g‘t : g‘tgt
Abschluß (closure) eines -TCFGs
Abschluß (closure) eines -TCFGs
closure eines -TCFGs:
Gegeben sei ein -TCFG gt ,
CLOS(gt )={g: gt ist der nächste -TCFG Übergraph von g }
Der nächste -TCFG Übergraph von einem FG ist eindeutig.
Bsp.: CLOS(f13)={f7,f10, f11, f12}
Index-Konstruktion
Invertierter Graph Index (IGI): Ein invertierter Index erstellt über eine Menge von Graphen G
• Ein Hash-Index aus der Menge der eindeutigen Kanten in G• Jede Kante ist mit einer Menge von ID‘s von Graphen in G
verknüpft, die die Kante enthalten.• Die ID‘s sind nach der Graphengröße weiter klassifiziert, um
effiziente Suche zu erzielen
Index-Konstruktion
Invertierter Graph Index (IGI):
Index-Konstruktion
Zwei-Level-Index-Struktur:
1. Im Hauptspeicher gehalten:Ein (IGI) erstellt aus der Menge der -TCFGs
2. Auf Festplatte gespeichert:Ein (IGI) erstellt aus dem Abschluss von jedem -TCFG.
Vollständigkeit des Index
• Der Index sollte in der Lage sein , jede Abfrage zu beantworten.
• Allerdings deckt der FG-Index nur die Abfragen ab, die häufige Subgraphen sind.
Edge-Index (Hash-Index) : gebildet aus der Menge der nicht-häufigen eindeutigen Kanten in der Datenbank.
Abfragen, die keine häufigen Subgraphen sind, können durch Zusammenfügen dieser Kanten beantwortet werden.
Abfrage-Verarbeitung
Abfrage q ist ein FG
• Den Hash-Index verwenden, um die Menge der Kanten von q im FG-Index zu finden
• Den Durchschnitt von den Graph-ID‘s-Arrays bilden, die mit den Kanten verknüpft sind
Abfrage-Verarbeitung
Abfrage q ist ein FG
• Der erste Übergraph, den wir über den Durchschnitt erhalten, ist entweder q oder q‘s nächster -TCFG Übergraph.
• Wenn q immer noch nicht gefunden wurde auf den verschachtelten IGI-Index von q‘s nächsten -TCFG Übergraphen zugreifen
• Wiederhole rekursiv bis q gefunden wird.
Abfrage-Verarbeitung
Abfrage q ist kein FG
• Verwende den FG-Index, um eine Menge von maximalen Subgraphen von q, Gs, zu finden.
• Verwende Edge-Index, um die Menge der nicht-häufigen Kanten von q, Ge, zu finden
Abfrage-Verarbeitung
Abfrage q ist kein FG
• Man erlange die Kandidaten-Menge von q, indem man den Durchschnitt von der Antwortmenge von den Graphen in Gs
und Ge bildet
• Überprüfe für jeden Kandidat, ob er ein Übergraph von q ist.
Performanz-Bewertung
Datenmengen• Reale Datenmenge: 10K Graphen einer Menge von
chemischen Molekülen aus der AIDS-Forschung• Künstliche Datenmengen für Skalierbarkeits-Tests bzgl.
1. Datenbankgröße: von 10K bis 100K Graphen2. Graphengröße: von 20 bis 100 Kanten3. Graphendichte: 0.1, 0.15, 0.2
Performanz-Bewertung
AlgorithmusVergleiche mit gIndex [YYH05]Index-Konstruktions-Performanz (reale Datenmenge)• =0.1 , FG-Index 20 mal schneller • =0.01, FG-Index 5 mal langsamer
Grund: Bei =0.1 : |F|= 455, während bei =0.01 |F|=59.120.
Performanz-Bewertung
AlgorithmusVergleiche mit gIndex [YYH05]Index-Konstruktions-Performanz (reale Datenmenge)• =0.1 , FG-Index 20 mal schneller • =0.01, FG-Index 5 mal langsamer
Grund: Bei =0.1 : |F|= 455, während bei =0.01 |F|=59.120.FG_Index (=0.1)
FG_Index (=0.01)
gIndex
Time (sec) 10.03 (10+0.03) 1085 (627+458) 217
Memory (MB) 2 95 107
|T| or |Fd| 195 21893 3276
Performanz-Bewertung
Abfrage-Antwortszeit (reale Datenmenge)
•Qi: Menge von 1000 Abfragen
•Jede Abfrage enthält i Kanten
Performanz-Bewertung
Abfrage-Antwortszeit (reale Datenmenge)
•Qi: Menge von 1000 Abfragen
•Jede Abfrage enthält i Kanten
Performanz-Bewertung
Speicherverbrauch (div. Abfrage-Größen)
•Speicherverbrauch ( FG-Index )
gering und stabil
viel geringer als gIndex
Schlussfolgerung
FG-Index:• Im Hauptspeicher abgelegt:
– Menge der -TCFGs – Größe gesteuert über
• auf Festplatte gespeichert:– Andere FGs (keine -TCFGs) indiziert mit verschachtelten
invertierten Indexes, die effiziente Suche erlauben.
Schlussfolgerung
Abfrage-Verarbeitung:• Abfrage q ist FG:
– Antwortmenge ohne Kandidaten-Verifikation
• Abfrage q ist kein FG:– Minimale Kandidaten-Verifikation
Schlussfolgerung
In der Zukunft:
Abfrage-Verarbeitung bei großen einzelnen Graphen.– Effiziente Abfrage bei div. Sozialen Netzwerken, Web usw.– Was indizieren und wie?
Ähnlichkeitssuche in Graph-Datenbanken– Exakte Übereinstimmung einschränkend f. manche Anwendungen– Ähnlichkeitsabfragen: Weglassen von manchen Kanten in der Query