Post on 18-Jul-2020
BASEL BERN BRUGG DÜSSELDORF FRANKFURT A.M. FREIBURG I.BR. GENF HAMBURG KOPENHAGEN LAUSANNE MÜNCHEN STUTTGART WIEN ZÜRICH
Oracle In-Memory & Data Warehouse: Die perfekte Kombination? DOAG Konferenz, 16. November 2016 Dani Schnider, Trivadis AG
@dani_schnider
Unser Unternehmen.
Oracle In-Memory & Data Warehouse 2 16.11.2016
Trivadis ist führend bei der IT-Beratung, der Systemintegration, dem Solution Engineering und der Erbringung von IT-Services mit Fokussierung auf - und -Technologien in der Schweiz, Deutschland, Österreich und Dänemark. Trivadis erbringt ihre Leistungen aus den strategischen Geschäftsfeldern: Trivadis Services übernimmt den korrespondierenden Betrieb Ihrer IT Systeme.
B E T R I E B
KOPENHAGEN
MÜNCHEN
LAUSANNE BERN
ZÜRICH BRUGG
GENF
HAMBURG
DÜSSELDORF
FRANKFURT
STUTTGART
FREIBURG
BASEL
WIEN
Mit über 600 IT- und Fachexperten bei Ihnen vor Ort.
Oracle In-Memory & Data Warehouse 3 16.11.2016
14 Trivadis Niederlassungen mit über 600 Mitarbeitenden.
Über 200 Service Level Agreements.
Mehr als 4'000 Trainingsteilnehmer.
Forschungs- und Entwicklungsbudget: CHF 5.0 Mio. / EUR 4.0 Mio.
Finanziell unabhängig und nachhaltig profitabel.
Erfahrung aus mehr als 1'900 Projekten pro Jahr bei über 800 Kunden.
Dani Schnider
4
Principal Consultant, Teacher und DWH Lead Architect bei Trivadis in Zürich
Co-Autor der Bücher «Data Warehousing mit Oracle» und «Data Warehouse Blueprints»
16.11.2016 Oracle In-Memory & Data Warehouse
@dani_schnider danischnider.wordpress.com
Oracle In-Memory & Data Warehouse 5 16.11.2016
Oracle Database In-Memory
Oracle In-Memory & Data Warehouse 6 16.11.2016
The innovation of the Oracle In-Memory option is: We store the data both ways - we store it two ways. We store it both in row format and in memory in columnar format. Next slide please!
When we process queries, we have all the data in memory, and we can scan it very very quickly. So we speed up insert into the database and update to the database two - three - four times by dropping these analytic indexes. Those analytic indexes are much more expensive to maintain than the column store that replaces the analytic indexes - and that's magic.
Oracle Database In-Memory Architektur
Oracle In-Memory & Data Warehouse 7 16.11.2016
SGA
Buffer Cache IM Column Store TX Journal
DBWn User IMCO Wnnn
Row Format
C5 C1 C2 C3 C4
SELECT UPDATE
Vorteile von Oracle Database In-Memory
Oracle In-Memory & Data Warehouse 8 16.11.2016
Optimiert für analytische Abfragen und Real-Time-Reporting
Schnelle Abfragen und Aggregationen auf grosse Datenmengen
Spaltenweise Komprimierung der Daten im Memory
Nur benötigte Spalten werden gelesen
Weniger Aufwand für Performanceoptimierungen
Keine applikatorischen Änderungen notwendig
Oracle In-Memory & Data Warehouse 9 16.11.2016
In-Memory & Data Warehouse
Braucht es überhaupt noch ein Data Warehouse?
Oracle In-Memory & Data Warehouse 10 16.11.2016
Nein.
Analytische Abfragen können direkt auf den operativen Systemen ausgeführt werden
Durch In-Memory Column Store werden OLTP-Applikationen nicht belastet
Ermöglicht Real-Time-Reporting auf den aktuellen Daten
Ja.
Integration von Daten aus unterschiedlichen Quellsystemen
Historisierung/Versionierung der Daten (Nachvollziehbarkeit)
Bereitstellung von Informationen für thematische Auswertungsbereiche
«A data warehouse is a subject-oriented, integrated,
time-variant, nonvolatile collection of data in support of
management’s decision-making process.»
William H. Inmon
DWH Architektur (Beispiel)
Oracle In-Memory & Data Warehouse 11 16.11.2016
Data Warehouse Marts Cleansing Area Core Staging Area Quellsysteme
Metadaten ETL
BI-Plattform
Welche Daten gehören in den In-Memory Column Store?
Oracle In-Memory & Data Warehouse 12 16.11.2016
Data Warehouse Marts Core
Metadaten
Cleansing Area Staging Area
? ? ? ?
?
Welche Daten gehören in den In-Memory Column Store?
Oracle In-Memory & Data Warehouse 13 16.11.2016
Marts Core
Einsatzgebiet von In-Memory im Data Warehouse:
Data Marts
Begründung:
Abfrageoptimierung von häufig verwendeten Queries
Star Schema ist idealer Kandidat für In-Memory Column Store
Oracle Database In-Memory und Star Schema
Oracle In-Memory & Data Warehouse 14 16.11.2016
Einsatzgebiet von In-Memory im Data Warehouse:
Data Marts
Begründung:
Abfrageoptimierung von häufig verwendeten Queries
Star Schema ist idealer Kandidat für In-Memory Column Store
Nur benötigte Spalten müssen gelesen und aggregiert werden
Was ändert sich beim Einsatz von In-Memory im DWH?
Oracle In-Memory & Data Warehouse 15 16.11.2016
Fast nichts.
Aufgaben im Data Warehouse bleiben gleich
Architektur (DWH-Schichten) bleibt gleich
Datenmodelle bleiben gleich
Abfragen, Reports und BI-Applikationen bleiben gleich
Was ändert sich?
Physisches Design der Data Marts
Oracle In-Memory & Data Warehouse 16 16.11.2016
In-Memory & Physisches Design
Physisches Design von Data Marts (bisher)
Oracle In-Memory & Data Warehouse 17 16.11.2016
Dimensionstabellen: – Primary Key Constraint
– ev. Bitmap Indizes auf Filterattribute
Faktentabellen: – Partitionierung (in der Regel nach Datum)
– Foreign Key Constraints auf Dimensionen
– Bitmap Index auf jedem Dimensionsschlüssel
– ev. zusätzliche Bitmap Join Indizes
Optimizer-Statistiken
– Aktualisierung der Statistiken nach ETL-Lauf
Materialized Views
– Materialized Views für häufig verwendete Aggregationsstufen
– Dimension-Objekte für Hierarchien auf Dimensionstabellen
– ev. Materialized View Logs auf Core-Tabellen
– ev. Indizes auf Materialized Views
– ev. Partitionierung der Materialized Views
Physisches Design von Data Marts (mit In-Memory)
Oracle In-Memory & Data Warehouse 18 16.11.2016
Dimensionstabellen: – Primary Key Constraint
Faktentabellen: – Partitionierung (in der Regel nach Datum)
– Foreign Key Constraints auf Dimensionen
– ev. Partial Bitmap Indexes auf Faktentabellen
Optimizer-Statistiken
– Aktualisierung der Statistiken nach ETL-Lauf
In-Memory Column Store
– Alle Dimensionstabellen
– Kleine Faktentabellen (vollständig)
– Bei grossen Faktentabellen ev. nur häufig verwendete Kennzahlen / Dimensionsschlüssel
– Bei partitionierten Faktentabellen ev. nur aktuelle (bzw. häufig verwendete) Partitionen
In-Memory Compression Type
– Meistens MEMCOMPRESS FOR QUERY LOW
Konfiguration von INMEMORY pro Tabelle
Oracle In-Memory & Data Warehouse 19 16.11.2016
Ganze Tabelle
ALTER TABLE sales INMEMORY
ALTER TABLE sales MODIFY PARTITION p_2016 INMEMORY
ALTER TABLE sales INMEMORY (cust_id,time_id)
Einzelne Spalten
Einzelne Partitionen
In-Memory Compression Type
Oracle In-Memory & Data Warehouse 20 16.11.2016
Compression Level Description
NO MEMCOMPRESS Data is populated without any compression
MEMCOMPRESS FOR DML Minimal compression optimized for DML performance
MEMCOMPRESS FOR QUERY LOW Optimized for query performance (default)
MEMCOMPRESS FOR QUERY HIGH Optimized for query performance as well as space saving
MEMCOMPRESS FOR CAPACITY LOW Balanced with a greater bias towards space saving
MEMCOMPRESS FOR CAPACITY HIGH Optimized for space saving
In-Memory & Partial Local Index
Oracle In-Memory & Data Warehouse 21 16.11.2016
Table Partition P1
Index Partition P1
Table Partition P2
Index Partition P2
Table Partition P3
Index Partition P3
Table Partition P4
Index Partition P4
Table Partition P5 INMEMORY
Index Partition P5
Table Partition P6 INMEMORY
Index Partition P6
INDEXING ON INDEXING OFF
Oracle In-Memory & Data Warehouse 22 16.11.2016
Abfrageoptimierung
In-Memory Performance Features
Oracle In-Memory & Data Warehouse 23 16.11.2016
In-Memory Scan
– Spaltenweises Lesen der Daten aus dem IM Column Store
– Aggregation auf gewünschte Granularität
In-Memory Join
– Effiziente Methode, um Tabellen zu joinen
– Verwendung von sogenannten „Bloom Filters“
In-Memory Aggregation
– Vergleichbar mit Star Transformation
– Verwendung von „Key Vectors“ statt Bitmap Indizes
Abfrageoptimierung auf Star Schemas
Typische Abfragen auf Star Schema:
– Filterkriterien auf Dimensionen
– Fakten werden durch Join mit Dimensionen ermittelt
Problemstellung:
– Tabellen mit Filterkriterien sollten zuerst evaluiert werden
– Join nur auf jeweils zwei Tabellen
– Keine Beziehungen zwischen Dimensionen
1
2
3
3
2
116.11.2016 Oracle In-Memory & Data Warehouse 24
In-Memory Aggregation (Vector Transformation)
Oracle In-Memory & Data Warehouse 25 16.11.2016
Phase 1 (für jede Dimension mit Filterkriterien)
1. Scan auf Dimensionstabelle (inkl. Filterung der Daten)
2. Ermittlung von Key Vector
3. Aggregation der Daten (In-Memory Accumulator)
4. Erstellen von temporärer Tabelle
Phase 2
5. Full Table Scan auf Faktentabelle, Filterung anhand von Key Vectors
6. Aggregation mittels HASH GROUP BY / VECTOR GROUP BY
7. Join auf temporäre Tabellen (Join Back)
8. Ev. Join von weiteren Dimensionen (ohne Filterkriterien)
In-Memory Aggregation (Vector Transformation)
Oracle In-Memory & Data Warehouse 26 16.11.2016
FACTS 11 22 1000 11 24 1200 12 21 300 12 22 3200 12 24 700 13 22 1100 14 21 2000 14 24 800 14 25 1600 14 26 700 15 23 1100 15 24 1200 15 26 500 16 22 2400 16 23 800 17 22 1300 17 25 1100 18 21 900 18 24 2100 18 26 600
DIM1 11 Alpha 12 Alpha 13 Beta 14 Beta 15 Beta 16 Gamma 17 Delta 18 Delta
DIM2 21 X green 22 X blue 23 Y green 24 Y blue 25 Y red 26 Z red
SELECT D1, D21, D22 , SUM(FACTS.F) FROM FACTS JOIN DIM1 ON (...) JOIN DIM2 ON (...) WHERE D1 IN ('Beta', 'Gamma') AND D21 = 'Y' GROUP BY D1, D21, D22
In-Memory Aggregation (Vector Transformation)
Oracle In-Memory & Data Warehouse 27 16.11.2016
FACTS 11 22 1000 11 24 1200 12 21 300 12 22 3200 12 24 700 13 22 1100 14 21 2000 14 24 800 14 25 1600 14 26 700 15 23 1100 15 24 1200 15 26 500 16 22 2400 16 23 800 17 22 1300 17 25 1100 18 21 900 18 24 2100 18 26 600
DIM1 11 Alpha 12 Alpha 13 Beta 14 Beta 15 Beta 16 Gamma 17 Delta 18 Delta
DIM2 21 X green 22 X blue 23 Y green 24 Y blue 25 Y red 26 Z red
KV1 0 0 1 1 1 2 0 0
KV2 0 0 1 2 3 0
TMP1 1 Beta 2 Gamma
TMP2 1 Y green 2 Y blue 3 Y red
0 0 0 2 0 0 0 0 0 2 1 0 1 0 1 2 1 3 1 0 1 1 1 2 1 0 2 0 2 1 0 0 0 3 0 0 0 2 0 0
Beta Y green 1100 Beta Y blue 2000 Beta Y red 1600 Gamma Y green 800
Oracle In-Memory & Data Warehouse 28 16.11.2016
Oracle In-Memory & Data Warehouse Die perfekte Kombination?
✔
Quellen und weitere Informationen
Oracle Database Online Documentation 12c Release 1 (12.1) Database SQL Tuning Guide, Chapter 5: Query Transformations https://docs.oracle.com/database/121/TGSQL/tgsql_transform.htm#TGSQL95256
Oracle Database In-Memory: In-Memory Aggregation Oracle White Paper, January 2015 (William Endress) http://www.oracle.com/technetwork/database/bi-datawarehousing/inmemory-aggregation-twp-01282015-2412192.pdf
Oracle Database In-Memory Oracle White Paper, July 2015 (Maria Colgan) http://www.oracle.com/technetwork/database/in-memory/overview/twp-oracle-database-in-memory-2245633.html
Oracle Scratchpad, In-memory Aggregation, August 2014 (Jonathan Lewis) https://jonathanlewis.wordpress.com/2014/08/24/in-memory-aggregation/
Bloom Filters, Trivadis Article, June 2008 (Christian Antognini) https://antognini.ch/papers/BloomFilters20080620.pdf
16.11.2016 Oracle In-Memory & Data Warehouse 29
Trivadis @ DOAG 2016
Stand: 3ter Stock – direkt an der Rolltreppe Know how, T-Shirts, Gewinnspiel und Trivadis Power to go Wir freuen uns wenn Sie vorbei schauen Weil Sie mit Trivadis immer gewinnen !
16.11.2016 Oracle In-Memory & Data Warehouse 30