caching: in-memory column store oder im bi server

81
Caching: In-Memory Column Store oder BI Server? Andreas Buckenhofer / Analytics / Daimler TSS 1 Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Upload: andreas-buckenhofer

Post on 07-Jan-2017

207 views

Category:

Data & Analytics


0 download

TRANSCRIPT

Page 1: Caching: In-Memory Column Store oder im BI Server

Caching:In-Memory Column Store oder BI Server?

Andreas Buckenhofer / Analytics / Daimler TSS

1Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Page 2: Caching: In-Memory Column Store oder im BI Server

Zur Person

Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Andreas Buckenhofer

Senior DB ProfessionalE-Mail: [email protected]

Seit 2009 bei Daimler TSS

im Fachgebiet Data Warehouse & Data Integration (Cognos/Informatica) –Department Analytics

Schwerpunkt DWH/CRM seit 1998 als

• Entwickler

• Administrator

• Berater

Page 3: Caching: In-Memory Column Store oder im BI Server

Daimler TSS IT-Exzellenz: Ganzheitlich, innovativ, nah

Wir sind Spezialist und strategischer Business-Partner für innovative IT-Lösungen im Daimler-Konzern. Als

100%ige Daimler-Tochter leben wir die Kultur der Exzellenz mit dem Anspruch der Innovations- und

Technologieführerschaft.

Mit herausragender Technologie- und Methodenkompetenz verstehen wir uns als kompetenter Anbieter von wettbewerbsdifferenzierenden IT-Dienstleistungen. Unsere Geschäftspartner im Konzern begleiten wir lösungsorientiert im Rahmen eines ganzheitlichen Ansatzes.

Wir denken und arbeiten partnerschaftlich und agil, sind technologieneutral und hersteller-unabhängig. Das macht uns frei für maßgeschneiderte End-to-End-Lösungen mit hoher Effektivität. Die Aufnahme wichtiger Trends und Impulse von außen zusammen mit dem tiefen Verständnis der Daimler-Geschäftsprozesse garantieren eine umfassende Sicht und überzeugenden Mehrwert.

Unser Anspruch ist es, die Geschäftsprozesse, die Wettbewerbsfähigkeit und die Innovations-kraft von Daimler mit marktführenden IT-Lösungen voranzutreiben. Als attraktiver Arbeitgeber wollen wir mit Menschen arbeiten, die durch unser Unternehmen und das menschlich geprägte Umfeld inspiriert sind ihr Bestes zu geben und mit uns ihr volles Potential zu entwickeln.

3Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Page 4: Caching: In-Memory Column Store oder im BI Server

Standorte Daimler TSS

4Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Page 5: Caching: In-Memory Column Store oder im BI Server

5Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Ganzheitliche Betreuung (Erhebung, Auswertung, Visualisierung und Interpretation), unabhängige Beratung und Optimierung der Geschäftsabläufe.

Von klassischer BI bis hin zu predictive und prescriptiveAnalytics bieten wir Leistungen unter Berücksichtigung der Datensicherheit.

Dabei verknüpfen wir fachliche Erfahrung und IT-Know-how im Daimler-Kontext mit dem Blick fürs große Ganze.

Analytics. Das große Ganze verstehen, um Daten nutzbar machen.

Page 6: Caching: In-Memory Column Store oder im BI Server

Gliederung

Motivation und Konzepte spaltenorientierter In-Memory DBs (IMDB)

OLAP/Cognos In-Memory Cubes und IMDB

Testszenario und –durchführung mit Oracle

Erkenntnisse/Folgerungen

Zusammenfassung

6Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Page 7: Caching: In-Memory Column Store oder im BI Server

DWH Reference Architecture

7Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Backend

Frontend

Acquisition Layer (Input Layer)

Core Warehouse Layer (Storage Layer)

Information Mart Layer (Output Layer)

Ad-hoc Reporting

Standard Reporting

Dash-boards

Predictive Analytics

PrescriptiveAnalytics

Star OLAP

3NF Data Vault

Keine FK, PKFlat

Page 8: Caching: In-Memory Column Store oder im BI Server

DWH Reference Architecture PoC

8Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Backend

Frontend

Acquisition Layer (Input Layer)

Core Warehouse Layer (Storage Layer)

Information Mart Layer (Output Layer)

Cognos BI Cognos SPSS / R

Star Cognos Cubes

Data Vault

Keine FK, PKFlat

Page 9: Caching: In-Memory Column Store oder im BI Server

Information und Analytics Mart Layer

Ausgangssituation/Fragestellung im Projekt:

• Modellierung: Relationales Starschema mit In-Memory DB oder weiterhin Nutzung von Cubes?

• Analysen / Reporting direkt auf Core Warehouse Layer möglich (= performant)?

9Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Page 10: Caching: In-Memory Column Store oder im BI Server

In-Memory … nicht neu

Datenbank Buffer Cache

Datenspeicherung auf RAM-Disk

Datenspeicherung auf SSD

OLAP In-Memory Cubes

Datenanalyse mit Qlikview, TM1, u.a.

10Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Page 11: Caching: In-Memory Column Store oder im BI Server

In-Memory - Cache Latenz

11Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Quelle: Brendan Gregg: “Systems Performance: Enterprise and the Cloud”

Flüchtig

Nicht flüchtig

„In-Memory“

Festplatte

Page 12: Caching: In-Memory Column Store oder im BI Server

Datenverteilung, z.B. partitionierte Umsatzdaten

In-Memory – Speicherhierarchien Kosten vs Nutzen

12Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Festplatte SSD RAM1/2015

2/2015

1/2013

12/2014

<= 12/2012

Wenig genutzte Daten

Häufig genutzte Daten

Page 13: Caching: In-Memory Column Store oder im BI Server

Spaltenorientierung … nicht ganz so neu

13Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

1993 1995 > 2004

KDBSybase IQ

(heute SAP)

Relational:MonetC-StoreVertica

Greenplum(Nicht-Relational:

BigTableHBASE

Cassandra)

Page 14: Caching: In-Memory Column Store oder im BI Server

Spaltenorientierung: Speicherung Zeilen- vs Spalten

14Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Id Name Geburtsdatum

1 Maier 1967

2 Schmitt 1980

3 Maier 1993

4 Berger 1980

5 Müller 1967

6 Maier 1970

7 Müller 1980

Spaltenorientierte Speicherung

1, Maier, 1967, 2 Schmitt, 1980, 3

Maier, 1993, 4, Berger, 1980, 5

Müller, 1967, 6, Maier, 1970, …

1, 2, 3, 4, 5, 6, 7, …

Maier, Schmitt, Maier, Berger,

Müller, Maier, Müller, …

Zeilenorientierte Speicherung

Block / Page / In-Memory Unit

Page 15: Caching: In-Memory Column Store oder im BI Server

Zeilen- vs Spaltenorientierung: Vor und Nachteile

15Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Zeilenorientierung Spaltenorientierung

Vorteile • Datensatz wird zusammen abgespeichert

• Einfache/PerformanteUpdates und Deletes

• Select auf eine oder mehrere Spalten liest keine unnötigen Spalten

• Spalte kann als Index verstanden werden

Nachteile • Es wird der gesamte

Datensatz gelesen – auch

wenn nur einzelne Spalten

benötigt werden

• Nach der Selektion muss ein Datensatz aus den einzelnen Spalten rekonstruiert werden

• Inperformante Datenänderungen

• Cache-Aufbau

Page 16: Caching: In-Memory Column Store oder im BI Server

Vorteil: Komprimierungsverfahren je nach Datentyp

16Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Dictionary Encoding

• Zentrale Wörterbücher zur Kodierung.

Run-length Encoding

• Mehrfache Wiederholungen werden durch ein Anzahl-Attribut kodiert.

Null-Suppression

• Unterdrückung von Nullwerten.

Bit-Vector

• Kodierung von 0 bzw1 für eine vorhandene bzw. nicht vorhandene Ausprägung.

Page 17: Caching: In-Memory Column Store oder im BI Server

Vorteil: Data Skipping (Column Store Storage Index)

17Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

• Automatische Registrierung minimaler und maximaler Werte in einer IMU

• „Interner Index“: Ignorieren/Überlesen nicht relevanter Pages

Cache mit InMemory Units (IMU)

1,9,20,34,4,100,…Min: 1 Max: 100

22,1,19,34,4,10,…Min: 1 Max: 34

SQL-Abfrage

SELECT …FROM …WHERE spalte > 50

72,60,60,61,60,69,…Min: 60 Max: 72

32,44,30,50,50,…Min: 30 Max: 50

skip

Page 18: Caching: In-Memory Column Store oder im BI Server

Vorteil: SIMD-Prozessoren (Single Instruction Multiple Data)

18Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

CPU

VectorRegister

z.B. where x=12

112

312

55

1212

12

12

1212

Cache (RAM)

112

312

55

1212

Page 19: Caching: In-Memory Column Store oder im BI Server

Zusammenfassung Auswahl Konzepte

Spaltenorientierte IM DB

RAM (In-Memory)

Spalten-orientierung

KomprimierungData Skipping

SIMD

19Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Page 20: Caching: In-Memory Column Store oder im BI Server

Gliederung

Motivation und Konzepte spaltenorientierter In-Memory DBs (IMDB)

OLAP/Cognos In-Memory Cubes und IMDB

Testszenario und –durchführung mit Oracle

Erkenntnisse/Folgerungen

Zusammenfassung

20Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Page 21: Caching: In-Memory Column Store oder im BI Server

OLAP Cubes

Multidimensionales

Format

21Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Page 22: Caching: In-Memory Column Store oder im BI Server

OLAP Cubes

• Multi-dimensionales Datenarray „Würfel“

• Fakten, Dimensionen, Hierarchien, Aggregate

• Eine Struktur ohne Joins

• Ziel: schnell / interaktiv

• KPIs (Kennzahlen) nötig + Dimensionen

• Typisch für BI Reporting, aber auch inflexibel

• Beladung meist mittels Batch

22Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Kunde

Prod

ukt

KPIUmsatz

Page 23: Caching: In-Memory Column Store oder im BI Server

Cognos Dynamic Cubes

• In-Memory OLAP-Würfel, die Daten direkt aus relationalen DBs laden

• Voraussetzung: Star-Schema oder Snowfalke-Schema (Views möglich, aber nicht empfohlen)

• In Cognos BI integriert– keine seperate Installation oder Lizenz

• Verschiedene Caches

23Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Page 24: Caching: In-Memory Column Store oder im BI Server

Cognos Dynamic Cubes – Cache Hierarchie

24Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Page 25: Caching: In-Memory Column Store oder im BI Server

Cognos Dynamic Cubes – Cache Hierarchie

25Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Start Cube

• Member Cache wird komplett geladen• Aggregate Cache wird komplett

geladen

Reporting/Daten-Analyse

• Weitere Caches werden nach Bedarf geladen

• Sobald Cache voll ist, werden Daten aus DB gelesen

Page 26: Caching: In-Memory Column Store oder im BI Server

Oracle

Das duale Format in der Datenbank

26Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Page 27: Caching: In-Memory Column Store oder im BI Server

Oracle – Buffer Cache (row) and IMDB (columnar)

27Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Quelle: Guy Harrison: “Next Generation Databases”

Page 28: Caching: In-Memory Column Store oder im BI Server

Gliederung

Motivation und Konzepte spaltenorientierter In-Memory DBs (IMDB)

OLAP/Cognos In-Memory Cubes und IMDB

Testszenario und –durchführung mit Oracle

Erkenntnisse/Folgerungen

Zusammenfassung

28Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Page 29: Caching: In-Memory Column Store oder im BI Server

Testszenario mit Oracle DB

Daten: 60GB komprimiert sowie RAM: 60GB

• Testlauf 1: Zeilenorientierte Speicherung „Baseline“ mit Basic compression

• Testlauf 2: Spaltenorientierte Speicherung „Vergleich“ mit Low compression

• Verschiedene parallele Abfragen (simulieren User-Parallität)

• 3 Datenmodelle

29Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Page 30: Caching: In-Memory Column Store oder im BI Server

Testzenario – 3 Datenmodelle

30Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Data Vault

Strukturierte Modellierung für das Core Warehouse

Star

Fakten und Dimensionen

typisch für Data Mart

Layer

Flat

Flache Tabelle =

MeinExcel

Page 31: Caching: In-Memory Column Store oder im BI Server

Testzenario – 3 Datenmodelle (Auszug Datenmodell)

31Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Data Vault Star Flat

Page 32: Caching: In-Memory Column Store oder im BI Server

Testszenario – Abfragen (Beschränkung auf Standard-Abfragen)

Typ 1•Simuliert Report-Einstieg•Keine where-Bedingung, Aggregation auf höchster Ebene

Typ 2•Simuliert Drill Down von Typ 1•1-2 where-Bedingungen

Typ 3•Simuliert Drill Down von Typ 2•3-4 where-Bedingungen

32Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

4 parallele Sessions

führen Abfragen aus in der Reihenfolge

Typ1->Typ2->Typ3->Typ3->Typ2->Typ3->Typ3

Verhältnis Häufigkeit Typ1:Typ2:Typ3 = 1:2:4

Page 33: Caching: In-Memory Column Store oder im BI Server

Testszenario mit Oracle DB

Daten: 60GB komprimiert sowie RAM: 60GB

• Testlauf 1: Zeilenorientierte Speicherung „Baseline“ mit Basic

compression

• Testlauf 2: Spaltenorientierte Speicherung „Vergleich“ mit Low compression

• Verschiedene parallele Abfragen (simulieren User-Parallität)

• 3 Datenmodelle33Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Page 34: Caching: In-Memory Column Store oder im BI Server

0

10

20

30

40

50

60

70

Data Vault Star Flat

Buffer CacheLaufzeit (sek)

Buffer CacheGröße (GB)

Testlauf 1: zeilenorientierte Speicherung, Cache

34Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

3 1 1 2 32

Page 35: Caching: In-Memory Column Store oder im BI Server

Testlauf 1: Bewertung

Ergebnis bestätigt die Erwartungen: Star Schema performant für Reporting

Star Schema (= empfohlene Modellierung für Standardreports im Data Mart)

• Klar beste Performanz und sehr gute Komprimierung (kleine Indexe)

Data Vault (eine mögliche Modellierung im Core Warehouse Layer)

• Schlechte Leseperformanz, da für Beladung optimiert

• Hash Keys verwendet, daher relativ großer Speicherverbrauch

Flat

• Hohe Datenmenge aufgrund großer Redundanz

35Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Page 36: Caching: In-Memory Column Store oder im BI Server

Testszenario mit Oracle DB

Daten: 60GB komprimiert sowie RAM: 60GB

• Testlauf 1: Zeilenorientierte Speicherung „Baseline“ mit Basic compression

• Testlauf 2: Spaltenorientierte Speicherung „Vergleich“ mit Low

compression

• Verschiedene parallele Abfragen (simulieren User-Parallität)

• 3 Datenmodelle36Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Page 37: Caching: In-Memory Column Store oder im BI Server

0

5

10

15

20

25

30

Data Vault Star Flat

IMDBLaufzeit (sek)

IMDBGröße (GB)

Testlauf 2: spaltenorientierte Speicherung, Cache

37Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

3 2 1 1 23

Page 38: Caching: In-Memory Column Store oder im BI Server

Vergleich Testlauf 1 und Testlauf 2

38Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

0

5

10

15

20

25

30

35

40

45

Data Vault Star Flat

Buffer CacheLaufzeit (sek)

IMDBLaufzeit (sek)

0

10

20

30

40

50

60

70

Data Vault Star Flat

Buffer CacheGröße (GB)

IMDBGröße (GB)

Laufzeit Cache Größe

Page 39: Caching: In-Memory Column Store oder im BI Server

Testlauf 2: Bewertung 1(2)

Ergebnis (Anmerkung: Indexe gelöscht außer PK, UK, FK)

Star Schema

• Gute Performanz und gute Komprimierung

Data Vault

• Performanzverbesserung beim Lesen

Flat

• Beste Performanz in diesem Beispiel! Jedoch nicht unbedingt empfehlenswert zukünftig so zu modellieren!

39Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Page 40: Caching: In-Memory Column Store oder im BI Server

Testlauf 2: Bewertung 2(2)

• Testläufe sind nicht beliebig zu verallgemeinern, zeigen aber Vor/Nachteile auf. Es gibt auch Ausreißer.

• Ergebnis stark abhängig von Anzahl Typ1 / Typ2 / Typ3 Abfragen

• Viele Typ3-Abfragen = gut für Spaltenorientierung und Flat-Tabellen

• Viele Typ1-Abfragen = geringer/kein Vorteil für Spaltenorientierung

• Testen, Testen, Testen bei Migration in eine spaltenorientierte In-Memory DB.

• Nicht immer Performanzvorteile

• Oft ist das Problem in der Anwendung und nicht in der DB

40Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Page 41: Caching: In-Memory Column Store oder im BI Server

Gliederung

Motivation und Konzepte spaltenorientierter In-Memory DBs (IMDB)

OLAP/Cognos In-Memory Cubes und IMDB

Testszenario und –durchführung mit Oracle

Erkenntnisse/Folgerungen

Zusammenfassung

41Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Page 42: Caching: In-Memory Column Store oder im BI Server

• Data Vault Hub-Tabelle H_CUSTOMER mit Hash-Keys

• Schmale Tabelle mit eindeutigen Hash-Keys und eindeutigen Business-Keys

• Tabellen mit solchen Daten (nicht nur bezogen auf Data Vault) sind ungeeignet für Dictionary-Compression

Ausreißer Komprimierung am Beispiel Hub-Tabelle

Größe in GB Verfahren

9 GB Buffer Cache, Basic compression

9.7 GB (größer!) IMDB, FOR QUERY LOW compression

8.4 GB IMDB, FOR QUERY HIGH compression

42Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Page 43: Caching: In-Memory Column Store oder im BI Server

Allgemeine Faustformel

The greater the ratio of

the total data accessed by a query to

the data actually processed by the query,

the greater the potential benefit from IMDB.

Quelle: Oracle White Paper: When to use Oracle IMDB

43Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Page 44: Caching: In-Memory Column Store oder im BI Server

Anzahl selektierter Spalten

44Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Beschreibung Gut geeignet für

Spalten InMemory

Weniger geeignet für

Spalten InMemory

Je mehr Spalten abgefragt werden, umso geringer ist der Vorteil des spaltenorientierten Zugriffs. Bei der

Modellierung im BI Tool

darauf achten, dass nicht

automatisch select *

verwendet wird

SELECT cust_name FROM customer;

SELECT * FROM customer;

Page 45: Caching: In-Memory Column Store oder im BI Server

Anzahl zurückgelieferter Zeilen

Beschreibung Gut geeignet für

Spalten InMemory

Weniger geeignet für

Spalten InMemory

Je mehr Zeilen zurückgeliefert werden, umso geringer ist der Vorteil des spaltenorientierten Zugriffs, da die Werteübergabe zum BI

Server und der

Berichtaufbau die Performanz dominiert.

SELECT sum(revenue) FROM sales;

SELECT revenue FROM sales;

45Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Page 46: Caching: In-Memory Column Store oder im BI Server

Komplexe SQL-Funktionen (Expressions)

Beschreibung Gut geeignet für

Spalten InMemory

Weniger geeignet für

Spalten InMemory

Rechenintensive SQL-Funktionen sind weniger geeignet, da die Performanz für die Berechnung benötigt wird.

SELECT I.id, sum(S.revenue)FROM Sales S, Items I WHERE S.item_id = I.id AND I.name LIKE “%LED%TV”GROUP BY I.id;

SELECT I.id, sum(S.revenue)FROM Sales S, Items I WHERE S.item_id = I.idAND MyMatch(I.name,”LEDTV”)=1GROUP BY I.id;

46Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Page 47: Caching: In-Memory Column Store oder im BI Server

DWH Reference Architecture PoC

47Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Backend

Frontend

Acquisition Layer (Input Layer)

Core Warehouse Layer (Storage Layer)

Information Mart Layer (Output Layer)

Cognos BI Cognos SPSS / R

Star Cognos Cubes

Data Vault

Keine FK, PKFlat

Page 48: Caching: In-Memory Column Store oder im BI Server

Use Case: Standardreporting

IMDB Cognos Dynamic Cubes (OLAP)

Skalierbar Skalierbar

Wenn IMDB-Cache voll, wird der Buffercache verwendet

Nur Membercache und Aggregatecachekritisch (alle Daten müssen reinpassen). Faktendaten müssen nicht in den Cache (Abhängigkeit von der DB-Performanz; IBM empfiehlt Einsatz IMDB)

DML-Operationen verlangsamen Aktualität Kompletter Refresh: dauert täglich länger mit größer werdender Datenmenge (RealTime Differential Refresh möglich)

48Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Page 49: Caching: In-Memory Column Store oder im BI Server

Use Case: Ad-hoc Reporting

49Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

• Cubes sind nicht für ad-hoc geeignet. OLAP Cubes setzen bekannte Abfragen voraus, deren Daten zuvor festgelegt/implementiert werden müssen.

Page 50: Caching: In-Memory Column Store oder im BI Server

Use Case: Flexibilität und Virtualisierung

50Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

• Information / Analytics Mart Layer besteht nur aus Views auf Tabellen im Core Warehouse Layer

• Einschätzung nach Performanztests: Vereinzelt machbar mit guter Performanz

Page 51: Caching: In-Memory Column Store oder im BI Server

Gliederung

Motivation und Konzepte spaltenorientierter In-Memory DBs (IMDB)

OLAP/Cognos In-Memory Cubes und IMDB

Testszenario und –durchführung mit Oracle

Erkenntnisse/Folgerungen

Zusammenfassung

51Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Page 52: Caching: In-Memory Column Store oder im BI Server

OLAP Cubes / Cognos Dynamic Cubes

Use Cases werden weniger

• Sinnvoll bei rechenintensiven KPIs (Aggregation, Expression Cache)

• Sinnvoll, wenn Abfragen komplett feststehen (reines Standardreporting)

• Keine weitere Lizenz nötig sobald Cognos BI lizensiert

• Cognos Dynamic Cubes: Nicht alle Daten müssen im Cache gehalten werden (nur Member + Aggregate)

• Zugriff auf DB bei Daten, die nicht im Cognos Cache sind

• Performanz schwankt, je nach DB-Performanz52Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Page 53: Caching: In-Memory Column Store oder im BI Server

OLAP, OLTP und OLTAP

OLAP

OLTP

OLTAP –

gemischte

Workloads

53Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

• großes Potential für spaltenorientierte In-Memory DBs

• auch mit reinen Views als Data Marts denkbar („Datenvirtualisierung“)

• vereinzelt sinnvoll, z.B. große Stammdatentabellen

• große Herausforderung in der Vergangenheit

• Potential für spaltenorientierte In-Memory DBs

• aber: gegenläufiger Trend Microservices = „kleinere“ DBs

Page 54: Caching: In-Memory Column Store oder im BI Server

One size does not fit all

„In 10 years there will be no row

stores in the data warehouse world.“

Quelle: Stonebreaker, O'Reilly webcast http://radar.oreilly.com/2015/06/the-future-of-data-at-scale.html

54Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Page 55: Caching: In-Memory Column Store oder im BI Server

Vielen Dank!

55Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Daimler TSS GmbH

Wilhelm-Runge-Straße 1189081 UlmTelefon +49 731 505-06Fax +49 731 505-65 [email protected]

Internet: www.daimler-tss.com

Daimler TSS GmbHSitz und Registergericht: Ulm, HRB-Nr.: 3844 Geschäftsführung: Dr. Stefan Eberhardt (Vorsitzender), Steffen Bäuerle

Jobportalhttps://jobs.daimler-tss.de/PORTAL/jobs.html z.B.:

Page 56: Caching: In-Memory Column Store oder im BI Server

In-Memory: IBM, Microsoft, Oracle, SAP 1(3)

SQL Server IBM DB2 BLU Oracle IMDB SAP HANA

Ersteinführung 07/2014 06/2013 04/2014 10/2010

Befehl zur

Erzeugung der

spaltenorienti

erten Tabelle

Create index … Create table … Eigenschafteiner Tabelle

Create table …

56Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Page 57: Caching: In-Memory Column Store oder im BI Server

In-Memory: IBM, Microsoft, Oracle, SAP 2(3)

SQL Server IBM DB2 BLU Oracle IMDB SAP HANA

Datenkomprim

ierung

Ja Ja Ja Ja

Data Skipping Ja Ja Ja Ja

Datenhaltung • Zeilen (In-Memory OrganizedTables)

• Spalten (Columnstore Index)

• Zeilen und Spalten (Column-organizedTables oder Schattentabellen)

• Zeilen und Spalten simultan (BufferCachefür Zeilen)

• Zeilen und Spalten (Spalten präferiert)

57Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Page 58: Caching: In-Memory Column Store oder im BI Server

In-Memory: IBM, Microsoft, Oracle, SAP 3(3)

SQL Server IBM DB2 BLU Oracle IMDB SAP HANA

In-Memory

Analytics / R

Ja Nein Ja Ja

Persistenz

Columnstore

Ja Ja Nein Ja

Aggregate

Pushdown

Ja (ab 2016) Ja

Limitierung

durch RAM

Nein Nein Nein Nein (nicht mehr)

SIMD Ja Ja Ja Ja

58Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Page 59: Caching: In-Memory Column Store oder im BI Server

1 Technologie - 4 Hersteller – 4 Implementierungen

Spaltenorientierte IM DB

RAM (In-Memory)

Spalten-orientierung

KomprimierungData Skipping

SIMD

59Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Page 60: Caching: In-Memory Column Store oder im BI Server

SAP HANA

Aufhebung Trennung operative

(OLTP) und analytische (OLAP)

Workloads

60Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Page 61: Caching: In-Memory Column Store oder im BI Server

Workload OLTP und OLAP

61Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Quelle: http://www.vldb.org/pvldb/vol5/p061_jenskrueger_vldb2012.pdf

Page 62: Caching: In-Memory Column Store oder im BI Server

SAP Hana

62Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Eine Tabelle ist entweder

zeilenorientiert oder

spaltenorientiert.Row Store

Column Store Delta L2 Delta L1

Select + DML

DML

Select

Logs Snapshots

Page 63: Caching: In-Memory Column Store oder im BI Server

IBM DB2 BLU

Seven Big Ideas

63Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Page 64: Caching: In-Memory Column Store oder im BI Server

IBM DB2 BLU – 7 Big Ideas

64Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Big Idea 1: Simplicity and ease of use

Big Idea 2: Column store

Big Idea 3: Adaptive compression

Big Idea 4: Parallel vector processing (SIMD)

Big Idea 5: Core-friendly parallelism

Big Idea 6: Scan-friendly memory caching

Big Idea 7: Data skipping

Page 65: Caching: In-Memory Column Store oder im BI Server

IBM DB2 BLU – Variante 1: OLAP

65Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Eine Tabelle ist entweder

zeilenorientiert oder

spaltenorientiert.

Page 66: Caching: In-Memory Column Store oder im BI Server

IBM DB2 BLU – Variante 2: OLTAP (Schattentabellen)

66Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Eine Tabelle ist zeilenorientiert

und spaltenorientiert.

Page 67: Caching: In-Memory Column Store oder im BI Server

MS SQL Server

Dedizierte In-Memory stores für

OLTP und OLAP

67Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Page 68: Caching: In-Memory Column Store oder im BI Server

MS SQL Server – NonClustered Columnstore Index

68Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Eine Tabelle („Index“) ist

zeilenorientiert und

spaltenorientiert.

Page 69: Caching: In-Memory Column Store oder im BI Server

MS SQL Server – Clustered Columnstore Index

69Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Eine Tabelle („Index“) ist entweder

zeilenorientiert oder

spaltenorientiert.

Page 70: Caching: In-Memory Column Store oder im BI Server

Oracle

Das duale Format in der Datenbank

70Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Page 71: Caching: In-Memory Column Store oder im BI Server

Oracle – Buffer Cache (row) and IMDB (columnar)

71Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Row Store Column Store

Logs Datendateien

Eine Tabelle ist zeilenorientiert

und spaltenorientiert.

Row Store

DML

Select

Page 72: Caching: In-Memory Column Store oder im BI Server

Cognos Cube Technologien

72Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Page 73: Caching: In-Memory Column Store oder im BI Server

RDBMS vs OLAP vs IMDP

Datenmodell Abfrage-

Sprache

Interaktion Vorteile

RDBMS Star-Schema SQL Abfrage und Antwort

SkalierbarFlexibel

OLAP Cube MDX Interaktiv Performant

IMDB Star-SchemaOder andere relationale Form

SQL Interaktiv SkalierbarFlexibelPerformant

73Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

RDBMS (In-Memory) nähert sich OLAP Cubes an (interaktiv, schnell)

Page 74: Caching: In-Memory Column Store oder im BI Server

Selektivität von Join-Bedingungen

Beschreibung Gut geeignet für

Spalten InMemory

Weniger geeignet für

Spalten InMemory

Selektive Join-Bedingungen nutzen den Vorteil des schnellen Filterns von Daten.

SELECTS.id, P.name, S.revenueFROM Sales S, Products P WHERE S.prod_id=P.id AND P.type=‘Footwear’;

SELECTSi.d, S.revenue, P.nameFROM Sales S,Products P WHERE S.prod_id=P.id;

74Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Page 75: Caching: In-Memory Column Store oder im BI Server

Anzahl der Tabellen im Join

Beschreibung Gut geeignet für

Spalten InMemory

Weniger geeignet für

Spalten InMemory

Je größer die Anzahl der Tabellen im Join ist, umso geringer ist der Vorteil, da die Performanz für den Joinbenötigt wird.

Aber typisch im Reporting!

SELECT <select list>FROM Sales, Products, CustomersWHERE <join condition>

SELECT <select list>FROM Sales, Products, Customers, Shipments, Stores, Suppliers, WarehousesWHERE <Join Condition>

75Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Page 76: Caching: In-Memory Column Store oder im BI Server

Selektivität von Spalten-Prädikaten

Beschreibung Gut geeignet für

Spalten InMemory

Weniger geeignet für

Spalten InMemory

Selektive Prädikate nutzen den Vorteil des schnellen Filterns von Daten.

SELECT MEDIAN(revenue) FROM Sales WHERE revenue < 2;

Vorteilhaft, da weniger Zeilen und dadurch weniger Daten für die Median-Berechnung nötig sind.

SELECT MEDIAN(revenue)FROM Sales WHERE revenue > 2;

76Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Page 77: Caching: In-Memory Column Store oder im BI Server

OLTP - Mögliche Anwendungsfälle

Sinnvoll bei

• Größeren Stammdatentabellen

• Weniger Indexe

• Vermeidung ständiges Tuning dieser Tabellen

• Klassiker: Adress-Suche (siehe folgendes Beispiel)

Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Page 78: Caching: In-Memory Column Store oder im BI Server

Klassiker: Adress-Suche

Kunden-Tabelle Adress-Tabelle

Kundennummer Ort

Vorname PLZ

Nachname Straße

Geburtsdatum Kundennummer

etc etc

Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Page 79: Caching: In-Memory Column Store oder im BI Server

Herausforderung Suchabfrage: Müller AND Berlin

Buckenhofer: ca. 100

Müller: ca. 700.000

Berlin: ca. 3.5 Mio

Dornstadt: ca. 8.500

79Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Buckenhofer

Berlin Müller Dornstadt

Müller Berlin

21 12

? ?

1 2 = Reihenfolge der Abarbeitung / JoinsKleine Tabelle zuerst

Page 80: Caching: In-Memory Column Store oder im BI Server

Lösungsansätze Adress-Suche

• Materialized Views

• Text Index

• Bitmap Join Index

• Index Backbone Join: Patent US8103658 (Lothar Flatz, Bjorn Kisbye Engsig) http://www.google.com/patents/US8103658

• Spaltenorientierte In-Memory DB

80Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Page 81: Caching: In-Memory Column Store oder im BI Server

Zusammenfassung Konzepte

81Caching: In-Memory Column Store oder BI Server? | Analytics | 18-Nov-2015

Rohdaten Komprimierung Spalten Skipping SIMD