1 Oracle Data Warehouse Mit Big Data neue Horizonte für das Data Warehouse ermöglichen Alfred...

Post on 05-Apr-2015

116 views 6 download

Transcript of 1 Oracle Data Warehouse Mit Big Data neue Horizonte für das Data Warehouse ermöglichen Alfred...

1

Oracle Data Warehouse Mit Big Data neue Horizonte für das Data Warehouse ermöglichen

Alfred Schlaucher, Detlef Schroeder

DATA WAREHOUSE

2

Big Data Buzz Word oder eine neue Dimension und Möglichkeiten

Oracles Technologie zu Speichern von unstrukturierten und teilstrukturierten Massendaten

Cloudera Framwork

„Connectors“ in die neue Welt Oracle Loader for Hadoop und HDFS

Big Data Appliance

Mit Oracle R Enterprise neue Analyse-Horizonte entdecken

Big Data Analysen mit Endeca

Themen

3

Anforderungen Warum R Die R-Entwicklungsumgebung Oracle R- Enterprise Der transparente Tabellen-Zugriff Statistische Analysen mit R in der Datenbank Visualisierung von Ergebnissen (Plotting) Visualisierung von Ergebnissen (OBIEE) Einbinden in umfangreiche Analyse-Szenarien

Themen

4

Geringere Latenzen bei der Datenbereitstellung

Linerare Skalierung

Vorhersehbare Aufwände und Durchsatz

Anforderungen: Schnellere und elegantere Analyse-Abläufe

Ressourcen

5

Weniger Datenbewegung

Flexiblere Tools und flexibler Datenaustausch

Mehr Gesamtunternehmens-daten in der Analyse

Anforderungen: Effizienterer und leichterer Umgang mit Daten und Informationen

Leichte Zugänge

Mehr Informa- tionen

Ressourcen

6

OPEN SOURCE Sprache und Umgebung

STATISTISCHE BERECHNUNGEN und Graphik

STÄRKE liegt in der schnellen graphischen Aufbereitung (Plots)

>5,300 statistische Packages

LEICHT ERWEITERBAR durch Open Source Community

Versteckte Beziehungen entdeckenR Statistische Programmiersprache

users

sales

history

returns

online

PCA 5

Factor 3Factor 1Clustering 4 Groups

28

16

2

180 60 40 20 0

7

Analysieren integrierter Data

Interaktives Arbeiten, Erstellen von Ergebnissen und Weiterverarbeiten

Ad Hoc Analysieren

Anforderungen:Flexibles Arbeiten

UserFacts

Mehr Möglich-keiten

RessourcenLeichte Zugänge

Mehr Informa- tionen

8

Warum nutzen immer mehr Anwender R

Warum R

Ist schnell

Ist ansprechbar -offene Kommunikation

“Schläft nicht”

Point

Kann mehr

Ist günstigerWas kosten die übrigen

Tools?

Oft mehr Funktionen, als in klassischen Tools

Neue Funktionen, sind oft in R als erstes implemtiert

Die Entwickler der Funktionen sind oft per Mail direkt erreichbar

Weltweit wird mit Rgearbeitet

9

Warum sollte man sich für R interessieren

Gehört zu den neuen aufkommenden Trends– Next “big thing” in Avanced Analytics

– Moderne statistische Programmiersprache

– Ausbildungsinstitute und Universitäten nutzen R für die Ausbildung(Sie ersetzen traditionelle Tools)

– Advanced Analytics ist zunehmend kritisches Unterscheidungsmerkmal im DWH Technologie Stack

R wird durch Oracle R Enterprise skalierbar Kostengünstige Alternative zu SAS

10

Auswahl bei den GUIs

Bereiche:

– R Console Plot-BereichErgebnis-BereichMessages

Standard GUI / Rstudio /Rcommander/.../...

Insert Chart Here

Graphische Bediener-OberflächenLiv

eLive

11

Daten und Objekte

12

> alter <- c(19,20,20,19,25,26,22,25,29)

> geschl <- c(1,2,2,1,2,2,2,1,2) > geschl.faktor <- factor(geschl)

Vektor

Faktor

> bsp.data.frame <- data.frame(alter,geschl.faktor)Data-Frame

round(tapply(alter ,geschl,mean,na.rm=TRUE),0)

Einfache Beispiele zur Darstellung der Sprachmimik

Liv

eLive

13

Daten-Handling

R Engine

LokaleDaten

Datenbank

df <-read.csv(file.choose()) class(df)names(df)objects()dim(df)

Liv

eLive

14

Insert Chart Here

Daten-Visualisierung mit R

http://gallery.r-enthusiasts.com/

Liv

eLive

15

R code und/oder SQL

Modelle laufen “In-Database”

Große Datenmengen

Built-in security

Oracle R EnterpriseOracle Advanced Analytics - Oracle R Enterprise and Oracle Data Mining

Schneller

Skalierbar

Sicher

16

Oracle R-Angebote

Oracle R Distribution– Free download, pre-installed on Oracle Big Data Appliance, bundled with Oracle Linux

– Enterprise support for customers of Oracle R Enterprise, Big Data Appliance, and Oracle Linux

– Contribute bug fixes and enhancements to open source R

ROracle– Open source Oracle database interface driver for R based on OCI

– Maintainer is Oracle – rebuilt from the ground up

– Many bug fixes and optimizations

Oracle R Enterprise– Transparent access to database-resident data from R

– Embedded R script execution through database managed R engines

– Statistics engine

Oracle R Connector for Hadoop– R interface to Oracle Hadoop Cluster on BDA

– Access and manipulate data in HDFS, database, and file system

– Write MapReduce functions using R and execute through natural R interface

17

RAM

RAM

RAM

RAM

RAM

RAM

RAM

Mögliche Szenarien mit Oracle R-Enterprise

R EngineDirekten Zugriff auf alle Tabellen in der Datenbank

File System

R EngineR Engine

R EngineAuslagern der Analysen in die DatenbankZurückholen der Ergebnisse

Anlegen neuer Objekte in der Datenbank

R EngineR Engine

Parallelisierungdurch die DatenbankFile System

R EngineR Engine

R Engine

R-Analysen über SQL-Funktionen(Batch)

R EngineR Engine

Parallelisierungdurch die Datenbank

File System SQL

18

Oracle R Enterprise – Data Sources

User tables

Oracle Datenbank Bulk import

File systems

Database Links

SQLResults

R user on desktop

External Tables

File systems

Direkter Zugriff

Andere Datenbanken

Direkter ZugriffRODBC,DBI, etc

R EngineAndere R Packages

Import / Load Data

R EngineOther R packages

Oracle R Enterprise packages

R EngineOther R packages

Oracle R Enterprise packages

R EngineAndere R Packages

Oracle R Enterprise packages

Andere Datenbanken

Oracle R Enterprise packages

PushPull

Select ...Fro ..Table(....)begin

Create Functionend

Parallel AufrufeTransparent Layer

19

Transparency Layer Support

ORE bietet eine “in-database execution” – Funktionalität als transparente Schicht an

What’s transparent about it?– R Benutzte benötigen nur R Syntax

– Benutzer sehen Datenbank-Objecke as spezielle R Objekte

– Unterstützt weden fast alle R-Funktionen des Basis-Pakets

– Unterstützt R's Statistik und Graphik-Pakete

Funktional vergleichbar mit SAS DATA STEP, läuft allerdings in-Datenbank!

20

ORE Packages

Package DescriptionORE Top Level Package for Oracle R

EnterpriseOREbase Corresponds to R’s base packageOREstat Corresponds to R’s stat packageOREgraphics Corresponds to R’s graphics packageOREeda ORE’s exploratory data analysis

package containing SAS PROC-equivalent functionality

ORExml ORE’s package supporting XML translation between R and Oracle Database - internal

ORHC Oracle R Hadoop Connector

©2012 Oracle – All Rights Reserved

21

Funktionen und Methoden

22

Funktions- und Methodenübersicht

• Mathematische Funktionen:abs, sign, sqrt, ceiling, floor, trunc, cummax,cummin, cumprod, cumsum, log, log10, log2, log1p, acos, acosh, asin, asinh, atan, atanh, exp, expm1, cos, cosh, sin, sinh, tan, tanh, gamma, lgamma, digamma, trigamma, round, signif, pmin, pmax, zapsmall

• Basis Statistik:mean, summary, min, max, sum, any, all, median, range, IQR,fivenum, mad, quantile, sd, var, table, rowSums, colSums, rowMeans, colMeans

• Rechnen: +, -, *, /, ^, %%, %/%• Vergleichen: ==, >, <, !=, <=, >=• Logik: &, |, xor• Mengenbezogene Abgleiche: unique, %in%• Zuweisungen: <-, =, ->

Liv

eLive

23

Funktions- und Methodenübersicht

• Strings:tolower, toupper, casefold, toString, chatr, sub, gsub, substr,substring, paste, nchar

• Data Frames Kombinieren / Ergänzen: cbind, rbind, merge• Combine vectors: append• Vector creation: ifelse• Subset:

[, [[, $, head, tail, window, subset, Filter, na.omit, na.exclude,complete.cases

• Daten umgruppieren: split, unlist • Datenverwalten: eval, with, within, transform• Apply Varianten: tapply, aggregate, by• Regression: ore.lm() - a variant of lm()• Werte-Checks:

is.na, is.finite, is.infinite, is.nan• Metadaten Funktionen:

attributes, nrow, NROW, ncol, NCOL, nlevels, names, row,col, dimnames, dim, length, row.names, col.names, levels, reorder

Liv

eLive

24

Funktions- und Methodenübersicht

• Graphik: hist, boxplot, plot, smoothScatter• Garbage collection: gc (Löschen von temp. tabellen)• Konvertierungen: as.ore.{character, factor, integer, logical, numeric, vector}• Test Funktionen: is.ore.{character, factor, integer, logical, numeric, vector}• Save: ore.push (table is automatically refreshed in R memory)

• Hypothesen-Test:wilcox.test, ks.test, var.test, binom.test, chisq.test, t.test, bartlett.test

• Bessel Funktionen: Bessel(I,J,K,Y)• Gamma Funktionen: gamma, lgamma, digamma, trigamma (part of mathematical functions group)• Verteilungen: Density, cumulative distribution, and quantile functions for standard distributions• Matrix:

%*% (matrix multiplication), crossprod (matrix cross-product),tcrossprod (matrix cross-product A times transpose of B)

Liv

eLive

25

Arbeiten mit Tabellen in der Datenbank

26

Beispiele für den transparenten Zugriff

library(ORE)

ore.connect("RQUSER","SID","HOST", "PASSWORD",1521)

ore.create( ONTIME_S, table = "NEW_ONTIME_S")

ore.create( ONTIME_S, view = "NEW_ONTIME_S_VIEW")

ore.drop(table="NEW_ONTIME_S")

ore.drop(view="NEW_ONTIME_S_VIEW")

t <- ore.get("ONTIME_S","RQUSER")

ore.attach()

v <- ore.push(c(1,2,3,4,5))

ore.sync()

ore.sync("RQUSER")

ore.sync(table=c("ONTIME_S", "NARROW"))

ore.sync("RQUSER", table=c("ONTIME_S", "NARROW"))

ore.exists("ONTIME_S", "RQUSER")

ore.exec("create table F2 as select * from ONTIME_S")

Connect to a specific schema and database

One connection active at a time

Create a database table from a data.frame, ore.frame. Create a view from an ore.frame.

Drop table or view in database

Store R object in database as temporary object, returns handle to object. Data frame, matrix, and vector to table, list/model/others to serialized object

Synchronize ORE proxy objects in R with tables/views available in database, on a per schema basis

Returns TRUE if named table or view exists in schema

Liv

eLive

27

Zugriff auf Datenbank-Tabellen

ore.connect(user = "RU",sid = "ORCL",host = "localhost",password = "RU",port = 1521)

ore.sync()ore.ls()

class(GESAMTSICHT)

28

Orientierung über die Struktur der Tabellen

dim(GESAMTSICHT)

names(GESAMTSICHT)

29

Orientierung über die Struktur der Tabellen

str(GESAMTSICHT)

30

Ausschnitt der Daten anzeigen lassen

head(GESAMTSICHT)

31

Durchschnittliche Bewertung Berechnen

tapply(NUTZ_NR,PRODUKT_NR,mean)

32

Einfache visuelle DarstellungWelche Produkte zeigen auffälliges Verhalten?

plot(round(tapply(NUTZ_NR,PRODUKT_NR,mean),2),type="h",xlab = "Produktnummern", ylab ="Bewertungsindex")

Produkte mit schlechten Bewertungen

33

Histogram

hist(round(tapply(NUTZ_NR,PRODUKT_NR,mean),2),ylab = "Produktnummern", xlab ="Bewertungsindex")

Die meisten Produkte haben gute Bewertungen im Bereich von 4 - 6

34

Neue Datenstrukturen erstellenDurchschnittliche Bewertungen pro Produkt

bew_prod <- aggregate(GESAMTSICHT$NUTZ_NR, by=GESAMTSICHT$PRODUKT_NR, FUN = mean)

PRODUKT_NR <- c(bew_prod$Group.1)BEWERTUNG <- c(bew_prod$x)df_bew_prod <- data.frame(PRODUKT_NR,BEWERTUNG)

Spaltennamen ungeschickt

Neue Spaltennamen erstellt

35

Neue Datenbanktabelle anlegen

ore.create(df_bew_prod,table = "PRODUKT_BEWERTUNG")

CREATE table UMSATZ_2012_PRO_ARTIKEL as SELECT a.artikel_id PRODUKT_NR,sum(U.umsatz) UMSATZ_2012FROM f_Umsatz_range U, D_zeit z, D_artikel aWHERE

U.zeit_id = z.zeit_id AND U.artikel_id = a.artikel_id

and z.jahr_nummer = 2012GROUP by a.artikel_id ;

produkt_umsatz_bewertung <- merge(PRODUKT_BEWERTUNG,UMSATZ_2012_PRO_ARTIKEL, by="PRODUKT_NR",all=FALSE)

Das Objekt produkt_umsatz_bewertung ist neu erstellt worden und könnte auch in die Datenbank gebracht werden.

In der Datenbank erstellt

Über die R-Engine erstellt

36

Neue Strukturen aufbauenGibt es eine Korrelation zwischen Bewertung und Umsatz?

> names(produkt_umsatz_bewertung)[1] "PRODUKT_NR" "BEWERTUNG" "UMSATZ_2012„> attach(produkt_umsatz_bewertung)> df_bewertung_umsatz <- data.frame(BEWERTUNG,UMSATZ_2012)

Die neue Tabelle enthält die Spalten Umsatz und Bewertung. Gibt es dazwischen einen Zusammenhang.

37

Neue Strukturen aufbauenGibt es eine Korrelation zwischen Bewertung und Umsatz

create table Umsatz_2012_pro_Artikel as select distinct Produkt_nr, umsatz_2012 from gesamtsicht;

Umsatz pro Produkt in

38

39

intersect(colnames(GESAMTSICHT), colnames(UMSATZ_2012_PRO_ARTIKEL))

42

R-Engine auf DB-ServerR-Engine auf DB-Server

Gezielte Steuerung von Scripten innerhalb der Datenbank

mod <- ore.doEval( function(param) { library(ORE) ore.connect(user="RQUSER", password="RQUSER", sid="ORCL", host="192.168.1.16",port=1521) ore.sync() ore.attach() mod <- with(ERSTIS,split(alter,geschl))});

with(ERSTIS,split(alter,geschl))Lokale R-Engine auf PC

Oracle Datenbank

erstis

Lokale R-Engine auf PC

Oracle Datenbank

erstis

R-Engine auf DB-Server

Tabelle wird in den lokalen Speicher kopiert und lokalanalysiert

Tabelle bleibt in der DB.Analyse findet im Speicher des DB-Servers stattDas Ergebnis wird zurückgeliefert

DB

-Server-M

aschin

eD

B-S

erver-Masch

ine

43

OREeda Package Functionsspezielle Funktionen (SAS analog)

ore.corr ore.crosstab ore.freq ore.lm ore.rank ore.sort ore.summary ore.univariate

R-Engine auf DB-ServerR-Engine auf DB-Server

Lokale R-Engine auf PC

Oracle Datenbank

erstis

R-Engine auf DB-Server

Die Abarbeitung im Memory der Datenbank ist schneller als im Memory der R Engine auf dem Server

DB

-Server-M

aschin

e

DB Memory

R Memory

44

Gezieltes Ansteuern einer Verarbeitungsvariante(Beispiel Regressions Modell)

mod <- ore.doEval( function(param) { library(ORE) ore.connect(user="RQUSER", password="RQUSER„, sid="ORCL", host="192.168.1.16",port=1521) ore.sync() ore.attach() mod <- ore.lm(lz.1 ~ zuf.inh.1,ERSTIS) mod });mod_local <- ore.pull(mod)class(mod_local)summary(mod_local)

Daten bleiben im MemoryDer Oracle Datenbank

mod <- ore.doEval( function(param) { dat <- ore.pull(ONTIME_S) mod <- lm(ARRDELAY ~ DISTANCE + DEPDELAY, dat) mod });mod_local <- ore.pull(mod)class(mod_local)summary(mod_local)

Daten im Memoryder R-Engine auf dem DB-Server

Laufzeit: 3 Sekunden Laufzeit: 110 Sekunden

45

Funktionen und Prozeduren in der Datenbank

46

begin sys.rqScriptCreate('Example1‘, 'function() {

ID <- 1:10 res <- data.frame(ID = ID, RES

= ID / 100) res}');end;/

select *

from table(rqEval(NULL,

'select 1 id, 1 res from dual',

'Example1'));

Aufrufen von R-Scripten über SQL-Statements komplett in der Datenbank (sys.rqScriptCreate)

R-Engine auf DB-ServerR-Engine auf DB-Server

Oracle Datenbank

R-Engine auf DB-Server

DB

-Server-M

aschin

e

DB Memory

R Memory

Select * from Table()

47

Visualisieren von Ergebnissen (Plotting)

48

49

50

51

52

Visualisieren von Ergebnissen (OBIEE)

53

Anzeige über Business IntelligenceAls Funktion oder gespeicherte Ergebnisse

Das Kundenranking wird mit in den Berichten angezeigt

54

Einbindung von R-Grafiken in OBIEEMit Parametern

55

Einbinden von R in umfangreichere Analyse-Szenarien

56

Cluster-Analyse Baum - Darstellung

57

Cluster-Analyse library(cluster)

58

Native R MapReduce

Native R HDFS Zugriff

Mehr Produktivität

Insert Chart Here

Integrierte R UmgebungOracle R Connector for Hadoop

ORE

Client Host

R Engine

HadoopCluster

Software

R Engine

MapReduceNodes

HDFS

Oracle Big DataAppliance

Oracle Exadata

R EngineORE

ORHCORHC

59

Big Data Connectors

Oracle 11.2

R Environment

Oracle Direct Connector for HDFS

ExternalTable

Oracle Loader for Hadoop

Preprocessor: hdfs_stream

CSV

Data pump

Parallel Execution

HDFShdfs_stream

Partitioned+ sorted

OCIJDBC

direct path convential path

Hive Table

CSV + / n

LoaderMap

Target Table

Offline Mode

Online Mode

Oracle Server-MachineHDFS Cluster-Machines

MapReduce Job Framework

Oracle R Connector for Hadoop

R-Package

Oracle R Enterprise(Advanced Analytics)

R-Package

60