Datenbankauswertungen in großen Datenmengen - Spaltenorientierte Datenbank • Einführung: Probleme und Herangehensweise • Sybase Adaptive Server IQ und IQM • Prinzip-Überblick • Speicherungsstruktur und Indextypen • IQ Multiplex • Beispiele, Ergebnisse Jürgen Bittner SQL Projekt AG FSU 290610, 1 Das „gewöhnliche“ Performance-Problem Ein Select braucht zu viel Zeit,... was tun ? Schnellere Hardware ? Überprüfen des Kommandos Prüfen des Datenbank-Servers Prüfen der Datenbank SQL Projekt AG FSU 290610, 2 Ein Select braucht zu viel Zeit,... was tun ? Überprüfen des Kommandos Liegt eine ungünstige (evt. vermeidbare) Formulierung vor ? Besonderheiten der Hersteller sind zu beachten SQL Projekt AG FSU 290610, 3 Anfragebeispiel Mon Einr Typ Land Prod Abs 0105 32 G SA Werne 12 0105 36 G MV Becks 9 0105 38 G SA Radeb 28 0105 41 K NS Jever 11 SELECTCOUNT COUNT(DISTINCT (DISTINCTEinr) Einr) - AnzRadeb SELECT 0105 43 G SA Radeb 9 FROMAbsatz Absatz, FROM 0105 46 G BY Paula 3 47 M NW Dortm 70 49 K SA Lands 12 Wieviele Gastronomie-Einrichtungen in Sachsen haben kein „Radeberger“ ? COUNT(DISTINCT Einr) AS AnzRadeb WHERE(SELECT Land = ‘SA‘ AND 0105 FROM Absatz Typ = ‘G‘ AND 0105 WHERE AND DISTINCT Einr Einr = ISLand NOT=IN‘SA‘ (SELECT Typ = ‘G‘ AND FROM Absatz Prod = ‘Radeb‘) WHERE Land = ‘SA‘ AND WHERE Land = ‘SA‘ AND Typ = ‘G‘ SQL Projekt AG FSU 290610, 4 Typ = ‘G‘ AND Prod = ‘Radeb‘) Ein Select braucht zu viel Zeit,... was tun ? Überprüfen des Kommandos Liegt eine ungünstige (evt. vermeidbare) Formulierung vor ? Besonderheiten der Hersteller sind zu beachten Prüfen des Zugriffsplans: Wurde ein nicht erwarteter Ablauf generiert ? Index-Benutzung: Wurde ein wirkungsvoller Index nicht ausgewählt ? Fehlt ein Index ? Reihenfolge der Joins Maßnahmen: Diverse Eingriffe wie Hints (Force Index, Parallelization, number of pages per read,...) Zerlegung der Query in mehrere Schritte mit Hilfe temporärer Tabellen Update statistics, u.ä. Prüfen des Datenbank-Servers Einschalten eines Performance-Monitors SQL Projekt AG FSU 290610, 5 Ein Select braucht zu viel Zeit,... was tun ? Prüfen des Datenbank-Servers Einschalten eines Performance-Monitors Index-Benutzung Prozessaktivität Sperren Cache-Benutzung Task switches Prüfen der Datenbank Modifikation des Datenbank-Schemas Anlegen weiterer Indizes Einbauen von Aggregaten und anderen Redundanzen Partitionierung Häufig ergibt sich neues Konfliktpotential ! SQL Projekt AG FSU 290610, 6 Tuning stößt häufig an Grenzen Beispiele: „Spezial-Queries“ legen das komplette System lahm. Die Kapazität des Systems ist bereits bei irgendeiner Benutzer-Anzahl ausgeschöpft, es sollen aber zusätzliche, z.B. auch Intranet-Anwender unterstützt werden. Die Datenmengen sind sehr groß. Das Select wird von einem Endbenutzer-Werkzeug generiert. SQL Projekt AG FSU 290610, 7 Die grundlegende Entscheidung: Isolieren der Anfragen von den Transaktionen OLTP Server Daten Log SQL Projekt AG FSU 290610, 8 REP Agent Replication Server Stable Device Enterprise Connect Query Server Daten Log Data Warehouse Architektur BenutzerTool RDBMS Relationale DB SW-Pakete Data Staging (ETL) Enterprise Data Warehouse Datamart RDBMS Datamart Altdaten BenutzerTool BenutzerTool ROLAP Externe Quellen DatenBereinigungsTool Quelldaten Datamart Warehouse Admin. Tools Daten-Extraktion, Transformation und Laden SQL Projekt AG FSU 290610, 9 MOLAP unternehmenweites/ zentrales Data Warehouse neu strukturierte (‘Architected’) Data Marts BenutzerTool SQL Projekt AG FSU 290610, 11 Bei sehr großen Datenmengen – prinzipielle Performanceprobleme Beispielsituationen: „Das Analysesystem steht erst ab 11:00 Uhr morgens zur Verfügung.“ „Die Informationen sind immer auf dem Stand vom Vortag, benötigt werden aber Informationen, die max. 60 Minuten alt sind.“ „Das Data Warehouse speichert die Geschäftsvorgänge der letzten 6 Monate, benötigt werden aber die Trends über die letzten 2 Jahre oder mehr.“ SQL Projekt AG FSU 290610, 12 (Häufige) Probleme in Business Intelligence Anwendungen Antwortzeiten - sind zu lang Flexibilität und komplexe Abfragen - mit ständiger Erweiterung der Anforderungen (Ad-Hoc SQL) sind sehr problematisch Wachsende Nutzerzahl/ Datenmenge – Performance sinkt und genügt nicht mehr den Anforderungen Analyse auf Detaildatenebene - nicht alle Daten werden abgespeichert aufgrund der Größe des Datenbestandes Arbeit mit verdichteten Daten Speicherung und Analyse von (sehr) großen Datenbeständen – zu teuer in Speicher, Administration und Antwortzeit Online-Loads - parallel zum Auswerten nicht (immer) möglich SQL Projekt AG FSU 290610, 13 Hohe Performance bei Datenbankauswertungen •Einführung: Probleme und Herangehensweise • Sybase Adaptive Server IQ und IQM • Prinzip-Überblick • Speicherungsstruktur und Indextypen • IQ Multiplex • Beispiele, Ergebnisse SQL Projekt AG FSU 290610, 14 Der traditionelle RDBMS-Ansatz Berechne den durchschnittlichen Absatz von „Radeberger“ in GastronomieEinrichtungen in Sachsen je Monat der letzten 3 Jahre SELECT AVG (Abs), SUM(Abs)/AnzGSA/36 FROM Absatz, Mon Einr Typ Land Prod Abs 0105 32 G SA Werne 12 0105 36 G MV Becks 9 0105 38 G SA Radeb 28 0105 41 K NS Jever 11 0105 43 G SA Radeb 9 0105 46 G BY Paula 3 0105 47 M NW Dortm 70 0105 49 K SA Lands 12 (SELECT COUNT(DISTINCT Einr) AS AnzGSA Traditioneller FROM Absatz Ansatz: WHERE Land = ‘SA‘ AND verfügbar • Benutze einen Index wenn - benötigt normalerweise Table Scan Typ = ‘G‘) •WHERE Gehe Land zu den ausgewählten Datenseiten und addiere die Zahlen = ‘SA‘ AND Zufällige Verteilung der Daten führt dazu, daß fast alle Seiten gelesen werden Typ = ‘G‘ AND müssen. ‘Radeb‘ - AufProd jeder= Seite müssen alle - auch die irrelevanten - Daten gelesen werden. - SQL Projekt AG FSU 290610, 15 Das Problem: Große Datenmengen Berechne den durchschnittlichen Absatz von „Radeberger“ in GastronomieEinrichtungen in Sachsen je Monat der letzten 3 Jahre 360 Millionen Zeilen Mon Einr Typ Land Prod Abs 0105 32 G SA Werne 12 0105 36 G MV Becks 9 0105 38 G SA Radeb 28 0105 41 K NS Jever 11 0105 43 G SA Radeb 9 0105 46 G BY Paula 3 0105 47 M NW Dortm 70 0105 49 K SA Lands 12 200 Bytes pro Zeile 16K Seitengröße 4.500.000 I/O’s pro Table Scan werden benötigt, mit schneller Platte, d.h. 40MB/sec 30 Minuten !!! Sehr teuer und unflexibel bei Ad-hoc-Anfragen SQL Projekt AG FSU 290610, 16 Vertikale Partitionierung Sybase IQ: Daten sind in Spalten statt in Zeilen gespeichert. Vorteile: • Es werden nur die relevanten Daten gelesen • Einheitliche Datentypen deshalb Komprimierung möglich • Datenbank ist einfach zu ändern und zu verwalten SQL Projekt AG FSU 290610, 17 Einr Typ Einr Typ 9805 32 G 0105 32 G 9805 36 G 0105 36 G 9805 38 G 0105 38 G 9805 41 K 0105 41 K 9805 43 G 0105 43 G 9805 46 G 0105 46 G 9805 47 M 0105 47 M 9805 49 K 0105 49 K Mon Mon Land Land SA SA MV MV SA SA NS NS SA SA BY BY NW NW SA SA Prod Abs Prod Abs Werne 6 Werne 12 Becks 9 Becks 9 Radeb 5 Radeb 28 Jever 11 Jever 11 Radeb 9 Radeb 9 Paula 3 Paula 3 Dortm 7 Dortm 70 Lands 12 Lands 12 Vertikale Partitionierung Berechne den durchschnittlichen Absatz von Radeberger in GastronomieEinrichtungen in Sachsen je Monat der letzten 3 Jahre Sybase IQ: Es werden nur die relevanten Spalten gelesen Vorteile: Ohne weitere Techniken kann IQ den Disk-I/O sehr stark reduzieren SQL Projekt AG FSU 290610, 18 Mon Einr Typ Land Prod Abs 9805 32 G SA Werne 12 9805 36 G MV Becks 9 9805 38 G SA Radeb 28 9805 41 K NS Jever 11 9805 43 G SA Radeb 9 9805 46 G BY Paula 3 9805 47 M NW Dortm 70 9805 49 K SA Lands 12 Ergebnis im Beispiel: Reduzierung des Disk-I/O auf maximal 5% (ohne einen Index zu benutzen) Komprimieren der Daten SQL: Create table ABC OLTP Engine yellow, blue, red..magenta IQ SQL:Select sum (red) from ABC 1 2 3 4 ….. 100 Komprimieren in Zeilen bringt wenig wegen wechselnder Datentypen, sehr wirkungsvoll innerhalb einer Spalte Dekomprimieren von Zeilen ist ineffizient (CPU overhead) weil meist nur ein Teil benötigt wird Relative kleine Seitengröße bei OLTP bewirkt ungenutzten Platz Bit-wise and bit-mapped sehr platzgünstig Null values benötigen viel Platz in zeilen-orientierten DBMS Zeilen-orientierte DBMS benötigen 4 - 10 mal mehr Speicherplatz als IQM Db page 2-32KB SQL Projekt AG FSU 290610, 19 DB Page bis 2048 KB 1 2 3 4 …. 100 Platten-Laufwerke SQL: Create table ABC OLTP Engine SQL:Select sum (red) from ABC Problem kleine I/O Größe der zeilen-orientierten DBMS +90% braucht die Platte zum Suchen random I/O der zeilen-orientierten DBMS 1 2 3 4 ….. 100 IQ yellow, blue, red..magenta +90% braucht die Platte zum Suchen Suchzeiten verbessern sich nur langsam, CPUs schneller => mehr Laufwerke pro CPU Zeilen-orientiertes DBMS: 10 Laufwerke pro CPU (bevorzugt kleine Platten: 18-36GB) IQ : 0.5 -1 Laufwerke pro CPU (bevorzugt große Platten: 73-180320GB) Zeilen-orientierte DBMS benötigen 10 – 20 mal mehr Laufwerke als IQM pro CPU Db page 2-32KB Db page bis 2048 KB 1 2 3 4 …. 100 SQL Projekt AG FSU 290610, 20 Datenkompression - Radikale Senkung von Speicherbedarf und Wartung Herkömmliche DBMS Summaries Aggregates 1 – 2 TB Gleiche INPUT-Daten: “Konventionelles DW” ist 6x-10x größer als Sybase IQ DW Indexes 0,5 – 3 TB 1 TB INPUT DATA: Source: Flat Files, ETL, Replikation, ODS LOAD LOAD SQL Projekt AG FSU 290610, 21 0.25 0.9 TB Aggr/Summ: 0 – 0,1 TB Indexes: 0,05 – 0,3 TB Base table: 0,2 – 0,5 TB Base table “RAW data” no indexes 0,9 – 1,1 TB 2.4-6 TB Sybase IQ – Praxisergebnisse Performance vs. Oracle - (Kundenbeispiel Citibank) Oracle Sybase IQ Durchschnittl. Antwortzeit Ladezeit Plattenplatz 3.1 Std. 6.9 Min. 8.4 Std. 47 GB 3.1 Std. 8 GB Plattform 2-CPU 1-CPU Ausführen von sechs komplexen Anfragen - Bankenanwendung (select customer ID, group by product and account) SQL Projekt AG FSU 290610, 22 Hohe Performance bei Datenbankauswertungen • Einführung: Probleme und Herangehensweise • Sybase Adaptive Server IQ und IQM • Prinzip-Überblick • Speicherungsstruktur und Indextypen • IQ Multiplex • Beispiele, Ergebnisse SQL Projekt AG FSU 290610, 23 4 Basis-Index-Typen und weitere Spezial-Typen Bezeichnung Abkürzung Fast Projection FP High Group HG Low Fast LF High Non Group HNG Comparison Index CMP Word Index WD Join Index JI Date-, Time-, Datetime SQL Projekt AG FSU 290610, 25 Date,TIME,DTTM Wird für jede Spalte grundsätzlich Verwendet, Default Index Für UNIQUE und PRIMARY KEY notwendig Fast Projection (FP) Die Daten einer Spalte werden komprimiert gespeichert, abhängig von Datentyp und Kardinalität. Land Sachsen Sachsen-Anhalt Thüringen Niedersachsen Hessen Brandenburg Sachsen Hessen SELECT Land FROM Landtabelle WHERE Land LIKE ‘Sa%‘ Default Speicherung, die automatisch durch IQ realisiert wird und nicht entfernt werden kann für alle Spalten: notwendig für select list Spalten, string Suche, ad-hoc joins SQL Projekt AG FSU 290610, 26 Fast Projection (FP) Häufig wird dieser Default Index mit einem oder mehreren Indizes anderer IQ Index Typen verbunden. benutzt bei wildcard string Suche—z.B., LIKE ’%sys%’ Günstig für Berechnungen — z.B. SUM (A + B) Einzige Möglichkeit für Datentyp BIT Spaltenbeispiele: Addresse Name Texte SQL Projekt AG FSU 290610, 27 Fast Projection (FP) Subtype: FP(1) Land Sachsen Sachsen-Anhalt Thüringen Niedersachsen Hessen Brandenburg Sachsen Hessen SQL Projekt AG FSU 290610, 28 Sachsen Sachsen-Anhalt Thüringen Niedersachsen Hessen Brandenburg 1 1 2 2 3 3 4 4 5 5 6 6 1 5 Fast Projection (FP) Falls die Werteanzahl der Spalte < 256 ist, werden die Daten der Spalte als Fast Projection FP(1) anstelle von FP gespeichert 1-Byte look-up table Der Server versucht beim Laden FP(1) Setzt auf FP(2) nachdem 256 Werte erkannt wurden Der Datenbank-Administrator kann die Kardinalität der Spalte in der create table syntax durch Benutzung des UNIQUE Parameters angeben SQL Projekt AG FSU 290610, 29 Fast Projection (FP) Subtype: FP(2) Prod Radeberger Wernesgrüner Radeberger Landskron Becks Radeberger Paulaner Wernesgrüner Klosterbräu SQL Projekt AG FSU 290610, 30 Radeberger Wernesgrüner Landskron Becks Paulaner Klosterbräu 1 1 1 1 2 2 2 2 3 3 1 1 4 4 3 3 5 5 4 4 6 6 1 1 5 5 2 2 6 6 Fast Projection (FP) Falls die Werteanzahl der Spalte > 256 und < 65.536 ist, werden die Daten der Spalte als FP(2) anstelle von FP gespeichert 2-Byte look-up table Setzt auf FP(3) nachdem 65.536 Werte erkannt wurden Der Datenbank-Administrator kann die Kardinalität der Spalte in der create table syntax durch Benutzung des UNIQUE Parameters angeben SQL Projekt AG FSU 290610, 31 Low Fast (LF) Bitmap Index einschl. B-tree, der für Spalten mit kleiner Kardinalität benutzt wird Prod Radeberger Wernesgrüner Radeberger Landskron Becks Radeberger Paulaner Wernesgrüner Klosterbräu Radeber ger Wernes grüner Landskr on 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 SELECT * FROM Absatz WHERE Prod = ‘Radeberger‘ Für jeden Spaltenwert ein Bitmap Menge solcher Bitmaps für Bearbeitung fast aller Anfragen angewendet Ideal für Spalten mit einer Kardinalität <1500 SQL Projekt AG FSU 290610, 32 Low Fast (LF) wird angewendet bei folgenden Anfrageoperationen: Suchargumente in where-Klauseln Joins GROUP BY ORDER BY Spaltenbeispiele: Geschlecht Ja/nein Produktname Land Datum (falls < 1500 verschiedene Werte) SQL Projekt AG FSU 290610, 33 Dramatische I/O-Reduzierung “Wieviele Männer sind in Kalifornien nicht versichert?“ RDBMS 800 Bytes x 20M Geschlecht Staat Versichert = 1.000,000 I/Os M CA J 16K Seite M W M M W 20M Sätze CA NY CA MA CT N J N J N Verarbeitet grosse Mengen nicht benötigter Daten Erfordert oft “Full Table Scan” 800 Bytes/Satz Geschlecht 1 2 3 4 M M W M Staat Versichert CA CA NY CA SQL Projekt AG FSU 290610, 34 J N J N 20M Bits x 3 Spalten / 8 = 470 I/Os 16K Seite 20M Bits 1 1 0 1 + 1 1 0 1 + 0 1 0 1 = 2 High Non Group (HNG) Bit-weiser Index, optimiert für Bereichs-Suche und Aggregations-Funktionen Binäre Darstellung HNG-Index für Abs Abs 12 9 28 11 9 3 70 12 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 1 1 0 0 1 1 0 1 0 0 0 1 1 0 0 0 1 0 1 1 0 0 1 0 1 1 1 0 0 64 32 16 8 4 2 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 1 1 0 0 1 1 0 1 0 0 0 1 1 0 0 0 1 0 1 1 0 0 1 0 1 1 1 0 0 1 0 1 6 4 3 4 Beispiel: SELECT SUM(Abs) FROM Absatz (1 * 64) + (0 * 32) + (1 * 16) + (6 * 8) + (4 * 4) + (3 * 2) + (4 * 1) = 154 SQL Projekt AG FSU 290610, 35 High Non Group (HNG) Nicht-werte-basierter Bitmap-Index Ideal für Spalten, die benutzt werden in: Ranges BETWEEN SUM( ) und AVG( ) Funktionen Spaltenbeispiele: Datum (falls > 1500 verschiedene Werte) Beträge Mengen SQL Projekt AG FSU 290610, 36 High Group (HG) Index für Daten mit hoher Kardinalität SQL Projekt AG FSU 290610, 37 High Group (HG) Verbesserter B-tree Index zur Ausführung von = und GROUP BY Operationen auf Spalten mit hoher Kardinalität Für Spalten mit großer Anzahl eindeutiger Werte (>1500) Wird benutzt, wenn die Spalte an einem Join beteiligt ist Spaltenbeispiele: Produkt Id Mitarbeiter ID SQL Projekt AG FSU 290610, 38 Prinzipielle Herangehensweise bei der Indexierung von Tabellen SQL Projekt AG FSU 290610, 39 Prinzipielle Herangehensweise bei der Indexierung von Tabellen (Forts.) SQL Projekt AG FSU 290610, 40 4 Basis-Index-Typen und weitere Spezial-Typen Bezeichnung Abkürzung Fast Projection FP High Group HG Low Fast LF High Non Group HNG Comparison Index CMP Word Index WD Join Index JI Date-, Time-, Datetime SQL Projekt AG FSU 290610, 41 Date,TIME,DTTM Wird für jede Spalte grundsätzlich Verwendet, Default Index Für UNIQUE und PRIMARY KEY notwendig Optimierte Speicher - / Indexstrukturen Beispiel – Abfrage: Berechne die Summe des Umsatzes, den durchschnittlichen Wert eines Verkaufs und die Anzahl der Verkäufe je Monat und Kunde für eine spezielle Produktart SELECT Kunde.Name, Verkauf.Monat, SUM(Verkauf.Wert), AVG(Verkauf.Wert), Count(Verkauf.Verkauf_id) FROM Kunde, Verkauf Where Kunde.Kunde_id = Verkauf. Kunde_id AND Verkauf.Produkt_Name LIKE “%anzug%” AND Verkauf.Jahr = 2000 GROUP BY Verkauf.Monat, Kunde.Name SQL Projekt AG FSU 290610, 42 Optimierte Speicher - / Indexstrukturen SELECT Kunde.Name, Verkauf.Monat, SUM(Verkauf.Wert), AVG(Verkauf.Wert), Count(Verkauf.Verkauf_id) FROM Kunde, Verkauf Where Kunde.Kunde_id = Verkauf. Kunde_id AND Verkauf.Produkt_Name LIKE “%anzug%” AND Verkauf.Jahr = 2000 GROUP BY Verkauf.Monat, Kunde.Name 2 “Fast Projection” Indizes für die Projektion 1 “High Non Group” Index für die Aggregatbildung 4 “High Group” Indizes für die Aggregatbildung, die JoinVerarbeitung und das Gruppieren pro Kunde 2 “Low Fast” Indizes für die Suchbedingung und das Gruppieren auf Monatsebene 1 Word Index für Zeichenkettensuche SQL Projekt AG FSU 290610, 43 Beispiel SELECT AVG (Abs), SUM(Abs)/AnzGSA/36 FROM Absatz, (SELECT COUNT(DISTINCT Einr) AS AnzGSA FROM Absatz WHERE Land = ‘SA‘ AND Typ = ‘G‘) WHERE Land = ‘SA‘ AND Typ = ‘G‘ AND Prod = ‘Radeb‘ 1 “High Non Group” Index für die Aggregatbildung 1 “High Group” Index für die Aggregatbildung 3 “Low Fast” Indizes für die Suchbedingung SQL Projekt AG FSU 290610, 44 Vertikale Partitionierung Berechne den durchschnittlichen Absatz von Radeberger in GastronomieEinrichtungen in Sachsen je Monat der letzten 3 Jahre Sybase IQ: Es werden nur die relevanten Spalten gelesen Vorteile: Ohne weitere Techniken kann IQ den Disk-I/O sehr stark reduzieren SQL Projekt AG FSU 290610, 45 Mon Einr Typ Land Prod Abs 9805 32 G SA Werne 12 9805 36 G MV Becks 9 9805 38 G SA Radeb 28 9805 41 K NS Jever 11 9805 43 G SA Radeb 9 9805 46 G BY Paula 3 9805 47 M NW Dortm 70 9805 49 K SA Lands 12 Ergebnis im Beispiel: Reduzierung des Disk-I/O auf maximal 5% (ohne einen Index zu benutzen) Vertikale Partitionierung Berechne den durchschnittlichen Absatz von Radeberger in GastronomieEinrichtungen in Sachsen je Monat der letzten 3 Jahre Mon Einr Typ Land Prod Abs 9805 32 G SA Werne 12 9805 36 G MV Becks 9 9805 38 G SA Radeb 28 9805 SELECT AVG (Abs), SUM(Abs)/AnzGSA/36 41 K NS Jever 11 9805 43 G SA Radeb 9 Sybase IQ: Es werden nur die Einr) 9805 (SELECT COUNT(DISTINCT ASrelevanten AnzGSA Spalten gelesen 46 G BY Paula 3 9805 47 M NW Dortm 70 9805 49 K SA Lands 12 FROM Absatz, FROM Absatz WHERE Land = ‘SA‘ AND Typ = ‘G‘) WHERE Land = ‘SA‘ AND Typ = ‘G‘ AND Prod = ‘Radeb‘ SQL Projekt AG FSU 290610, 46 Ergebnis im Beispiel: Reduzierung des Disk-I/O auf max. 2% Eurostat : wide table – 10 Mio rows SQL Projekt AG FSU 290610, 47 Eurostat : Horizontale Partitionierung SQL Projekt AG FSU 290610, 48 Eurostat : Vertikale Partitionierung SQL Projekt AG FSU 290610, 49 Eurostat : In IQ-M SQL Projekt AG FSU 290610, 50 Sybase IQ und überprüfte Einsparungen bei Plattenspeicher Sybase IQ DATA COMPRESSION Beispiele Geladene Rohdaten Sybase IQ komprimiert Erwartete Datenexplosion bei anderen Anbietern Sun DWH Reference Architecture (InfoSizing – August 2007) 1 PB 260 TB 3 PB bis 7 PB Sun DWH Reference Architektur (InfoSizing – June 2004) 155 TB 55 TB 500 TB bis 1,000 TB Telefonica 70TB 15 TB 210 TB bis 490 TB comScore Networks 40 TB 16 TB 120 TB bis 280 TB Health Insurance Review Agency 27 TB 12 TB 81 TB bis 189 TB Samsung Card 15 TB 7 TB 45 TB bis 105 TB Nielsen Media Research 12 TB 12 TB 36 TB bis 84 TB Large Credit Card Company 10 TB 4 TB 30 TB bis 70 TB SQL Projekt AG FSU 290610, 51 Hohe Performance bei Datenbankauswertungen • Einführung: Probleme und Herangehensweise • Sybase Adaptive Server IQ und IQM • Prinzip-Überblick • Speicherungsstruktur und Indextypen • IQ Multiplex • Beispiele, Ergebnisse SQL Projekt AG FSU 290610, 52 Skalierbarkeit “Starte klein und wachse” mit Sybase IQ Multiplex Konfiguration IQ-M IQ-M IQ-M IQ-M IQ-M CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU Fiber Channel Storage Area Network Skaliert wie ein Grid SQL Projekt AG FSU 290610, 53 Starten mit einem Server Hinzufügen von CPUs u. Speicher nach Bedarf Multiplexing ermöglicht es, weitere Server und CPUs hinzuzufügen dabei kein bis minimaler Verlust an Skalierbarkeit; die 1000ste CPU wird so gut wie die erste CPU performen Terabytes an Festplatten können ins SAN eingefügt werden IQ-M wird diese effektiv nutzen Skalierbarkeit Nachgewiesen im Labor und bei Kunden Sybase IQ Multiplex Test der Skalierfähigkeit Anwender 500 400Users 400 360 98% 320 300 280 240 200 100 200 40 User Antw-Zeit: 31 sec 120 80 40 0 400 User Antw-Zeit = 31.6 sec Erhöhung : 1.9% (0.6 sec) 160 31.6 sec Knoten 31 sec 1 2 3 4 5 6 7 Workload: Each user executing random sequence of (TPC/H-like) queries (Source : HP Lab in San Bruno, CA) SQL Projekt AG FSU 290610, 54 8 9 10 Skalierbarkeit Einfache Administration und implizite Hochverfügbarkeit Read/ Write Read/ Write Read/ Write Knoten Knoten Knoten IQ-M IQ-M IQ-M Read Knoten Read Knoten IQ-M IQ-M CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU SKALIERBARKEIT Nach hinzufügen eines Knotens KEIN globaler Lock Manager nötig KEINE Datenumverteilung erforderlich KEINE Änderungen im Schema SEHR geringe I/O Contention HOCHVERFÜGBARKEIT Fiber Channel Storage Area Network Skaliert wie ein Grid SQL Projekt AG FSU 290610, 55 - Keine Unterbrechung des Datenbankzugriffs für andere Knoten - Andere Knoten werden durch Ausfall nicht beeinflußt --Anwender können Queries nach Start des Knotens einfach wiederholen oder automatisch auf anderen Knoten ausweichen (Sybase Open Switch, HW, …) -Bei gespiegelten Platten “no single point of failure” Architektur Technische Limits Geeignet für sehr große Datenbanken Datenbankgröße: Betriebssystemabhängig Maximal 192 PByte Anzahl Tabellen pro Datenbank: Zeilen pro Tabelle: Tabellen/ Views in einer Query: 4.293.918.719 248 512 Feldgröße für “Long Varchar” oder “Long Binary” IQ Page Größe 128K: bis zu 512 TB IQ Page Größe 512K: bis zu 1 PB Größe einer Page: Anzahl Spalten pro Tabelle: SQL Projekt AG FSU 290610, 56 64 KB bis 512 KB 45.000 Speicherung ALLER relevanten Daten in EINEM System Internet Anwender können weiter ihren bisherigen Email Client nutzen – können aber auch auf das System zugreifen (E-mail und Dokumente) •Dokumente •Bilder •Video •Audio •Fax •Datei und DB Backup •Andere Daten Partnerlösung ( Optional ) •DW •Transaktionen Sybase IQ SQL Projekt AG FSU 290610, 57 Vorhandener E-mail Server Partnerlösung Dokumente und E-mail Clients Weitere Daten können in der Lösung nach Bedarf hinzugefügt werden Sun Reference Warehouse Architecture Juli 2007 - weltgrößtes DWH Die Sun Data Warehouse Referenz Architektur, bestehend aus SolarisTM 10 OS, Sybase® IQ und BMMsoft DataFusionTM mit einem Sun SPARC® Enterprise M9000 Server erbrachte folgende wichtige Ergebnisse: Es wurden ein 1 PByte transaktionale Rohdaten (6 Trillionen Sätze mit Kursdaten von Börsen) in ein voll indexiertes Starschema geladen Es wurde eine Ladegeschwindigkeit von 285 Milliarden Sätze pro Tag (3 Millionen Sätze pro Sekunde) erzielt Es wurde eine 85%-ige Datenkompression bei der Speicherung von einem PByte transaktionaler Rohdaten erreicht – diese Daten belegten weniger als 260 TByte Plattenplatz im System Es zeigte eine durchschnittliche „Ready-Time“ von kleiner zwei Sekunden nach dem Hinzufügen von neuen Daten in das Data Warehouse Es wurde die Hälfte der „T“ (Transaktional) Daten mit über 72 Terabyte an “EDM” (Emails, Dokumente und Multimedia) Daten ersetzt – Aufbau eines 572 TByte großen Data Warehouse mit „EDMT“ Daten Es wurde eine Ladegeschwindigkeit von 26 TByte pro Tag beim Aufbau eines Data Warehouse mit 185 Millionen Dokumenten (Emails, Attachements und andere unstrukturierte Dokumente) erreicht Es wurde eine Ladegeschwindigkeit von zwei Millionen Emails pro Stunde und 6 Millionen Dokumente pro Stunde erreicht – dabei wurden weniger als 7% der verfügbaren CPU Leistung benötigt SQL Projekt AG FSU 290610, 58 Sun DWH Reference Architecture Reference Architecture Ein Sun SPARC® Enterprise M9000 Server mit Solaris™ 10 Drei Sun StorageTek™ 6540 Storage Arrays verbunden mit dem Server über Fiber Channel Sybase® IQ 12.7 Enterprise Edition BMMsoft DataFusion für die Verwaltung unstrukturierter Daten und Emails Quelle: Sun Data Warehouse Reference Architecture for Structured and Unstructured Data, InfoSizing, August 20, 2007 SQL Projekt AG FSU 290610, 59 Hauptspeichernutzung Sybase IQ Writer nutzte 64 Cores (mit zusammen 128 Threads) und 100 GB Hauptspeicher 45 GB Hauptspeicher für den Sybase IQ Ladeprozess und als Cache für Teile der geladenen Dateien Der BMMsoft DataFusion Ladeserver nutzte 64 Cores (mit zusammen 128 Threads) und 40 GB Hauptspeicher 20 GB Hauptspeicher für Solaris 10 zur Optimierung von Swapping und Paging Hohe Performance bei Datenbankauswertungen • Einführung: Probleme und Herangehensweise • Sybase Adaptive Server IQ und IQM • Prinzip-Überblick • Speicherungsstruktur und Indextypen • IQ Multiplex • Beispiele, Ergebnisse SQL Projekt AG FSU 290610, 60 Online-Archiv auf Basis Sybase IQ Sybase ASE und heterogene Umgebungen CICS Trx IBM MVS (z/OS) DB2(CICS) PLACE_ Direct DB2(IMS) DB2(DRDA)ORDER Connect IDMS IMS VSAM TABLE KUNDE Applikation ASE CIS Technologische Grundlagen: TABLE ORDER ODBC Informix Direct Connect Microsoft VERTRAG Oracle PLACE_.. DB2/UDB Component Integration Services von Sybase ASE Proxy Tabellen Union in Views Instead-of-Trigger (ASE 15.0.2) Transparent für SQL Physik. Speicherung/ Logik Proxy Tabelle SQL Projekt AG FSU 290610, 61 AS/400 TABLE VERTRAG ORDER_ HISTORY Archiv: Sybase IQ TABLE ORDER_ HISTORY Partnerlösungen (Auswahl) PBS (Deutschland) Rent-a-Brain (Deutschland) SAP BI Archivlösung iMarc-Emailarchivierung Dokumentenarchivierung BMMSoft (USA) Email/-/ Dokumentenarchivierung SQL Projekt AG FSU 290610, 62 PBS CBW NLS IQ Introduction PBS CBW NLS IQ for Sybase IQ is a powerful and complete Nearline Storage Solution for SAP Business Intelligence SAP BI Sybase IQ Administration/ Monitoring SAP NLS Data Archiving Process (DAP) Access: Queries, Reload, ... PBS CBW NLS IQ Interface Read Data server CBW NLS IQ Infrastrutcure (without adk components) SQL Projekt AG FSU 290610, 63 Load Data CBW-Architektur mit NLS und Sybase IQ DB und Nearline lesen (in Query-Attributen aktivieren) InfoCube DataStore Objekt SAP BW Datenbank SQL Projekt AG FSU 290610, 64 SAP BW Query SAP Nearline Provider PBS Nearline Services für Sybase IQ Sybase IQ Spalten-basierte Data Warehouse DB, Kompression bis 1:10 Kompressionen InfoCubes Kundenbeispiel InfoCube Größe arch. Daten Größe Daten in Sybase IQ Kompression auf INDIA03 9.042.943.028 Bytes 691.322.880 Bytes 8% INDIA21 1.944.346.768 Bytes 81.305.600 Bytes 4% FAKT01 59.532.053.152 Bytes 6.299.435.008 Bytes 11 % FAKT21 4.617.352.608 Bytes 247.070.720 Bytes 5% 831.113.280 Bytes 63.963.136 Bytes 8% 19.097.371.560 Bytes 1.046.978.560 Bytes 5% 0FIAR_C02 480.045.888 Bytes 45.178.880 Bytes 9% 0FIAR_C03 7.932.706.440 Bytes 963.600.384 Bytes 12 % FAKTP02 ERG002 SQL Projekt AG FSU 290610, 65 Query „Markthierarchie“ – Speed (I) Query M_INDIA01/WEB1_M_INDIA01_MARHIE_ZJVJB Kundenhierarchie über Attribut KDUNIQUE 2003 – 2007 Anzahl Datensätze: 17 Mio. Zugriffsart Sybase IQ Oracle DB mit Aggregaten Oracle DB ohne Aggregate Primärliste 16 s 71 s 416 s Sybase IQ (16s) Oracle mit Aggregaten (71s -> Faktor 4) Oracle ohne Aggregate (416s -> Faktor 26) Zeit [s] SQL Projekt AG FSU 290610, 66 Query „Fakturen“ – Speed (I) Query Query M_FAKT01/STD_M_FAKT01_ASS_PC 12.2007 Anzahl Datensätze: 57 Mio. Fakturaauswertung Zugriffsart Sybase IQ Oracle DB mit Aggregaten Oracle DB ohne Aggregate Primärliste 12 s 164 s nach 2000 s abgebrochen Sybase IQ (12s) Oracle mit Aggregaten (164s -> Faktor 14) Oracle ohne Aggregate (abgebrochen) Zeit [s] SQL Projekt AG FSU 290610, 67 Erfahrungsbericht – Fazit Kundeninstallation Speed Kompression Administration Bis zu 14 x schnellere Antwortzeiten Kompression der Archivdaten bis zu 95 % Keine Indexkeine AggregatModellierung SQL Projekt AG FSU 290610, 68 Mehr als 1500 Kunden Erfolgreich etablierte und schnell wachsende Kundenbasis Mehr als 3000 Kundenprojekte bei mehr als 1500 Kunden weltweit SQL Projekt AG FSU 290610, 69 Analysten Gartner Gartner Data Warehouse Magic Quadrant Position: Challenger IDC “Wir haben beobachtet und darauf gewartet, dass Firmen, die Datenbanken implementieren, sich vermehrt für Sybase IQ und seine einzigartige Tabellen- und Indexstruktur entscheiden. Denn diese sichert eine beeindruckende Performance bei komplexen Abfragen auf großen Data Warehouses. Gemessen an den Markterfolgen der letzten Jahre scheint es so, dass der Markt endlich ‘begriffen‘ hat.” SQL Projekt AG FSU 290610, 70 Carl Olofson, Research Vice President Information Management and Data Integration Software Research IDC 2007 Telekommunikations-DB telco_facts month_key customer_key service_key status_key combined_revenue number_of_lines local_call_count local_call_minutes long_distance_call_count long_distance_call_minutes minutes_online integer integer integer integer numeric(19,4) integer integer integer integer integer integer <pk,fk1> <pk,fk2> <pk,fk3> <pk,fk4> 1.200.000 Zeilen FK_TELCO_FA_REFERENCE_RESIDENT FK_TELCO_FA_REFERENCE_MONTH 24 residential_customer month month_key month_text month_number fiscal_period year period_and_year month_and_year integer <pk> char(9) integer char(2) integer char(7) char(7) FK_TELCO_FA_REFERENCE_STATUS FK_TELCO_FA_REFERENCE_SERVICE status 72 status_key new_customer new_address call_waiting_status caller_id_status voice_mail_status cellular_status internet_status isdn_status closed_this_period SQL Projekt AG FSU 290610, 71 customer_key customer_first_name customer_last_name customer_gender street_address city state postal_code phone_number service integer <pk> char char char(10) char(10) char(10) char(10) char(10) char(10) char service_key call_waiting_flag caller_id_flag voice_mail_flag cellular_flag internet_flag isdn_flag integer <pk> char char char char char char 12 integer <pk> char(11) char(15) char char(18) char(20) char(2) char(9) char(10) 100.000 Voraussetzungen und Laden Merkmal Version ASIQ ASE ASE12.5.0. 12.4.3 1 PC 333 MHZ ,128 MB, Platte Toshiba MK2018GAS Windows 2000 Hardware OS Rohdaten (MB) Daten (MB) geladen u. ind. Daten (MB) ( Index) Zusatzindexe Ladezeit (min) bcp / load table Indizierungszeit (min) SQL Projekt AG FSU 290610, 72 Bemerkung 54 271,9 54 66,8 Bei ASIQ einschließlich Indexe 4 Bei ASIQ Laden und Indizieren 78,8 (189) 4 40 Anfragebeispiele Merkmal Query1 (ms) Query2 (ms) SQL Projekt AG FSU 290610, 73 ASE 2.033 1.120 .993 1.003 ASIQ 1.362 .200 .150 .160 372.116 359.960 359.896 338.756 9.975 .841 .741 .721 Bemerkung Query displays service types by month Valid values are 1- 12 for month_key select month_key ,service_key,count(*) from telco_facts where month_key = 1 group by month_key,service_key A look at customers who have the following service call waiting , caller id, and voice mail by -- fiscal period i.e. Q1,Q2,Q3,Q4 for year= 1998 select service_key,fiscal_period,count(*) from telco_facts T,month M where T.month_key=M.month_key and service_key = 4 group by fiscal_period,service_key order by fiscal_period,service_key Anfragebeispiele Merkmal Query3 (ms) ASE 295.553 168.803 215.466 234.336 ASIQ 2.784 .952 .931 .871 Query4 (ms) 195.470 191.816 192.996 192.036 8.352 .761 .771 .892 SQL Projekt AG FSU 290610, 74 Bemerkung -- A count of customers who have dropped call -- waiting from their service palns by Quarter select service_key,fiscal_period,count(*) from telco_facts T,month M,status S where T.month_key=M.month_key and S.status_key = T.status_key and call_waiting_status='Dropped' group by fiscal_period,service_key order by fiscal_period,service_key -- female Customers in Massachusetts that do not -- have caller id select distinct(C.customer_key), C.Customer_first_name, C.customer_last_name, C.phone_number from residential_customer C,service,telco_facts where C.customer_key = telco_facts.customer_key and telco_facts.service_key = service.service_key and caller_id_flag = 'N' and state = 'MA' and customer_gender = 'F' Anfragebeispiele Merkmal Query5 (ms) ASE 444.800 437.720 421.606 460.183 ASIQ 5.288 3.425 3.405 3.395 Bemerkung -- Find prospects for voice mail based on the criteria -- that customers with call waiting and caller id are -- good prospects for call Waiting select state, count(*) from telco_facts T,service S, residential_customer C, month M where T.service_key = S.Service_key and T.customer_key = C.customer_key and T.month_key = T.month_key and call_waiting_flag = 'Y' and caller_id_flag = 'Y' and voice_mail_flag = 'N' and state in ('NY','NJ','PA') and fiscal_period = 'Q1' group by state SQL Projekt AG FSU 290610, 75 Anfragebeispiele Merkmal Query6 (ms) SQL Projekt AG FSU 290610, 76 ASE 17.576 15.803 15.423 15.763 ASIQ 6.849 6.079 6.129 6.069 Bemerkung -- Find customers that had ISDN service in February -- 1998 select customer_last_name ,customer_first_name from residential_customer R ,telco_facts T, service S, month M where M.month_text = 'February ' and M.year = 1998 and s.isdn_flag = 'Y' and M.month_key = T.month_key and S.service_key = T.service_key and R.customer_key = T.customer_key Anfragebeispiele Merkmal Query7 (ms) SQL Projekt AG FSU 290610, 77 ASE 468.433 470.726 468.143 466.470 ASIQ 2.544 1.292 1.272 1.262 Bemerkung -- Look at the local call minutes to see if they -- have increased after adding call waiting select fiscal_period,count(*),sum(local_call_min utes) from residential_customer R ,telco_facts T, status S, month M where s.call_waiting_status='Added' and state = 'OH' and M.month_key= T.month_key and S.status_key = T.service_key and R.customer_key = T.customer_key group by fiscal_period order by fiscal_period Anfragebeispiele Merkmal Query8 (ms) SQL Projekt AG FSU 290610, 78 ASE 629.456 629.656 627.180 627.933 ASIQ 2.303 1.862 1.863 1.883 Bemerkung -- Look at the call usage for customers with call -- waiting "service type 2" compared with customers -- with both call waiting and Caller id for Q4 for -- customers in CA select fiscal_period, T.service_key, sum(local_call_minutes), sum(local_call_count), count(*) from telco_facts T,residential_customer C,service S, month M where T.customer_key = C.customer_key and T.service_key = S.service_key and T.month_key = M.Month_key and fiscal_period = 'Q4' and T.service_key in (02,03) and state = 'CA' group by fiscal_period,T.service_key EDS Report: IQM vs “konventionelles” RDBMS #CPUs in Sun SF 6800 (750 MHz) DB cache size DW installation time (ready for data) Major DBMS (not NCR) 8 4 GB 5-10 days Sybase IQ Multiplex 12.4.3 8 4 GB 1 day table partitioning & table placement ratio 5x10x 880 Million Input data size (total size of input files) 270 GB Loading speed (records/hour) #Records 45 M/hour 208 M/hour 4.5x 63 GB 128 GB 128 GB 4.7x 4.3x 7x Storage efficiency Base table (NO indexes) Base table+indexes Base table+index+MVs+aggr. 300 GB 550 GB 900 GB Query speed 50 sequential queries 50 concurrent queries 50 concurrent queries against tables being loaded on the same SMP server. IQM slowdown (28%) due to CPU (and not db) contention 50 concurrent queries SQL Projekt AG FSU 290610, 79 114 min 180 min 180 min (NO DW load) 180 min 50 min 13 min 18 min (with DW (HDS) (HDS) (HDS) 2.3x 14x 10x Load) 13 min (*) (T3) 14x Sun‘s iForce Enterprise Data Warehouse Reference Architecture Basiert auf Sybase Adaptive Server IQ Multiplex mit 156 CPUs und 160 GB RAM Ergebnisse: 48,2 Terabyte Rohdaten korrespondieren mit 22 Terabyte Speicherverbrauch 5-160 Millionen Records werden täglich geladen in < 1h Konkurrenz zwischen Laden und Anfragen der gleichen Tabelle bringt nur 6,9 % Verlangsamung Bis zu 1000 x schnellere Analyse-Laufzeiten 80% weniger Installationsaufwand Unterstützt Tausende Anwender gleichzeitig SQL Projekt AG FSU 290610, 80 Kunden in Deutschland (Auszug) 1&1 Internet AG Bertelsmann Music Group EMI Electrola RTL Television Allianz-Dresdner Bausparkasse Dresdner Bank Vodafone D2 GmbH DekaBank Deutsche Bank Citibank DEVK Allgemeine Versicherungen AG Risk Consulting Raiffeisen Hauptgenossenschaft Nord Müller (Drogeriemärkte) European Southern Observatory … SQL Projekt AG FSU 290610, 81