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.

Oracle R Enterprise の使い方

1,763 views

Published on

Oracle R Enterprise の使い方

Published in: Engineering
  • Be the first to comment

Oracle R Enterprise の使い方

  1. 1. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Oracle Advanced Analytics Oracle R Enterpriseの使い方 ~ データベースで大量データ分析をするために ~ 日本オラクル株式会社
  2. 2. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 2 Safe Harbor Statement 以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また、 情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。 以下の事項は、マテリアルやコード、機能を提供することをコミットメント(確約)するもの ではないため、購買決定を行う際の判断材料になさらないで下さい。 オラクル製品に関して記載されている機能の開発、リリースおよび時期については、弊 社の裁量により決定されます。 Oracleは、米国オラクル・コーポレーション及びその子会社、関連会社の米国及びその他の国における登録商標または商標です。 他社名又は製品名は、それぞれ各社の商標である場合があります。
  3. 3. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Agenda Oracle R Enterprise概要 Oracle R Enterpriseのアーキテクチャ Oracle R Enterpriseの実行方式 Oracle R Enterpriseの使い方 まとめ 3 素材のプチッチ http://putiya.com/ イラストわんパグ http://www.wanpug.com/
  4. 4. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Big Data Management System 4 SOURCES DATA RESERVOIR DATA WAREHOUSE Oracle Database Oracle Industry Models Oracle Advanced Analytics Oracle Spatial & Graph Big Data Appliance Apache Flume Oracle GoldenGate Oracle Event Processing Cloudera Hadoop Oracle Big Data SQL Oracle NoSQL Oracle R Distribution Oracle Big Data Spatial and Graph Oracle Database In-Memory, Multi-tenant Oracle Industry Models Oracle Advanced Analytics Oracle Spatial and Graph Exadata Oracle GoldenGate Oracle Event Processing Oracle Data Integrator Oracle Big Data Connectors Oracle Data Integrator B
  5. 5. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Oracle Database Enterprise Edition Advanced Analytics Oracle Data Mining • データベース内部でマイニング処理 • 12個のマイニング・アルゴリズム • 予測分析のためのアプリケーションの開発 • Oracle Data Miner (SQL Developer) を 用いたGUIによる解析ワークフローの構築 • PL/SQL API と Java API の提供 • Exadataのパワーを利用したモデルの生成 Oracle Advanced Analytics オプション 高度な分析プラットフォームをデータベースに内包 Oracle R Enterprise • オープンソースの統計言語 • 一部の処理をデータベースにオフロード することで大規模なデータを分析可能 • 広範で高度な統計解析のための関数を提供 • Rの機能をアプリケーションやOBIEEに統合 • 対話的なデータ分析と優れたグラフ描画機能 • オープンソースRパッケージ (CRAN) の利用 5
  6. 6. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Oracle Advanced Analytics 製品概要 6 ODM/ORE 共通のメリット • In-Database Analyticsの実現 – データ移動コスト(時間)をカット – パワフルなデータベースサーバ内で処理 • 堅牢なDBセキュリティによるデータ保護 用途 – 大量データ,全量データに対する分析 – 生データでのリアルタイムな分析 他オプションや製品との連 携で更に高度な分析が可能 ・Big Data Appliance ・Big Data SQL ・Big Data Connecters ・Spatial and Graph etc.. ビッグデータ時代の エンタープライズな 分析基盤を提供
  7. 7. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Oracle Advanced Analytics - Oracle R Enterprise Oracle R Enterprise 製品概要 7 特長 • Rでの分析処理をデータベースへオフロード – データ移動コスト(時間)をカット – パワフルなデータベースサーバ内で処理 • エンタープライズなRユーザのための機能 – R関数の並列実行のためのインターフェイスを用意 – Rオブジェクト、モデルをDBに保存、Rからデータベースの操作も可能 – Oracle Data Mining機能をRから呼び出して利用が可能 – 大規模分析のため並列処理実装されたR関数(オリジナルパッケージ) デスクトップ利用のRの限 界を超え、大規模なデータ セットでの利用を可能に
  8. 8. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 補足: Oracle R Distribution Oracle R Distribution 8 • Oracle は Rのディストリビューターです – Oracle は Rのディストリビューションを提供しています • Oracle R Distribution(ORD)はRに対して性能面の改善や拡張 を行ったものになります • ORDは無償でご利用頂けます ※ディストリビューションとはOSSのソフトウェアなどをパッケージングし利用しやすい形態で提供/配 布しているものになります。Linuxの場合、Red Hat Linux, Debian, Ubuntu, SUSEなどがあります。 Oracle R Distribution http://www.oracle.com/technetwork/database/database-technologies/r/r-distribution/downloads/index.html
  9. 9. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Agenda Oracle R Enterprise概要 Oracle R Enterpriseのアーキテクチャ Oracle R Enterpriseの実行方式 Oracle R Enterpriseの使い方 まとめ 9 イラストわんパグ http://www.wanpug.com/
  10. 10. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Oracle R Enterprise アーキテクチャ R言語の処理を透過的にOracle Database内で実行します。 R言語の処理をOracle Database内の処理に変換することで、大規模な分析を実現します。 またDB内処理に変換できない部分もDBサーバ上でRプロセスを実行します。 R EngineR EngineR Engine Rの処理をDB内の処理に変換・オフロードします Oracle R Enterprise packages R Engine Oracle R Enterprise packages SQL R 結果 結果 DBサーバ内で外部プロセスとしてRを実行することも可能です Other R packages Rクライアント • RスクリプトをOracle Databaseで実行す るようにスクリプトを発行します。 • グラフの描画や処理フローの制御は、通常 のRの機能を利用し、クライアント側で実 行します。 Oracle Database内部での実行 • Rの関数をSQLに変換して実行します。 • Oracle Databaseの並列実行の仕組みを活用 し、大量のデータに対応します。 • Oracle Databaseの持つ統計関数、データマ イニング機能を内部的に活用します。 Oracle DatabaseサーバでのR実行 • データベースが複数のRのプロセスをデー タベースサーバ上に外部プロセスとして 起動しますので、追加機器が不要です。 • SQLやPL/SQLからRのスクリプトを呼び 出し可能です。 分析者 DB Oracle DB サーバ 外部 プロセス Other R packages 10
  11. 11. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Oracle R Enterprise アーキテクチャ 全体感:コンポーネント 11 Server SideClient Side OS Oracle R Distribution Open R (/w shared lib,lapack..)※ Oracle R Enterprise Client Oracle DB Client OS Oracle R Enterprise supporting Packages Oracle R Distribution Open R (/w shared lib,lapack..)※ Oracle R Enterprise Server Oracle R Enterprise supporting Packages Oracle DB /w AA
  12. 12. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Oracle R Enterprise アーキテクチャ 全体感:コンポーネント:OS 12 Server SideClient Side OS Oracle R Distribution Open R (/w shared lib,lapack..)※ Oracle R Enterprise Client Oracle DB Client OS Oracle R Enterprise supporting Packages Oracle R Distribution Open R (/w shared lib,lapack..)※ Oracle R Enterprise Server Oracle R Enterprise supporting Packages Oracle DB /w AA OSについてはマニュアルのシステム要件に記載がございます。ORE 1.5の 場合、どのOSに関しても 64 bit版であることが必須となります。詳しくは 下記をご覧ください。Oracle Enterprise Linuxの場合にはyumのレポジト リがあり、セットアップが少し効率的です。 https://docs.oracle.com/cd/E67822_01/OREAD/intro.htm#OREAD120
  13. 13. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Oracle R Enterprise アーキテクチャ 全体感:コンポーネント:Rの動作環境 13 Server SideClient Side OS Oracle R Distribution Open R (/w shared lib,lapack..)※ Oracle R Enterprise Client Oracle DB Client OS Oracle R Enterprise supporting Packages Oracle R Distribution Open R (/w shared lib,lapack..)※ Oracle R Enterprise Server Oracle R Enterprise supporting Packages Oracle DB /w AA Rの動作環境及び基本機能を提供する部分です。 Oracle R Distributionをご利用頂くとスムースですが、Open R を利用す ることも可能です。Open R を利用する際には ソースからのbuildが必要と なるケースがあります。 ※マニュアルに記載がありますが、linpackの利用やshlibの利用などを有効にして buildする必要があります
  14. 14. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Oracle R Enterprise アーキテクチャ 全体感:コンポーネント:Oracle R Enterprise Client 14 Server SideClient Side OS Oracle R Distribution Open R (/w shared lib,lapack..)※ Oracle R Enterprise Client Oracle DB Client OS Oracle R Enterprise supporting Packages Oracle R Distribution Open R (/w shared lib,lapack..)※ Oracle R Enterprise Server Oracle R Enterprise supporting Packages Oracle DB /w AA Oracle R Enterprise Clientには OREの基本パッケージやR関数の SQL変換wraperとなるパッケージ、一部RパッケージのOracle実装版、 ORE独自機能、Oracle Data Mining機能の呼び出しなどのRパッケー ジが含まれます。 含まれるパッケージ(一部抜粋) - ORE (トップレベルパッケージ) - OREbase (Rのbase相当) - OREcommon(OREの共通低レベル機能/DB接続や操作など) - OREdm(Oracle Data Mining用のアルゴリズム利用) - OREeda(探索型データ解析用パッケージ) - OREgraphics(Rのgraphics相当) など
  15. 15. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Oracle R Enterprise アーキテクチャ 全体感:コンポーネント:Oracle R Enterprise Supporting Packages 15 Server SideClient Side OS Oracle R Distribution Open R (/w shared lib,lapack..)※ Oracle R Enterprise Client Oracle DB Client OS Oracle R Enterprise supporting Packages Oracle R Distribution Open R (/w shared lib,lapack..)※ Oracle R Enterprise Server Oracle R Enterprise supporting Packages Oracle DB /w AAOracle R Enterprise Supporting Packageには、Oracle Database 通信用のインターフェ イス定義やOCIインターフェイス、R関数のOracle実装などのパッケージが含まれます。これ はServer, Clientともに共通になります。 含まれるパッケージ(一部抜粋) - DBI(データベース通信インターフェイス),ROracle(OCIインターフェイス),Cairo(グラ フィックスのレンダリング),png(png画像の読み込み、書き込み用)など
  16. 16. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Oracle R Enterprise アーキテクチャ 全体感:コンポーネント:Oracle Database Client 16 Server SideClient Side OS Oracle R Distribution Open R (/w shared lib,lapack..)※ Oracle R Enterprise Client Oracle DB Client OS Oracle R Enterprise supporting Packages Oracle R Distribution Open R (/w shared lib,lapack..)※ Oracle R Enterprise Server Oracle R Enterprise supporting Packages Oracle DB /w AA Oracle Database Client はOracle Database のクライアントライブラリを含み、Rからのデー タベース接続(OCI)用のNativeライブラリを提供 します。(実際にはDynamic Linkerでリンクされ 利用されます)
  17. 17. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Oracle R Enterprise アーキテクチャ 全体感:コンポーネント:Oracle Database Client 17 Server SideClient Side OS Oracle R Distribution Open R (/w shared lib,lapack..)※ Oracle R Enterprise Client Oracle DB Client OS Oracle R Enterprise supporting Packages Oracle R Distribution Open R (/w shared lib,lapack..)※ Oracle R Enterprise Server Oracle R Enterprise supporting Packages Oracle DB /w ORE Server Oracle R Enterprise Server は Oracle R Enterprise用のRパッケージとOracleデータ ベース内のスキーマ(RQSYS)やプロシージャ、 操作権限などのメタデータ群で構成されます。 これらを用いてRオブジェクトをデータベースに格納 したり、埋め込みRによる実行などを実現しています。 Rパッケージとしては、ORE Clientに OREserverパッケージが加わっています。
  18. 18. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | ご参考:ORE 1.5 matrix Oracle R Enterprise Server Support Matrix Oracle R Enterprise Open source R or Oracle R Distribution Oracle Database (see Note) 1.5 3.2.x 11.2.0.4, 12.1.0.1, 12.1.0.2 1.4.1 3.0.1, 3.1.1 11.2.0.3, 11.2.0.4, 12.1.0.1 1.4 3.0.1, 3.1.1 11.2.0.3, 11.2.0.4, 12.1.0.1 1.3.1 2.15.1, 2.15.2, 2.15.3 11.2.0.3, 11.2.0.4, 12.1.0.1 1.3 2.15.1 11.2.0.3, 11.2.0.4, 12.1.0.1 1.2 2.15.1 11.2.0.3, 11.2.0.4, 12.1.0.1 1.1 2.13.2 11.2.0.3, 11.2.0.4, 12.1.0.1 1.0 2.13.2 11.2.0.3, 11.2.0.4, 12.1.0.1 18 R Enterprise Installation and Administration Guide - Oracle R Enterprise System Requirements https://docs.oracle.com/cd/E67822_01/OREAD/intro.htm#OREAD335
  19. 19. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Agenda Oracle R Enterprise概要 Oracle R Enterpriseのアーキテクチャ Oracle R Enterpriseの実行方式 Oracle R Enterpriseの使い方 まとめ 19 : 素材のプチッチ http://putiya.com/ イラストわんパグ http://www.wanpug.com/
  20. 20. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Oracle R Enterpriseの実行方式 概要 うまく組み合わせ活用することで分析処理を高速にできます 主たる機能は以下になります –大量データ処理の分割による並列化 –DB内でのデータアクセス、演算 スクリプト実装時に以下を意識していると少しスムースです • どこにデータがあるのか • どこで実行するのか • データは分割利用可能か • 処理順の依存性や冪等性 20
  21. 21. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Oracle R Enterpriseの実行方式 全体感 • OREでの主要な実行方式は3種類あります • OREでの関数の実装形態によって選択肢の有無が変わります • 実行方式 – 透過型実行 – 埋め込み型(Embeded)実行 – クライアント実行(ore.pullの利用) • 実装形態 – 透過型の実装( cor, mean,IQR,table,head...) – オリジナル実装 (ore.neural, ore.m,ore.glmなどのore.xx) – ORE実装無し 21 ※DB内のデータにアクセスする前提で記述していま す。DBのデータをクライアントにコピー(代入)して 実行する場合には、通常のRと同じです
  22. 22. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Oracle R Enterpriseの実行方式 実行方式概略 • 透過型実行 – データベースのデータをRプログラムから透過的に利用する実行方式です • data.frameの指定にOracleの表やDB上のオブジェクトを指定できます • 埋め込み型(Embeded)実行 – データベース側にスクリプトを送り込んでデータベースで実行する方式です • データベースサーバ内で外部プロシージャ形式でRが起動します • クライアント実行(ore.pullの利用) – データベースのデータをクライアントに持ってきて実行する方式です • OREのメリットはあまりないですが、使用感に差がでにくいです 22
  23. 23. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Oracle R Enterpriseの実行方式 実装形態概略 • 透過型の実装( cor, mean,IQR,table,head...) – Rの関数と同名の関数で透過的にデータベースのデータを利用し、処理をデータベースへオフ ロードできます – 関数名の書き換えはほぼ発生しません (一部オプションの非対応などがあります) • オリジナル実装 (ore.neural, ore.lm,ore.glmなど) – Oracleが独自に実装した機能群になります – データベースのデータを利用し、処理をデータベースへオフロードすることができますが、R 関数と書式などに違いがある場合があります • ORE実装無し – Oracleが実装を提供していない関数になります 23
  24. 24. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | ご参考:サポートされるR演算子およびR関数(ORE 1.4.1) • 数学的変換: abs、sign、sqrt、ceiling、floor、trunc、cummax、cummin、 cumprod、cumsum、log、 loglo、log10、log2、log1p、acos、acosh、asin、 asinh、atan、atanh、exp、expm1、cos、 cosh、sin、sinh、tan、atan2、tanh、 gamma、lgamma、digamma、trigamma、factorial、 lfactorial、round、signif、 pmin、pmax、zapsmall、rank、diff、besselI、besselJ、 besselK、besselY • 基本統計: mean、summary、min、max、sum、any、all、median、range、IQR、 fivenum、mad、quantile、 sd、var、table、tabulate、rowSums、colSums、 rowMeans、colMeans、cor、cov • 算術演算子: +、-、*、/、^、%%、%/% • 比較演算子: ==、>、<、!=、<=、>= • 論理演算子: &、|、xor • 集合演算子: unique、%in%、subset • 文字列演算: tolower、toupper、casefold、toString、chartr、sub、gsub、substr、 substring、paste、nchar、grepl • データ・フレームの結合: cbind、rbind、merge • ベクトルの結合: append • ベクトルの作成: ifelse • サブセットの選択: [、[[、$、head、tail、window、subset、Filter、na.omit、 na.exclude、complete.cases • サブセットの置換: [<-、[[<-、$<- • データの再編成: split、unlist • データ処理: eval、with、within、transform • applyのバリアント: tapply、aggregate、by • 特別な値のチェック: is.na、is.finite、is.infinite、is.nan • メタデータ関数: nrow、NROW、ncol、NCOL、nlevels、names、names<-、row、 col、dimnames、 dimnames<-、dim、length、row.names、row.names<-、 rownames、 rownames<-、colnames、levels、reorder • グラフィック: arrows、boxplot、cdplot、co.intervals、coplot、hist、identify、 lines、matlines、 matplot、matpoints、pairs、plot、points、polygon、polypath、 rug、segments、 smoothScatter、sunflowerplot、symbols、text、xspline、 xy.coords • 変換関数: as.logical、as.integer、as.numeric、as.character、as.vector、 as.factor、as.data.frame • 型チェック関数: is.logical、is.integer、is.numeric、is.character、is.vector、 is.factor、is.data.frame • 文字の操作: nchar、tolower、toupper、casefold、chartr、sub、gsub、substr • その他のore.frame関数: data.frame、max.col、scale • 仮説検定: binom.test、chisq.test、ks.test、prop.test、t.test、var.test、 wilcox.test • 各種分布: 密度、累積分布、および標準分布のクォンタイル関数 • ore.matrix関数: show、is.matrix、as.matrix、%*% (マトリクスの乗算)、t、 crossprod (マトリクスのクロス積)、tcrossprod (BをA回転置したマトリクスのクロ ス積)、solve (反転)、backsolve、forwardsolve、すべての適切な算術関数(abs、 signなど)、summary (max、min、allなど)、mean 24 これらに加えてオリジナル実装系の関数があります ex: ore.lm, ore.glm,ore.neural,ore.predictなど...
  25. 25. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Oracle R Enterpriseの実行形式 実装形態と実行形式 • データベース内のデータに対する実行方式と実装形態の対応 – 書き方などで対応させることができるものもありますが、概ね以下の通りです。 25 関数の種類(実装形態) 実行方式 透過型実行 埋め込み型実行 クライアント実行 透過型の実装 ◎ ◎ ×△ オリジナル実装 ◎ ◎ 〇 ORE実装なし × 〇 △ 凡例:◎ =OREのメリット(DB内データ処理、並列処理)を生かせる 〇 =OREのメリットを部分的に生かせる △ = OREのメリットがあまり生かせないが実行はできる × = 実行ができない
  26. 26. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 補足:ore.frame 大量データをDB内で処理させるための仕組み • 実行方式が分類される理由はデータのクラスの違いにあります – データベース内のデータをクライアントに持ってくることなく処理させるための実装です • ore.frameというdata.frameの subclassを定義しています – ore.frameを利用できる関数に関してはマニュアルの以下に記載があります 26 ORE 1.4.1 ユーザーズガイド A Oracle R EnterpriseでサポートされるR演算子およびR関数 http://docs.oracle.com/cd/E59151_01/doc.141/e57720/appaopf.htm#CIHFJAAF ORE 1.5 User's Guide R Operators and Functions Supported by Oracle R Enterprise https://docs.oracle.com/cd/E67822_01/OREUG/GUID-C3F098F0-EE9F-45CB-B9F5-C8D4AF963D90.htm#OREUG566 Client R 環境 ore.frame DB表 SQL > class(TITANIC01) [1] "ore.frame" attr(,"package") [1] "OREbase" > colnames(TITANIC01) [1] "Class" "Sex" "Age" "Survived" "Freq" > mean(TITANIC01$Freq) [1] 68.78125 ORE実装の関数は適宜データアクセス部などをSQLに変換し結 果だけを貰うプロキシのような役割を果たします
  27. 27. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | • 関数のデータ指定部に表などのDBオブジェクトを指定できます • 表以外にもDBやDBセッションに保存されたRオブジェクトなども対象にできます – ユーザからの見え方では ore.frameが data部にそのまま使える形になります • DB内でデータを取り扱い、処理もDBにオフロードされます Client Oracle R Enterpriseの実行形式 透過型実行 27 R Client ( RStudioなど) Server Oracle DB SQL 結果セット 長所: ・データ移動コスト無(結果セット除く) ・データアクセスの並列化 ・分析並列化の実装(一部関数) ・DBサーバリソースの活用 弱点: ・対応関数のみ ・書き換えが必要なケースあり ・データが小さいとメリットが見えない
  28. 28. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | • スクリプトや関数をDBに送り込み、DBサーバ上でRを実行します – 外部プロシージャコールでDB上のRが動作するイメージです • 透過型実行可能な関数をこの形式で動かすこともできます – DBサーバにRパッケージを追加することで色々なパッケージに対応できます。 – また保存済みスクリプトをSQL/トリガーなどから実行することもできます Client Oracle R Enterpriseの実行形式 埋め込み型実行 28 R Client ( RStudioなど) Server Oracle DB Rプロセス 結果セット 外部プロシージャSQL Client スクリプト exec 長所: ・データ移動コスト小 ・データアクセスの並列化 ・分析並列化の実装(一部関数) ・DBサーバリソースの活用 弱点: ・DBサーバリソース活用以外にメ リットが無いケースがある
  29. 29. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | • データを分割し複数のRプロセスを起動し並列処理させることがで きます – オラクル提供外のパッケージの処理も高速化できる可能性があります • 特に行単位の処理(例:モデルを利用したデータの分類など)では特に威力を発揮します Client Oracle R Enterpriseの実行形式 埋め込み型実行(応用): Apply Interface 29 R Client ( RStudioなど) Server Oracle DB 結果セット SQL Client スクリプト exec Rプロセス外部プロシージャ 外部プロシージャ 外部プロシージャ 長所: ・分析結果の適用を高速化 ・DBサーバリソースをフル活用 弱点: ・データ分割が不可なものでは利用 できない Rプロセス Rプロセス
  30. 30. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | • データをDBからクライアントに持ってきて、処理を実行します – ore.pull関数でDB上のデータを取得しRのdata.frameに強制Castします – DBへの処理オフロードもされず、データの移動も発生しクライアントにも負 荷がかかりますが、通常のRの使い方(doGetQuery)に似ています Client Oracle R Enterpriseの実行形式 クライアント型実行 30 R Client ( RStudioなど) Server Oracle DB処理 データ ※埋め込み型実行の場合にもore.pullの利用 が必要な場合があります 長所: ・既存スクリプトがそのまま使える ・わかりやすい 弱点: ・OREのメリットは皆無
  31. 31. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Oracle R Enterpriseの実行方式 実行方式選択の指針 OREのメリットを享受するために以下の優先度で考えます • 大規模データ処理を優先的にDB側の実行に置き換えます • Oracleが実装を提供している関数の利用をご検討ください – 透過型の実装のある関数 (cor, meanなど) – Oracle実装パッケージ ore.xx (ore.neuralなど) – いずれもない場合 • 埋め込み型での実行 ( 非サポート関数のデータベースでの実行 ) • ore.pull()を利用した実行 クライアント側メモリで利用可能な範囲のデータに対して分析をする際にはORE利用によるメ リットは度外視し、クライアント型実行を選択して頂く方がよいケースもあります 31
  32. 32. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Oracle R Enterpriseの実行方式 まとめ • OREの実装形態によって可能な実行方式に差があります – 全てがOracle提供のものでできない場合にもなるべくOracle実装のものを利 用する(特に大規模なデータ処理部分など)ことでより高速に処理すること が可能となります – スクリプトをそのまま利用したい場合には埋め込み型実行もご検討ください 32 関数の種類(実装形態) 実行方式 透過型実行 埋め込み型実行 クライアント実行 透過型の実装 ◎ ◎ ×△ オリジナル実装 ◎ ◎ 〇 ORE実装なし × 〇 △
  33. 33. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Agenda Oracle R Enterprise概要 Oracle R Enterpriseのアーキテクチャ Oracle R Enterpriseの実行方式 Oracle R Enterpriseの使い方 まとめ 33 : 素材のプチッチ http://putiya.com/ イラストわんパグ http://www.wanpug.com/
  34. 34. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Oracle R Enterprise の使い方 全体感 • 基本操作 – OREの機能を使う基本的な操作方法をご紹介します • 透過型実行 • 埋め込み型実行 • クライアント型実行 34
  35. 35. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Oracle R Enterprise の使い方 基本操作:接続と確認 • Oracleデータベースへの接続 – OREライブラリのロード – データベースへの接続 (ore.connect) • ore.frame(DB上のデータへのプロキシ)の確認 – 上記で all=TRUEとした場合、スキーマの表名などがそのまま見えます 35 library(ORE) ore.connect( user="scott",sid="orcl",host="dbserv",password="tiger",port=1521,all=TRUE) ore.ls() ※all=TRUEとすると接続時に当該スキーマのオブ ジェクト(表,Viewなど)がore.frameクラスで生成さ れます
  36. 36. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Oracle R Enterprise の使い方 基本操作:SQLクエリの実行など • ore.execを利用してOracleにSQLを投げられます。 – クエリの結果セットを持ってこない(※)ので一旦表に入れるなどの工夫が必要です • selectの結果をhoge01に入れたい時 – こんな感じの使い方でデータの切り出し操作や変換もDB内で完結できます • select句にSQLの変換関数を利用することで様々な変換が可能です • ore.syncを利用してore.frameの作成や再定義ができます – 引数なしで実行した場合には全てのオブジェクトがrefreshされます – 実体の表のデータの変更への追従にはsyncの必要はありませんが、表構造の変更にはore.syncによる明 示的な同期が必要になります(列追加など) 36 × hoge01 <- ore.exec(" select sysdate ts from dual ") 〇 ore.exec("create table hoge01 as select sysdate ts from dual ") ※不用意にDBのデータをローカルに持ってこないためです
  37. 37. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | • ore.pushでローカルにあるRオブジェクトをDB側に置きます – このオブジェクトはセッション内のみ有効です – data.frameオブジェクトをDBに置き、ore.frameにCASTしています – これを利用することでore.frameを引数とする関数が使えます • ore.pullでDB上のオブジェクトをローカルに持ってこれます – クライアントのメモリが十分にない場合、失敗します – これを利用することでore.frameに対応してない関数を動作させることができます Oracle R Enterprise の使い方 基本操作:データの移動 37 test01db <- ore.push(test01) > class(test01) [1] "data.frame" > test01db <- ore.push(test01) > class(test01db) [1] "ore.frame" attr(,"package") [1] "OREbase" yabou_local <- ore.pull(YABOU03) test01というローカルデータをtest01dbとしてDBに保持します YABOU03表の中身をyabou_localに持ってきます
  38. 38. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Oracle R Enterprise の使い方 基本操作:表/Viewの作成と削除 • ore.createでローカルのデータをDBに表/Viewで作成できます • ore.dropで表/Viewの削除ができます 38 ore.create(yabou01,table="YABOU02") ローカルのデータ(data.frame)のyabou01をYABOU02表として DB上に作成します ore.create(YABOU02,view="YABOU03") DB上の表(ore.frame)YABOU02をYABOU03 View としてDB上 に作成します ore.drop(table="YABOU02") DB上の表(ore.frame)YABOU02表を削除します ore.drop(view="YABOU03") DB上のView(ore.frame)YABOU03 Viewを削除します
  39. 39. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Oracle R Enterprise の使い方 基本操作:データストアの操作:全貌 • DB上にデータストアを作成しオブジェクトを格納できます – 保存したデータを読み込んだり操作することができます – 1つのデータストアに複数のデータを入れることができます • 通常のRワークスペースで保存できないore.frameオブジェクトも保存することができます • データストアの操作用関数 39 関数 説明 ore.save Rオブジェクトを新規または既存のデータストアに保存します。 ore.load データストアからオブジェクトをR環境にリストアします。 ore.lazyLoad データストアからオブジェクトをR環境に遅延リストアします。 ore.delete 現行のOracle Databaseスキーマからデータストアを削除します。 ore.datastore 現行のOracle Databaseスキーマのデータストアに関する情報をリストします。 ore.datastoreSummary 現行のOracle Databaseスキーマの指定したデータストアに関する詳細な情報を提供します。
  40. 40. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Oracle R Enterprise の使い方 基本操作:データストアの操作 • ore.saveでデータストアの作成と同時にデータの保存ができます – ore.datastoreでデータストアを確認できます – ore.datastoreSummaryでデータストアの中身が確認できます 40 ore.save(yabou01,YABOU03,name="yabou_20160126",description="2016/01/26 using") yabou01(クライアント上のRオブジェクト(data.frame) と YABOU03(DB上の表 (ore.frame) をyabou_20160126というデータストア名で保存しています。 ore.datastore() datastore.name object.count size creation.date description 1 mydata01 2 1512 2016-01-08 13:06:50 test data for save 2 solmatch 1 812081 2016-01-13 17:34:18 Confidential data 3 yabou_20160126 1 153720 2016-01-27 21:22:27 2016/01/26 using ore.datastoreSummary("yabou_20160126") object.name class size length row.count col.count 1 yabou01 data.frame 153720 22 1192 22 2 YABOU03 ore.frame 2130 24 NA 24
  41. 41. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Oracle R Enterprise の使い方 基本操作:データストアの操作 • ore.loadでデータストアの読み込みができます –ore.deleteでデータストアを削除できます 41 ore.load(name="yabou_20160126") yabou_20160126というデータストアを読み込みます。 ore.delete(name="yabou_20160126") yabou_20160126というデータストアを削除します
  42. 42. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Oracle R Enterprise の使い方 全体感 • 基本操作 – OREの機能を使う基本的な操作方法をご紹介します • 透過型実行 • 埋め込み型実行 • クライアント型実行 42
  43. 43. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | • 大抵、利用時にdata.frameの代わりにore.frameを指定するだけな ので、特別何かすることはあまりありません。 – Oracleで実装済みの関数で構成されているかが問題になるケースがあります • CRANから入れるパッケージはほぼこのモードで動作しません • パッケージによりエラーは異なりますが、「型が違うよ」的なものが多いです この場合、要件に応じた対応が必要となります Oracle R Enterprise の使い方 透過型実行 43 > glm(TOTAL~.,data=YABOU_PARAM) Error in terms.formula(formula, data = data) : 'data' argument is of the wrong type
  44. 44. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 以下のいずれかの対応が必要になります • Oracle提供のパッケージへの書き換え(工数:小~大) – lm の場合 ore.lm – glm の場合 ore.glm / ore.odmGLM など、、 • 他の実行形式の利用 –埋め込み型実行の利用(工数:小) • 後述の方式で実行します –クライアント型実行の利用 (工数:小~中) • 後述しますが、ore.pullを利用してローカル変数化するか、入れ込むかになります Oracle R Enterprise の使い方 透過型実行:非対応関数への対処 44
  45. 45. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Oracle R Enterprise の使い方 全体感 • 基本操作 – OREの機能を使う基本的な操作方法をご紹介します • 透過型実行 • 埋め込み型実行 • クライアント型実行 45
  46. 46. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | • DBサーバ上にインストールされたRが実行されます – そのためDBサーバへのRパッケージの追加が必要となるケースがあります • Oracle実装関数も利用可能です – Rスクリプトをレポジトリに保存することでOracle Clientやトリガーなどの SQLインターフェイスからRのスクリプトの実行が可能になります • データを分割(パーティショニング)して複数のRプロセスで並列同 時実行するインターフェイスをご用意しています • OREが提供するインターフェイスは基本的なものになります – うまく組み合わせることで高速化や大量データ分析に威力を発揮します Oracle R Enterprise の使い方 埋め込み型実行 46
  47. 47. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | • 埋め込み型実行の際に起動される外部プロシージャの設定情報は以 下のsys.rq_config 表から確認できます • 埋め込み型実行の際に利用されるメモリー量などの制御ができます – sys.rqconfigsetを使います 補足:埋め込み型実行 埋め込み型実行の設定 47 SQL> SELECT * FROM sys.rq_config; キーワード デフォルト値 説明 MIN_VSIZE 32M 最小のRベクター・ヒープ・メモリー MAX_VSIZE 4G 最大のRベクター・ヒープ・メモリー MIN_NSIZE 1M Rコンス・セルの最小値 MAX_NSIZE 20M Rコンス・セルの最大値 SQL> EXEC sys.rqconfigset('MIN_VSIZE', '20M');
  48. 48. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | • 埋め込み型実行には以下の関数を利用します Oracle R Enterprise の使い方 埋め込み型実行:関連する関数 48 RのAPI SQLのAPI 説明 ore.scriptCreate sys.rqScriptCreate 指定されたR関数をRスクリプト・リポジトリに指定された名前でロードします。 ore.scriptDrop sys.rqScriptDrop 指定されたR関数をRスクリプト・リポジトリから削除します。 ore.doEval rqEval データを自動転送せずにfを実行します。 ore.indexApply 該当するものはありません。 データの自動転送なしでfを実行しますが、1からnまで(nは関数を呼び出す回数)の 呼出しの索引を提供します。データベース・サーバーで稼働するRエンジンのプー ルでの各f呼出しのパラレル実行をサポートします。 ore.tableApply rqTableEval fの最初の引数として指定された入力ore.frameのすべての行を渡すことでfを実行し ます。fの最初の引数をdata.frameとして指定します。 ore.rowApply rqRowEval 指定された入力ore.frameの指定された行数(チャンク)を渡すことでfを実行します。 各チャンクをfの最初の引数にdata.frameとして指定します。データベースのサー バー側Rエンジンで各f呼出しのパラレル実行をサポートします。 ore.groupApply rqGroupEval この関数は、ユーザーが明示的に 定義する必要があります。 グループ化列の値に応じてデータをパーティショニングすることでfを実行します。 各データ・パーティションをfの最初の引数にdata.frameとして指定します。デー タベースのサーバー側Rエンジンで各f呼出しのパラレル実行をサポートします。 管理 実行
  49. 49. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | • ore.scriptCreateで関数を作成できます – いきなり差し込み型でもいいですし、当て込んでから入れてもいいです • ore.scriptDropで関数を削除できます Oracle R Enterprise の使い方 埋め込み型実行:関連する関数 49 ore.scriptCreate( "testScript_01", function(){ library(psych) x <- 1:20 describe(x) } ) ore.scriptDrop("testScript_01") func01 <- function(){ library(psych) x <- 1:20 describe(x)} ore.scriptCreate( "testScript_01", func01 ) =
  50. 50. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | • スクリプトの管理(保存/削除)が必要な場合、権限付与が必要です • その権利をまとめた RQADMINロールが用意されています (OREのサーバインストール時にロールは作成されています) – スクリプトを管理するユーザにgrantするだけです 補足:埋め込み型実行 RQADMIN 50 SQL> grant RQADMIM to [対象DBユーザ] ;
  51. 51. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | • 埋め込み型実行での利用関数は大きく2つに分けられます • 非自動転送タイプ – データベースから自動的にデータを受け取りません(必要な場合は手書きで対応) • 自動転送タイプ – データベースから自動的にデータを受け取ります – 引数にそのままDBのオブジェクト(ore.frameなど)の指定ができます • 更に並列化の有無や方式をごとに関数が用意されています Oracle R Enterprise の使い方 埋め込み型実行:関連する関数 51
  52. 52. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | • まとめると以下のようになります 対象データ件数の大きな操作でデータ分割が可能なものはなるべくrowApplyやgroupApplyを 利用することで劇的な効果が得られる可能性があります Oracle R Enterprise の使い方 埋め込み型実行:関連する関数 52 埋め込み実行関数 DBデータ 自動転送 並列実行 データ分割 データ分割方法 ore.doEval × × × N/A ore.indexApply × 〇 × N/A ore.tableApply 〇 × × N/A ore.rowApply 〇 〇 〇 指定行数 ore.groupApply 〇 〇 〇 指定列の値
  53. 53. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | • 単独単発実行(ore.doEval) – あちらの世界(DBサーバ)で version関数が実行されます – FUN.NAMEで保存した関数(testScript_01)を指定して実行します – 普通にRが起動するのでライブラリのロードも入れ込めます Oracle R Enterprise の使い方 埋め込み型実行:ore.doEval 53 ore.doEval(function(){ version }) res <- ore.doEval( function(){ library(psych) x <- c(1:10) describe(x)} ) ore.doEval(FUN.NAME="testScript_01") ※戻り値resは ore.frameになります ore.doEval(実行関数)
  54. 54. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | • 並列繰り返し実行(ore.indexApply) – 日付け取得を3回ほぼ同時並列に実行します • indexApplyは自動的に並列化され実行されます • doEvalと同様にFUN.NAMEで保存したスクリプトを指定できます 注意点 • ore.indexApplyの第一引数で関数の実行回数を指定します • indexApplyに利用する関数は最低1つの引数を必要とします • 暗黙的に第一引数に自動採番のindex番号が引き渡されます Oracle R Enterprise の使い方 埋め込み型実行:ore.indexApply 54 ore.indexApply(実行回数, 実行関数) > ore.indexApply( 3, function(index){ date()}) $`1` [1] "Thu Jan 28 19:52:26 2016" $`2` [1] "Thu Jan 28 19:52:26 2016" $`3` [1] "Thu Jan 28 19:52:26 2016" ore.indexApply( 3, function(index){ date()}) ore.indexApply( 3, FUN.NAME="testScript_02") 例
  55. 55. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | • 単独単発のDB読込実行(ore.tableApply) – YABOU_PARAM表に対してcor(x) を実行する関数を埋め込み型で実行します • doEvalと同様に保存したスクリプトはFUN.NAMEで指定できます 注意点 – tableApplyに利用する関数は最低1つの引数を必要とします – 関数の第一引数に指定したOREオブジェクト(上記例のYABOU_PARAM)が引き渡されます – ore.tableApplyではデータは分割されず、並列実行もされません Oracle R Enterprise の使い方 埋め込み型実行:ore.tableApply 55 ore.tableApply(YABOU_PARAM, function(x){cor(x)}) ore.tableApply(YABOU_PARAM, FUN.NAME="yabouScript01") ore.tableApply(対象OBJ, 実行関数)
  56. 56. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | • 指定行数分割によるDB読込並列実行(ore.rowApply) – 以下の例ではYABOU_PARAM表を300件づつ分割し個々の集計結果を戻します • 結果は分割ごとにリストに入ります(勝手にマージしてくれたりはしないです) • doEvalと同様に保存したスクリプトはFUN.NAMEで指定できます 注意点 – rowApplyに利用する関数は最低1つの引数を必要とします – 関数の第一引数に指定したOREオブジェクト(上記例のYABOU_PARAM)が引き渡されます – データは指定行数で分割され並列で実行され、リスト形式で返ります Oracle R Enterprise の使い方 埋め込み型実行:ore.rowApply 56 ore.rowApply(YABOU_PARAM, function(x){c(sum(x$TOTAL),nrow(x))},rows=300) ore.rowApply(YABOU_PARAM, FUN.NAME="yabouScript04",rows=300) ore.rowApply(対象OBJ, 実行関数,rows=行数)
  57. 57. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | • 列指定分割によるDB読込並列実行(ore.groupApply) – ore.rowApplyの発展版と思うと少し理解しやすいです • rowApplyでは指定した行数で分割しますが、こちらは指定した列の値によってデータを分割して並列実行します • doEvalと同様に保存したスクリプトはFUN.NAMEで指定できます 注意点 – groupApplyに利用する関数は最低1つの引数を必要とします – 関数の第一引数に指定したOREオブジェクト(上記例のTEST02)が引き渡されます – データは指定列の値で分割され並列で関数が実行され、リスト形式で返ります Oracle R Enterprise の使い方 埋め込み型実行:ore.groupApply 57 ore.groupApply(TEST02,INDEX=TEST02$GENDER, function(x){c(nrow(x),mean(x$"年齢"))}) ore.groupApply(対象OBJ,対象列, 実行関数) NO NAME 年齢 性別 10 織田信長 25 男性 22 真田幸隆 22 男性 30 淀君 19 女性 42 木下藤吉郎 24 男性 55 立花誾千代 22 女性
  58. 58. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | • 並列実行(rowApply,groupApply,indexApply)の結果はore.listクラスで戻されます – ore.listクラスはOracle DBにストアされたリストになります – 個々のリストの索引は以下のものになります • indexApply は指定した索引の数字(=試行回数ごと採番) • rowApply は指定した件数1つづつ採番した数値 • groupApplyは指定した列の値 – ore.listの操作は基本的にRのリストに倣います • ore.pullを利用して普通のRのlistにすることもできます 埋め込み型実行補足:ore.list ore.listについて 58 > test02.ga <- ore.groupApply(TEST02,INDEX=TEST02$性別,function(x){c(nrow(x),mean(x$"年齢"))}) > class(test02.ga) [1] "ore.list" attr(,"package") [1] "OREembed" > test02.ga $女性 [1] 14.00000 19.42857 $男性 [1] 6.00000 19.16667 > test02.ga[["女性"]] [1] 14.00000 19.42857 > test02.ga2 <- ore.pull(test02.ga) > class(test02.ga2) [1] "list"
  59. 59. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | • 埋め込み型実行での利用関数は大きく2つに分けられます Oracle R Enterprise の使い方 埋め込み型実行 59 埋め込み実行関数 DBデータ 自動転送 並列実行 データ分割 データ分割方法 ore.doEval × × × N/A ore.indexApply × 〇 × N/A ore.tableApply 〇 × × N/A ore.rowApply 〇 〇 〇 指定行数 ore.groupApply 〇 〇 〇 指定列の値
  60. 60. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Oracle R Enterprise の使い方 全体感 • 基本操作 – OREの機能を使う基本的な操作方法をご紹介します • 透過型実行 • 埋め込み型実行 • クライアント型実行 60
  61. 61. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | • クライアント型実行は簡単です – クライアントにデータを持ってきてクライアント上で普通のRのオブジェ クトする方法です – データベース内のデータは通常ストレージ上に格納されていてサイズの大きなものが多く、 クライアントのメモリに展開しきれないことがあります。その場合、サンプリングを行う か、埋め込み型などの他の実行形式をご検討ください •ore.pullするだけです – ore.pullは DB上のオブジェクトのデータをクライアントに持ってきて、標準Rのクラスに強制 キャストします – BRANDIMAGE01表のデータをore.pullして心理統計パッケージのdescribeで見てみます Oracle R Enterprise の使い方 クライアント型実行 61 x <- ore.pull(BRANDIMAGE01) describe( x ) describe(ore.pull(BRANDIMAGE01)) =
  62. 62. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Agenda Oracle R Enterprise概要 Oracle R Enterpriseのアーキテクチャ Oracle R Enterpriseの実行方式 Oracle R Enterpriseの使い方 まとめ 62 : 素材のプチッチ http://putiya.com/ イラストわんパグ http://www.wanpug.com/
  63. 63. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | • 基本的なアーキテクチャと使い方について記載しました • OREはRに大量データ処理を実現する為の機能を追加しています – OREはRにオラクルがパッケージを追加し、データベース上で様々な処理 を実行させるための機能を盛り込んだものになります • サーバ側に処理をオフロードする方法を複数用意しています。 • 是非、使いこなしていただければ幸いです まとめ 63
  64. 64. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 64

×