Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Szemelvények a
MonetDB.R
csomagból
Urbanics Gábor <urbanics@quanopt.com>

Villámelőadás – R meetup Budapest
1.

Quanopt Lt...
Problémafelvetés
 Az R jó, de a memóriában kell lennie
mindennek  hamar elfogyhat
 Erre a legegyszerűbb megoldások
o Fi...
MonetDB
ID
10
11
12
13

 Relációs

Day
Discount
4/4/98
0.195
9/4/98
0.065
1/2/98
0.175
7/2/98
0

 Oszlopszervezésű
o Vö....
MonetDB – előnyök
 A teljes oszlopo(ka)t érintő lekérdezéseknél

lesz hatékony (IO hozzáférés jobb)
 Egy oszlopot egysze...
MonetDB – hátrányok
 Nem „silver-bullet”: mindenre nem lesz jó
 „Read-mostly” hozzáférésre javasolt
 Itt is a kód a leg...
MonetDB és R integráció
 RODBC-n keresztül elérhető
o Ilyet láttunk már… ez nem segítene sokat

 MonetDB.R csomag
o Mone...
MonetDB.R csomag – DBI elérés
 DBI driver
o dbConnect
o dbSendUpdate, …
#
>
>
>

using DBI with MonetDB
conn <- dbConnect...
MonetDB.R csomag – monet.frame
 Egy data.frame szerű osztály
o Proxy objektum egy adatbázis táblához

 Egyszerű művelete...
MonetDB.R csomag – monet.frame
> mframe <- monet.frame(conn, "demotable", debug=TRUE)
QQ: 'SELECT * FROM demotable‘
II: 'R...
MonetDB.R csomag – monet.frame
> res <- (mframe$col1 + mframe$col2) / sqrt(cos(10*mframe$col3))
QQ: 'SELECT
QQ: 'SELECT
QQ...
MonetDB.R csomag – monet.frame
> head(res)

QQ: 'SELECT ((col1)+(col2))/(SQRT(COS(10*(col3)))) FROM
demotable LIMIT 6 OFFS...
MonetDB.R csomag – monet.frame
 Számos R függvény és operátor SQL oldali
implementációja szerepel a csomagban
o Subset, ”...
MonetDB.R csomag – hátrányok
 Az ötlet (R  SQL átírás) jó, de
o Az implementációban vannak azért hibák
(pl. „limit” nevű...
MonetDB.R csomag – hátrányok
 Tetszőleges meglévő függvényt nem
fogunk tudni használni 
> ggplot(data=mframe, aes(x=col1...
MonetDB.R – hasonló megoldások
 Oracle R Enterprise
o R függvények végrehajtása Oracle
adatbázisokon

 IBM Netezza R cso...
Upcoming SlideShare
Loading in …5
×

Szemelvények a MonetDB.R csomagból

858 views

Published on

Egy villámelőadás (15x20 sec) a MonetDB.R R csomagra koncentrálva. Általános, rövid bemutatás.

BURN Meetup - 2014. január 15.

A lightningtalk (15x20 sec) focusing on MonetDB.R R package. General and short package presentation

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Szemelvények a MonetDB.R csomagból

  1. 1. Szemelvények a MonetDB.R csomagból Urbanics Gábor <urbanics@quanopt.com> Villámelőadás – R meetup Budapest 1. Quanopt Ltd.
  2. 2. Problémafelvetés  Az R jó, de a memóriában kell lennie mindennek  hamar elfogyhat  Erre a legegyszerűbb megoldások o File-backed csomagok használata, pl. • bigmemory csomagcsalád, ff csomag o Amennyire lehet, használjunk adatbázist • Tárolás + • Feldolgozás 2. Quanopt Ltd.
  3. 3. MonetDB ID 10 11 12 13  Relációs Day Discount 4/4/98 0.195 9/4/98 0.065 1/2/98 0.175 7/2/98 0  Oszlopszervezésű o Vö. soronkénti OID ID OID 10 11 12 13 14 100 101 102 103 104 Day 100 4/4/98 101 9/4/98 102 1/2/98 103 7/2/98 104 1/2/99 OID Discount 100 0.195 101 0.065 102 0.175 103 0 104 0.065 3 db külön fájl a diszken 3. Quanopt Ltd.
  4. 4. MonetDB – előnyök  A teljes oszlopo(ka)t érintő lekérdezéseknél lesz hatékony (IO hozzáférés jobb)  Egy oszlopot egyszerű cache-elni o Memory mapped file  Oszloponként jobban tömöríthetőek az adatok o kisebb tárhely  o CPU-val fizetünk, a kevesebb IO-ért   Fürtbe is szervezhető 4. Quanopt Ltd.
  5. 5. MonetDB – hátrányok  Nem „silver-bullet”: mindenre nem lesz jó  „Read-mostly” hozzáférésre javasolt  Itt is a kód a legbiztosabb dokumentáció  5. Quanopt Ltd.
  6. 6. MonetDB és R integráció  RODBC-n keresztül elérhető o Ilyet láttunk már… ez nem segítene sokat  MonetDB.R csomag o MonetDB specifikus funkcionalitás R-ből o Alapvető DB management (start/stop) o Adatelérés (természetesen) 6. Quanopt Ltd.
  7. 7. MonetDB.R csomag – DBI elérés  DBI driver o dbConnect o dbSendUpdate, … # > > > using DBI with MonetDB conn <- dbConnect( MonetDB.R(), "monetdb://localhost/demo") result <- dbGetQuery( conn, "SELECT count(*) from mytable;") print(result) L1 1 29722533 > str(result) 'data.frame': 1 obs. of 1 variable: $ L1: num 29722533 7. Quanopt Ltd.
  8. 8. MonetDB.R csomag – monet.frame  Egy data.frame szerű osztály o Proxy objektum egy adatbázis táblához  Egyszerű műveletek adatbázis oldalon o Az R hívásokat SQL lekérdezésekké írja át 8. Quanopt Ltd.
  9. 9. MonetDB.R csomag – monet.frame > mframe <- monet.frame(conn, "demotable", debug=TRUE) QQ: 'SELECT * FROM demotable‘ II: 'Re-Initializing column info.‘ II: 'Re-Initializing row count.‘ Listázza ki az SQL lekérdezéseket! > str(mframe) MonetDB-backed data.frame surrogate 3 columns, 12500 rows Query: SELECT * FROM demotable Columns: col1 (numeric), col2 (numeric), col3 (numeric) 9. Quanopt Ltd.
  10. 10. MonetDB.R csomag – monet.frame > res <- (mframe$col1 + mframe$col2) / sqrt(cos(10*mframe$col3)) QQ: 'SELECT QQ: 'SELECT QQ: 'SELECT QQ: 'SELECT QQ: 'SELECT QQ: 'SELECT QQ: 'SELECT QQ: 'SELECT demotable' col1 FROM demotable‘ Lusta állatfaj  col2 FROM demotable‘ még csak előállítja (col1)+(col2) FROM demotable‘ a lekérdezéseket, col3 FROM demotable‘ de nem hajtja végre 10*(col3) FROM demotable‘ COS(10*(col3)) FROM demotable‘ SQRT(COS(10*(col3))) FROM demotable‘ ((col1)+(col2))/(SQRT(COS(10*(col3)))) FROM 10. Quanopt Ltd.
  11. 11. MonetDB.R csomag – monet.frame > head(res) QQ: 'SELECT ((col1)+(col2))/(SQRT(COS(10*(col3)))) FROM demotable LIMIT 6 OFFSET 0‘ II: 'Re-Initializing column info.‘ EX: 'SELECT ((col1)+(col2))/(SQRT(COS(10*(col3)))) FROM demotable LIMIT 6 OFFSET 0‘ 1 2 3 4 5 6 sql_div_sql_add_col1 4.661327 NA NA 6.260829 6.640108 -21.836528 11. Quanopt Ltd.
  12. 12. MonetDB.R csomag – monet.frame  Számos R függvény és operátor SQL oldali implementációja szerepel a csomagban o Subset, ”[” operátor o Aritmetikai műveletek: +, -, *, /, ^, %%, %/% o Logikai operátorok: &, |, ! o min, max, mean, sd, var, median, quantile, tabulate o abs, sign, sqrt, floor, ceiling, trunc, round, signif o exp, log, expm1, log1p, cos, sin, tan, acos, asin, atan, cosh, sinh, tanh, acosh,asinh, atanh 12. Quanopt Ltd.
  13. 13. MonetDB.R csomag – hátrányok  Az ötlet (R  SQL átírás) jó, de o Az implementációban vannak azért hibák (pl. „limit” nevű változót ne használjunk ) o Az műveletek elemkészlete korlátozott  Teljesen transzparens nem lesz  13. Quanopt Ltd.
  14. 14. MonetDB.R csomag – hátrányok  Tetszőleges meglévő függvényt nem fogunk tudni használni  > ggplot(data=mframe, aes(x=col1)) + geom_histogram() Error: ggplot2 doesn't know how to deal with data of class monet.frame  Természetesen mi írhatunk olyan saját függvényt, ami támogatja… 14. Quanopt Ltd.
  15. 15. MonetDB.R – hasonló megoldások  Oracle R Enterprise o R függvények végrehajtása Oracle adatbázisokon  IBM Netezza R csomagok o nzR, nzA, nzMatrix  Teradata o teradataR csomag 15. Quanopt Ltd.

×