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