Effizientes Einfügen und Reorganisieren von grossen Datenmengen

Slides:



Advertisements
Ähnliche Präsentationen
Prof. Dr. T. Kudraß1 Hash-Verfahren. Prof. Dr. T. Kudraß2 Einführung Drei Alternativen, wie Dateneinträge k* im Index aussehen können: 1. Datensatz mit.
Advertisements

Indizierung von Graphen durch häufige Subgraphen (2)
FH-Hof Der B-Baum Richard Göbel. FH-Hof Wahl des Verzweigungsgrad Verzweigungsgrad kann größer als 2 sein v Nachfolger für einen Knoten v-1 Werte in einem.
Der B-Baum Richard Göbel.
MySQL.
Suche in Texten (Stringsuche )
Synonyme: Stapel, Keller, LIFO-Liste usw.
Indexed Sequential Access Method
SendEplanung Datenbank
Sortierverfahren Richard Göbel.
Sortierverfahren Richard Göbel.
Der R-Baum Richard Göbel.
Effizienz: Indexstrukturen
Algorithmentheorie 04 –Hashing
WS Algorithmentheorie 05 - Treaps Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (23 – Sortieren vorsortierter Daten) Prof. Th. Ottmann.
Das Maßproblem von Klee
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (15 Hashverfahren: Verkettung der Überläufer) Prof. Th. Ottmann.
XINDICE The Apache XML Project Name: Jacqueline Langhorst
Gottfried Vossen 5. Auflage 2008 Datenmodelle, Datenbanksprachen und Datenbankmanagementsysteme Kapitel 16: Grundlagen des Data Mining.
Datenmodelle, Datenbanksprachen und Datenbankmanagementsysteme
Datenmodelle, Datenbanksprachen und Datenbankmanagementsysteme
IS: Datenbanken, © Till Hänisch 2000 CREATE TABLE Syntax: CREATE TABLE name ( coldef [, coldef] [, tableconstraints] ) coldef := name type [länge], [[NOT]NULL],
1 Linux Paging, Caching und Swapping. 1 Vortragsstruktur Paging – Das Virtuelle Speichermodell –Die Page Table im Detail –Page Allocation und Page Deallocation.
Transaktionen in verteilten Datenbanken
Externe Datenstruktur lineare Liste
Einführung Dateisystem <-> Datenbanksystem
Beispielrelation Buchbestellungen H = Menge der bedeutenden Ziele = {a, d} Schwelle T = 4 Stichprobe S = {a, b, a, a, a, a} mit s = |S| = 6 N = Anzahl.
Einführung und Überblick
- Schnittmengenbildung -
Datenmodelle, Datenbanksprachen und Datenbankmanagementsysteme
7.1 Externes Suchen Bisherige Algorithmen: geeignet, wenn alle Daten im Hauptspeicher. Große Datenmengen: oft auf externen Speichermedien, z.B. Festplatte.
Merge-Sort und Binäres Suchen /10D. Haehn Populäres algorithmisches Lösungsverfahren Populäres algorithmisches Lösungsverfahren Divide: Problem.
Eine Implementierung einer effiziente externe geordnete (!) lineare Liste Operationen: Search(x) Insert(x) Delete(x)
Einführung in die Programmierung
Diskrete Mathematik II
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Übung Datenbanksysteme II Index- strukturen
1 Nutzen Sie diese Powerpoint-Präsentation beim Selbstlernen oder in Veranstaltungen zur Einführung in das jeweilige Thema. Einführung Lernmodul Nutzungsbedingungen:
Algorithmen und Datenstrukturen Übungsmodul 11
Nichtkonventionelle Indexstrukturen Wave Indices Motivation Techniken Übersicht Update-Techniken Encoded Bitmap Indexing Einführung Datenzugriff über den.
ADAT©2004,2006 Dipl. - Ing. Walter SabinSeite: 48 Version 1.0a Recovery Wiederherstellung eines konsistenten Datenbankzustandes nach Fehlersituationen.
Betriebssysteme Übung Tutorium „TLB & Virtual Memory“
University of Würzburg Informatik III (Distributed Systems) Prof. Dr. P. Tran-Gia www3.informatik.uni-wuerzburg.de Towards Efficient Simulation of Large.
Vorlesung Datenbanksysteme vom Physische Datenorganisation
Lösungen zum Übungsblatt 3 zur Vorlesung Datenstrukturen Prof. R. Bayer, WS 2001/02 Übung 6.1: Konstruieren Sie den B-Baum aus der Klasse  h  der.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Datenstrukturen für den Algorithmus von.
C Tutorium – Shared Memory – Knut Stolze. 2 Shared Memory Ein Speicherbereich, auf den mehrere Prozesse Zugriff haben – Also kein privater Speicher –
Datenbank für Skriptenverkauf
Algorithmen und Datenstrukturen Prof. Dr. Ralf Möller Universität zu Lübeck Institut für Informationssysteme Stefan Werner (Übungen) sowie viele Tutoren.
Binärbäume.
Programmiersprachen II Fortsetzung Datenstrukturen Hashing Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Programmiersprachen II Fortsetzung Datenstrukturen Balancierte Bäume 2 Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Effektives Delta Laden DOAG SID Data Warehouse. Ziele Welche CDC Methoden gibt es? Typische Fallen Verschiedene Lösungsansätze praktische Beispiele.
Dr. Wolfram Amme, Automatische Speicherverwaltung, Informatik II, FSU Jena, SS Automatische Speicherverwaltung.
Reorganisation und Administration großer SAP-DB Manfred Riemer SAP AG (z.B. MCOD-Systeme)
SQL Basics Schulung –
DOAG SID Data Warehouse
Approximative Queryevaluierung
Multi-Source und Multi-View Konsistenz
Übungsblatt 3 zur Vorlesung Datenstrukturen Prof. R. Bayer, WS 2001/02
Modern File List – Die FAL-Extension Andreas Wolf | Michael Lang
Indexierung Oracle: indexes Indexierung.
Von Wietlisbach, Lenzin und Winter
Von Wietlisbach, Lenzin und Winter
 Präsentation transkript:

Effizientes Einfügen und Reorganisieren von grossen Datenmengen Datawarehouse / -mining Seminarvortrag WS 1998/99 Thomas Meyer iiic 14. Januar 1999

Übersicht Teil I Teil II Verschieben von Daten in Parallelen Daten-banken [AESN95] Effizientes Einfügen von Daten in Datenbanken [JNSSK97] Problemstellung OAT Algorithmus Bulk Algorithmus Vergleich OAT-Bulk Zusammenfassung Problemstellung Stepped Merge Alg. Stepped Hash Alg. Vergleich Zusammenfassung

Problemstellung A - H I - R S - Z L - Z A - K A - M N - Z Die optimale Datenverteilung kann nicht vorhergesehen werden Verschiebung der Daten muss oft Online erfolgen (24h, 7d Datenbanken) Modifizierung der Indexverzeichnisse (Start-, Zielknoten) sind mit einem erheblichen Zeitaufwand verbunden. (Bsp. Sybase SQL Server: bis zu 250 Indexverzeichnisse pro Relation möglich) Parallele Datenbank A - H I - R S - Z L - Z A - K A - M N - Z Einleitung OAT - Alg. BULK- Alg. Vergleich Résumé

Lösungsansatz Naiver Ansatz : Verschieben jedes einzelnen Records Kosten: löschen des Indexeintrags (Startknoten): mind. 1 random I/0 erzeugen eines neuen Indexeintrages (Zielknoten): mind. 1 random I/0 Relation Indexverzeichnis 1 Indexverzeichnis 2 Einleitung OAT - Alg. BULK- Alg. Vergleich Résumé

Anforderungen an Algorithmen Updates auf die Daten sollen während der Reorganisation möglich sein Die Zeit in der Locks gehalten werden soll minimiert werden Es darf stets nur eine Kopie der Daten sichtbar sein (Konsistenz) Es gibt zu keinem Zeitpunkt Daten, die aufgrund der Reorganisation nicht gefunden werden können Erreichen einer guten Systemleistung während der Reorganisationszeit Einleitung OAT - Alg. BULK- Alg. Vergleich Résumé

OAT ( One At a Time page movement ) Koordinierte Verschiebung ganzer Diskseiten einer Relation von einem Startknoten zu einem Zielknoten Während der Indexmodifikation werden die Datensätze in einem speziellen Buffer gehalten (Reorganisations-Buffer) Transaktionsmanager muss in jedem Falle den Reorganisationsbuffer aufsuchen Nur für den physikalischen Transfer werden Locks auf den Daten verwendet. Einleitung OAT - Alg. BULK- Alg. Vergleich Résumé

Startknoten: Senden einer Seite ( One At a Time page movement ) 1.) Seite wird in den «Reorganisationsbuffer» (RB) geladen 2.) für jedes Indexverzeichnis lösche die entsprechenden Einträge: Original - Relation Indexverzeichnis (Name) 3.) Unter Verwendung eines Locks (Lock1) sende die Seite zur Dest. 4.) Warte auf Ack, gib Lock1 frei 5.) Warte auf eine Proceed Msg Einleitung OAT - Alg. BULK- Alg. Vergleich Résumé

Zielknoten: Ankunft einer Seite 1.) Speichern der Seite im Reorg. Buffer, sende ACK an Startknoten 2.) für jedes Indexverzeichnis der Relation führe folgenden Schritt aus: Einzufügende Seite .... 3.) Speichere die Seite vom Reorganisationsbuffer auf die Disk 4.) Sende eine Proceed Msg an Source Einleitung OAT - Alg. BULK- Alg. Vergleich Résumé

Update eines Attributes Update am Startknoten Update am Zielknoten falls das Attribut schon ins Indexverzeichnis aufgenommen wurde: keine spezielle Behandlung erforderlich falls das Attribut noch nicht ins Indexverzeichnis aufgenommen wurde: update in der Sortierten Liste kein Einfügen eines neuen Indexeintrages nötig (Seite wird sogleich verschoben) kein Löschen des Indexeintrages nötig (wird durch Reorganizer sowieso erledig) Einleitung OAT - Alg. BULK- Alg. Vergleich Résumé

BULK - Algorithmus Alle Daten werden kopiert und auf einmal verschoben Die Daten werden am Zielknoten eingefügt während Updates weiterhin am Startknoten erfolgen Unter Verwendung eines Locks werden die Updates vom Startknoten geholt Query Path wird danach umgeleitet Einleitung OAT - Alg. BULK- Alg. Vergleich Résumé

BULK - Startknoten 1.) Erstelle eine Kopie der Daten, sende sie zum Zielknoten 2.) Speichere alle Updates auf diese Daten in einem Log - File 3.) Log - File wird vom Zielknoten abgeholt 4.) Lösche die entsprechenden Indexeinträge Einleitung OAT - Alg. BULK- Alg. Vergleich Résumé

BULK - Zielknoten 1.) Für jedes Attribut, für welches ein Indexverzeichnis existiert: «Bulk-File» Existierendes Indexverzeichnis der Dest. insert 2.) Hole die Updates vom Startknoten unter Verwendung eines Locks 3.) ändern des Query - Paths Einleitung OAT - Alg. BULK- Alg. Vergleich Résumé

Update eines Attributes Keine spezielle Behandlung erforderlich, da der Datenzugriffspfad erst geändert wird, wenn die Daten im Zielknoten komplett eingefügt worden sind Einleitung OAT - Alg. BULK- Alg. Vergleich Résumé

Experimenteller Vergleich Hot Spot Size : 200 Pages (Page-Size: 2KB) Startknoten/Zielknoten : je 128 Bufferpages Totale Reorganisationszeit Anzahl Indexe Einleitung OAT - Alg. BULK- Alg. Vergleich Résumé

Experimenteller Vergleich Durchschnittliche Antwortzeit Durchschnittlicher Transaktionsdurchsatz Anzahl Indexe Anzahl Indexe Einleitung OAT - Alg. BULK- Alg. Vergleich Résumé

Zusammenfassung Modifizierung der Indexverzeichnisse ist mit einem grossen Aufwand verbunden Die Zeit in der Locks gehalten werden muss minimiert werden OAT BULK Benötigt nur 1 zusätzliche Speicherseite Transaktionsmanager muss geändert werden i.a. besser als Bulk für Relationen mit <= 2 Indexverzeichnissen Erfordert viel zusätzlichen Speicherplatz sehr kurze Reorganisations dauer Einleitung OAT - Alg. BULK- Alg. Vergleich Résumé

Teil 2: Effizientes Einfügen Problemstellung Betrachtung von Systemen mit häufigen Insert - Operationen Insert Operationen sollen Online erfolgen Die Ankunft und Verteilung der Daten ist nicht vorhersehbar Beispiel: Erfassen von Telefongesprächen (im Gegensatz zum Erfassen von Börsenkursen) Motivation Stepped Merge Stepped Hash Vergleich Résumé

Naive Lösungsansätze Jeden Record einzeln einfügen: Kosten: mind. 2 I/O Operationenen (Seite holen, zurückschreiben) pro Record bei 1 Mio Einfügeoperationen/Std müsste alle 3ms ein Record eingefügt werden können. Periodisch updaten (über Nacht): DB ist nicht aktuell («out of date») Verletzt die Forderung nach 24h/7d Datenbank in der Reihenfolge der ankommenden Datensätze organisieren Einfügen ist effizient Abfragen sind sehr ineffizient Motivation Stepped Merge Stepped Hash Vergleich Résumé

Anforderungen an Algorithmen Die Anzahl Einfügeoperationen/Zeiteinheit soll maximiert werden  Minimierung der Anzahl Diskzugriffe  Daten müssen vorsortiert werden Effizientes Abfragen der Daten  Daten können gemäss beliebigem Key eingefügt werden Motivation Stepped Merge Stepped Hash Vergleich Résumé

Stepped Merge Algorithmus Die ankommenden Daten werden im Memory vorsortiert. Zur Sortierung wird ein B* Baum verwendet, genannt «Run» Ist der «Run» voll, so wird er auf die Disk geschrieben als «Level 0 Run» Existieren K Runs vom Level i, so werden diese zu einem Run vom Level i+1 verschmolzen, d.h. als grösserer Baum Ist ein bestimmtes Level erreicht, so wird der gesamte Run in die DB eingefügt. Motivation Stepped Merge Stepped Hash Vergleich Résumé

Stepped - Merge Algorithmus In - memory Run Level 0 Runs Level 1 Runs . . Level N-1 Run Datenbank Motivation Stepped Merge Stepped Hash Vergleich Résumé

Queries ..... Jedes Level hat bis zu K-1 Runs (Bsp. K=3). aufwendige Suche: Nebst der Datenbank müssen bis zu N*(K-1) Runs durchsucht werden DB ..... Level 0 Level 1 Level 2 Motivation Stepped Merge Stepped Hash Vergleich Résumé

Stepped Hash Algorithmus Memory wird in M0 Hash-Buckets aufgeteilt: (B0,0-B0,M0-1) Die ankommenden Daten werden dem Bucket B0,m mittels der Hash-Funktion m = Hashwert MOD M0 zugeordnet. Bei Ueberlauf eines Buckets Bi,j wird dieser auf die Disk verschoben und in K - Unterbuckets aufgeteilt. Daten des Buckets Bi,j werden auf die Unterbuckets Bi+1,m verteilt mittels der Hash-Funktion m = Hashwert MOD (M0*Ki+1) Level N-1 : Einfügen der Daten in die DB Motivation Stepped Merge Stepped Hash Vergleich Résumé

Stepped - Hash Algorithmus B0,0 B0,1 B0,2 B0,3 Level 0 (memory) B1,0 B1,11 Level 1 . B2,35 Level 2 . Level N-1 M0 == 4 ; K == 3 Datenbank Motivation Stepped Merge Stepped Hash Vergleich Résumé

Concurrency Control (1) Konsistenz: Updates auf Datensätze können in verschiedenen Levels vorkommen Lösung: Verwendung von Timestamps DB ..... Level 0 Level 1 Level 2 Motivation Stepped Merge Stepped Hash Vergleich Résumé

Concurrency Control (2) Beim Verschmelzen von 2 Runs kann derselbe Datensatz doppelt gefunden werden (oder gar nicht). Naiver Ansatz: Locks auf den Runs: Shared Locks für Queries, exklusive Locks für Reorganisations-prozess besserer Ansatz: Beim Verschmelzen der Runs wird eine neue Version des Run-Indexes erstellt Level i Level i+1 Motivation Stepped Merge Stepped Hash Vergleich Résumé

Experimenteller Vergleich Record Size: 20 Byte (Primary Key: 8 Byte) Page Size: 4 Kbyte Memory Buffer Size : 328 Kbyte Stepped Merge: 128 Kbyte für In Memory Run Stepped Hash: 32 Buckets am Anfang Motivation Stepped Merge Stepped Hash Vergleich Résumé

Experimenteller Vergleich Stepped Merge Stepped Hash Anzahl Records in der DB Anzahl Records in der DB Motivation Stepped Merge Stepped Hash Vergleich Résumé

Zusammenfassung Bei häufigen Insert-Operationen muss versucht werden, die Anzahl Diskzugriffe pro einzufügenden Record zu minimieren Dies erfolgt mittels Vorsortierung der Daten und Lazy Insert Stepped Merge und Stepped Hash liegt dieselbe Idee zu Grunde, die Implementation ist jedoch verschieden Stepped Merge schneidet bei Versuchen besser ab als Stepped Hash Motivation Stepped Merge Stepped Hash Vergleich Résumé

Referenzen 1.Teil: 2.Teil: [AESN95] Kiran J. Achyutuni, Edward Omiecinski, Shamkant B. Navathe «Two Techniques for On-Line Index Modification in Shared Nothing Parallel Databases», 1995 [T94] J. Troisi. «NonStop availability and database configuration operations». Tandem Systems Review, July 1994 [Vossen94] Gottfried Vossen «Datenmodelle, Datenbanksprachen, Datenbank Managment Systeme», 1994 2.Teil: [JNSSK97] H. V. Jagadish, P. P. S. Narayan, S. Seshadri, S. Sudarshan, Rama Kanneganti «Incremental Organization for Data Recording and Warehousing» 23rd VLDB Conference Athens, 1997 [OCGO96] Patrick o‘Neill, Edward Cheng, Dieter Gawlick, Elizabeth J.O‘Neill. «The Log-structured Merge Tree», Acta Informatica, 33:351-385, 1996