Oracle In-Memory Warum, Was und Wie! Oracle Database In-Memory Option Detlef E. Schröder, dbus Anwenderdialog 2015, 27. Januar 2015 Leitender Systemberater STCC DB Mitte Oracle Deutschland B.V. & Co KG Deutschsprachige DWH Community ww.oracledwh.de Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | DATA WAREHOUSE WARUM In Memory Datenbank Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | DATA WAREHOUSE 2 Anforderungsentwicklung an Datenbanken • Mehr Daten • Unterschiedliche Daten • Schnellere Datenbereitstellung • Verknüpfung von Prozessen • HW Entwicklung und Kosten Entwicklung • Eine beachtliche Lösung für viele Aspekte dieser Anforderungen ist • In Memory Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | DATA WAREHOUSE 3 In-Memory Technologie - In-Memory liegt in der DNA eines jeden Datenbankherstellers - In-Memory-ONLY- Datenbanken sind heute Spezialsysteme - In-Memory-ONLY- Systeme werden ein abgestuftes Speicherkonzept einführen müssen, es macht keinen Sinn 80%+ „kalte Daten“ im teueren Hauptspeicher zu halten. - denn ‚One-Trick Ponys‘ werden nicht überleben - In-Memory ist in aller Munde, ist omni-präsent, ist „everybodies darling“ Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | DATA WAREHOUSE In-Memory Technologie In-Memory Technologie und In-Memory Datenbanken sind nicht neu. Columnar-Technologie bei Datenbanken ist keine Erfindung der letzten vier Jahre. Oracle ist ein Pionier im Bereich In-Memory Technologie. Was noch fehlte : „In-Memory (Columnar) Datenbank“ - Technologie Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | DATA WAREHOUSE WAS Hat Oracle in der DB gemacht Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | DATA WAREHOUSE 6 Datenbank wahlweise im Hauptspeicher Keine Änderung der Anwendung Spaltenorientiert Komprimiert Parallelisierung Nutzt bestehende DB-Architektur und Funktionalität Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | DATA WAREHOUSE Dual Format Database Memory Memory • Beides Row- und Column- Format für dieselbe Tabelle • Gleichzeitiges Lesen und Updaten, gesicherte Transaktionen F_UMSATZ F_UMSATZ Row Format Column Format • Optimizer wählt optimalen Zugriff • Analytics & Reporting können InMemory Column-Format nutzen • OLTP-Anwendungen mit umfangreicher Satzverarbeitung nutzen bewährtes Row Format Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | DATA WAREHOUSE 8 Oracle In-Memory Columnar Technology Reines In-Memory Columnar • In-Memory-Variante der Daten • Persistent über Disk-Variante • Updates direkt persistiert • Schnelle Updates • SALES 2x to 20x Komprimierung • Tabellen, Partitionen, MAVs, Indexe DATA WAREHOUSE • Laden durch Hintergrundprozesse • Auf jeder Hardware möglich • Bei erstmaligem Lesen oder Datenbank-Startup Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | DATA WAREHOUSE 9 spaltenbasiert vs. zeilenbasiert Select sum (Umsatz) Kunden_ID, Region_ID, Zeit_ID from F_Umsatz where Artikel_ID = 10 Artikel_ID Kunden_ID Zeit_ID Region_ID Kanal_ID UMSATZ MENGE UMSATZ_GESAMT Select sum (Umsatz) from F_Umsatz where Artikel_ID = 10 Select max(Umsatz) from F_Umsatz Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | DATA WAREHOUSE Compression Unit (CU) Index Select sum (Umsatz) Kunden_ID, Region_ID, Zeit_ID from F_Umsatz where Artikel_ID = 10 Artikel_ID Kunden_ID Select sum (Umsatz) from F_Umsatz where Artikel_ID = 10 CU Select max(Umsatz) from F_Umsatz CU Zeit_ID Region_ID Kanal_ID UMSATZ MENGE UMSATZ_GESAMT max min max min max min max min max min max min CU CU CU CU Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | DATA WAREHOUSE Vektor-Scans Memory REGION Example: Finde alle Verkäufe In der Region CA • SIMD Vektor Instruktionen CPU Vector Register CA Load multiple region values • Jeder CPU Kern liest einzelne In-Memory Columns CA CA Vector Compare all values an 1 cycle • Milliarden von Sätzen/Sekunde/Core CA Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | DATA WAREHOUSE 12 Join-Verfahren: Bloom-Filter Example: Find all orders placed on Christmas eve LINEORDER Amount Datekey is 24122013 DateKey DateKey Date DATE_DIM • Erstellen von Filtertabellen (Bloom-Filter) Type=d.d_date='December 24, 2013' Sum Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | DATA WAREHOUSE 13 In-Memory Aggregation Example: Report sales of footwear in outlet stores Products In-Memory Report Outline Sales • Dynamisches Erstellen von In- Memory Aggregat-Objekten Footwear Stores Outlets Outlets Footwear $ $$ $ $$$ Sales Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | DATA WAREHOUSE 14 Es ist nur ein Schalter!! – Kein Migrationsprojekt D_KUNDE D_ARTIKEL ARTIKEL_NAME GRUPPE_NR GRUPPE_NAME SPARTE_NAME SPARTE_NR ARTIKEL_ID PK D_ZEIT DATUM_ID TAG_DES_MONATS TAG_DES_JAHRES WOCHE_DES_JAHRES MONATS_NUMMER MONAT_DESC QUARTALS_NUMMER JAHR_NUMMER ZEIT_ID PK D_REGION REGION_ID PK ORTNR ORT KREISNR KREIS LANDNR LAND REGIONNR REGION F_UMSATZ FK ARTIKEL_ID FK KUNDEN_ID ZEIT_ID FK REGION_ID FK KANAL_ID FK UMSATZ MENGE UMSATZ_GESAMT 50 Mio Sätze D_VERTRIEBSKANAL PK KANAL_ID VERTRIEBSKANAL KANALBESCHREIBUNG VERANTWORTLICH KLASSE PK: Btree Index FK: Bitmap Index PK KUNDEN_ID KUNDENNR GESCHLECHT VORNAME NACHNAME TITEL ANREDE GEBDAT BRANCHE WOHNART KUNDENART BILDUNG ANZ_KINDER EINKOMMENSGRUPPE ORTNR NUMBER, BERUFSGRUPPE STATUS STRASSE TELEFON TELEFAX KONTAKTPERSON FIRMENRABATT BERUFSGRUPPEN_NR BILDUNGS_NR EINKOMMENS_NR WOHNART_NR HAUSNUMMER PLZ ORT KUNDENKARTE ZAHLUNGSZIEL_TAGE TOTAL TOTAL_NR • Laden in den InMemory-Speicher: Einfaches Markieren • Danach einmal anfassen Alter Alter Alter Alter Alter Alter table table table table table table F_UMSATZ INMEMORY; D_ZEIT INMEMORY; D_VERTRIEBSKANAL INMEMORY; D_REGION INMEMORY; D_KUNDE INMEMORY; D_ARTIKEL INMEMORY; CREATE TABLE F_UMSATZ …… PARTITION BY RANGE …… (PARTITION p1 …… INMEMORY NO MEMCOMPRESS PARTITION p2 …… INMEMORY MEMCOMPRESS FOR DML, PARTITION p3 …… INMEMORY MEMCOMPRESS FOR QUERY, : PARTITION p200 …… INMEMORY MEMCOMPRESS FOR CAPACITY ); Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | DATA WAREHOUSE In-Memory im Data Warehouse • Komplexe Abfragen auf viele Daten – – – – mit mehreren Joins Sub-Selects Groupings Analytische Funktionen Keine repräsentative Hardware: Laptop mit Intel i5-3320M 2,6 GHz CPU und 4 GB In-Memory-Storage Beispielabfrage Subselect Ohne In-Memory Analytic Grouping Functions P1 P4 Mit In-Memory P1 P4 #Joins #Where Condition Umsatz pro Region, Zeit, Vertriebskanal, , Berufsgruppe Sortiert nach Kriterien (Abf. 2) 5 5 - 1 1 14,35 27,00 1,10 0,53 Stärkster Umsatzmonat pro Bundesland in 2010 (Abf. 8) 3 2 1 3 2 26,66 35,03 1,00 0,54 Top 10 Artikel bezogen auf Umsatz in einem Jahr pro Bundesland in 2010 (Abf. 10) 4 3 1 4 3 23,14 32,03 3,02 1,55 Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | DATA WAREHOUSE Nach Umsatzstärke sortierte Quartals-Rangfolge select sum(u.umsatz) Umsatz, z.Jahr_nummer Jahr ,z.Quartals_nummer Quartal, RANK() OVER (PARTITION by z.Jahr_nummer ORDER BY sum(U.umsatz) ASC ) AS Rangfolge from f_umsatz u, d_zeit z where z.zeit_id = u.zeit_id and z.Jahr_nummer between 2006 and 2011 group by z.Jahr_nummer,z.Quartals_nummer order by z.Jahr_nummer,Rangfolge; UMSATZ JAHR QUARTAL RANGFOLGE ---------- ---------- ---------- ---------6174959616 2006 3 1 6179076096 2006 1 2 6330781696 2006 4 3 6366562304 2006 2 4 5904742400 2007 1 1 6080256000 2007 2 2 6495115264 2007 4 3 6689013760 2007 3 4 6158342144 2008 2 1 6399057920 2008 4 2 6510661632 2008 3 3 6592911360 2008 1 4 6224371712 2009 3 1 6267443200 2009 1 2 6270103552 2009 2 3 6762235904 2009 4 4 6024929280 2010 1 1 6096072704 2010 4 2 6145820672 2010 3 3 6162663424 2010 2 4 6066087936 2011 1 1 6127532032 2011 2 2 6157582336 2011 3 3 6500706304 2011 4 4 6157582336 2011 3 3 6500706304 2011 4 4 24 Zeilen ausgewählt. Abgelaufen: 00:00:00.91 Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | DATA WAREHOUSE Was ist passiert? ---------------------------------------------------------------------------------------------------| Id | Operation | Name |Rows |Bytes|Cost(%CPU)| Time | TQ |IN-OUT| ---------------------------------------------------------------------------------------------------| 0 | SELECT STATEMENT | | 1 | 4 | 76 (98)| 00:00:01 | | | | 1 | SORT AGGREGATE | | 1 | 4 | | | | | | 2 | PX COORDINATOR | | | | | | | | | 3 | PX SEND QC (RANDOM) | :TQ10000 | 1 | 4 | | | Q1,00 | P->S | | 4 | SORT AGGREGATE | | 1 | 4 | | | Q1,00 | PCWP | | 5 | PX BLOCK ITERATOR | | 207M| 793M| 76 (98)| 00:00:01 | Q1,00 | PCWC | | 6 | TABLE ACCESS INMEMORY FULL| F_UMSATZ | 207M| 793M| 76 (98)| 00:00:01 | Q1,00 | PCWP | ---------------------------------------------------------------------------------------------------Statistiken 48 recursive calls 0 db block gets 2111 consistent gets 0 physical reads 0 redo size 368 bytes sent via SQL*Net to client 495 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 1 rows processed Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | DATA WAREHOUSE Stärkster Umsatzmonat pro Bundesland SELECT * FROM (SELECT land Bundesland, monat_desc Monat, jahr_nummer Jahr, sum(umsatz) as Umsatz, RANK() OVER(PARTITION BY r.land ORDER BY sum(u.umsatz) DESC) AS rangfolge FROM d_zeit z, d_region r, f_umsatz u WHERE z.zeit_id = u.zeit_id AND r.region_id = u.region_id AND z.jahr_nummer = '2010' GROUP BY r.land, z.monat_desc, jahr_nummer ORDER BY jahr_nummer ) WHERE rangfolge < 2 order by Bundesland; • Analytische Funktion • Interne Bildung von Summen • Danach einmal anfassen BUNDESLAND MONAT JAHR UMSATZ RANGFOLGE -------------------------------------------------- ------------ --------Baden Wuerttemberg Oktober 2010 255578112 1 Bayern MΣrz 2010 643506176 1 Berlin November 2010 10225664 1 Bremen September 2010 7036928 1 Hamburg Juni 2010 7071744 1 Hessen April 2010 120686592 1 Niedersachsen April 2010 317964288 1 Nordrhein Westfalen Dezember 2010 121647104 1 Rheinland Pfalz Juni 2010 614266880 1 Saarland Juni 2010 17817600 1 Schleswig Holstein Oktober 2010 355862528 1 11 Zeilen ausgewählt. Abgelaufen: 00:00:00.45 Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | DATA WAREHOUSE WIE Setze ich es ein Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | DATA WAREHOUSE 20 Oracle In-Memory Advisor • New In-Memory Advisor • Analysiert bestehenden DB Workload über AWR & ASH Repository • Liefert eine Liste von Objekten, die am meisten von InMemory-Colume-Storage profitieren Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | DATA WAREHOUSE Zunächst ein wichtiges Prinzip: Verteilung von Tabellendaten über die Speicherhierarchie Umsatzdaten DISK SSD Flash In Memory Juni 14 Juni 14 Mai 14 Mai 14 April 14 April 14 März 14 März 14 Februar 14 Februar 14 Januar 14 Januar 14 Dezember 13 Dezember 13 November 13 November 13 Oktober 13 Oktober 13 September 13 September 13 August 13 August 13 Juli13 Juli13 Juni 13 Juni 13 April 13 April 13 März 13 März 13 Februar 13 Februar 13 Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | DATA WAREHOUSE 22 An welchen Stellen macht In-Memory im DWH Sinn OLTP Systeme Disk-Daten In Memory Integration Layer Temporäre Daten T Enterprise Layer Core - DWH / Info Pool User View Layer Alle Dimensionen Referenzdaten R R R Bei sehr großen Dimensionen nur die am häufigsten genutzten Spalten Stammdaten S S S Die aktuellen Partitionen T Partitionierte Transaktionsdaten nur wenn sie abgefragt werden Vorberechnete Kennzahlen C Q A A L MJ Data Mining Statistikdaten Operational Data Oracle R In-Memory Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | DATA WAREHOUSE Enge Verzahnung von OLTP und DWH wird möglich OLTP Systeme Disk-Daten In Memory Integration Layer Temporäre Daten T T Ermöglichen von Realtime-Reporting und Realtime-ETL • Kein expliziter Ladevorgang für Transaktionsdaten • Gelesen wird die In-Memory-Version während das OLTP-System klassisch die Disk-Version der Daten beschreibt • Operational Data Stores entfallen, wenn sie nur OLTP-Daten 1:1 bereitstellen. (Wenn machbar können operative Daten direkt gelesen werden) Operational Data Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | DATA WAREHOUSE Ist In Memory nur etwas für große Systeme? • Nein • Vor allem auch kleinere Umgebungen profitieren Ohne Inmemory Mit Inmemory Potenzielles Leistungsvermögen 200 MB / Sec / Core = 1,6 GB / Sec PARALLEL 4 optimal Potenzielles Leistungsvermögen 200 MB / Sec / Core = 1,6 GB / Sec PARALLEL 16 optimal • Sie haben oft kein eigenes Storage-System, sondern hängen am SAN und konkurrieren mit vielen OLTPAnwendungen • Das SAN wirkt oft als „IO-Bremse“ • Mit In-Memory machen sich kleinere Systeme IO-unabhängig! > 5 GB / Sec In Memory Column Store 700 MB / Sec 700 MB / Sec Andere OLTP Anwendungen SAN Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Andere OLTP Anwendungen SAN DATA WAREHOUSE 25 Oracle Database • Fine Grained Security • Fine Grained Auditing • XML / JSON / Spatial / Graph – Objekte in einer Datenbank • Online-Backup • Restore mit variabler Granularität • InDatabase ETL • Flashback: Rückholbarkeit von Änderungen über n Tage hinweg • InDatabase Data Mining • Embedded R mit transparenter R-Funktionalität in der Datenbank • Single SQL-Access auf RDMBS-Tabellen und HDFS-Files bzw. noSQL-DB-Objekte Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | DATA WAREHOUSE 26 Server CPU & RAM Oracle Cloud Control 12c Oracle 12.1.0.2 Operating System InMemory Pluggable DBe Pluggable DBc Pluggable DBb Pluggable DBa Oracle 12.1.0.2 In-Memory Technologien und Konsolidierung … ? neues Betriebsmodell ? Reifegrad unter Last - einige Anpassung - zus. Lizenzen + bessere Ressourcenverwaltung + dynamische Res.Verteilung + weniger Administration Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | DATA WAREHOUSE DATA WAREHOUSE Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | DATA WAREHOUSE http://www.oracledwh.de Community Newsletter Konferenz Seminare Self study und mehr Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | DATA WAREHOUSE 29 30