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
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.
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. 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. 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. 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. 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.
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.
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. 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. 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. 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.