Oracle R Enterpriseの埋込みRの実行関数の一部では、データベースでのパラレル実行の使用がサポートされています。関数ore.groupApply
、ore.rowApply
、rq.groupEvalおよびrq.rowEval
はデータ・パラレル実行をサポートし、ore.indexApply
はタスク・パラレル実行をサポートします。このパラレル実行機能によって、Oracle Exadataデータベース・マシンなどの高パフォーマンスのコンピューティング・ハードウェアをスクリプトで利用できます。
関数ore.groupApply
、ore.rowApply
およびore.indexApply
のparallel
引数には、埋込みRの実行で使用する並列度を指定します。引数の値には、次のいずれかを指定できます。
特定の並列度では、2
以上の正の整数
パラレル化しない場合は、FALSE
または1
data
引数のデフォルトのパラレル化の場合はTRUE
操作に対するデータベースのデフォルトはNULL
この引数のデフォルト値は、グローバル・オプションore.parallel
の値、またはore.parallel
が設定されていない場合はFALSE
です。
ore.doEval
またはore.tableApply
を使用して呼び出したユーザー定義のR関数は、並行して実行されません。このような関数は1つのRエンジンで実行されます。
rq.groupEval関数およびrq.rowEval
関数の場合、並列度は入力カーソル引数のPARALLEL
ヒントによって指定します。
ore.groupApply
関数およびrq.groupEval関数のデータ・パラレル実行では、1つ以上のRエンジンが同じR関数(タスク)を別のデータ・パーティションで実行します。この機能によって、たとえば何万または何十万もの予測モデルを顧客に1モデルずつ構築するなどの、多数のモデルの構築が可能です。
ore.rowApply
関数およびrq.rowEval
関数のデータ・パラレル実行では、1つ以上のRエンジンが同じR関数をデータの非結合チャンクで実行します。この機能によって、大規模なデータセットでのスケーラブルなモデルのスコアリングおよび予測が可能です。
ore.indexApply
関数のタスク・パラレル実行では、1つ以上のRエンジンが同じまたは異なる計算(タスク)を実行します。実行の索引に関連付けられている数字が、関数に提供されます。この機能は、シミュレーションの実行などの各種の操作で重要です。
Oracle Databaseは、複合的である可能性のあるRエンジンの管理および制御をデータベース・サーバーで処理し、自動的にパーティショニングしてデータをRエンジンに渡して並行して実行します。すべてのパーティションですべてのR関数の実行が完了することが保証されますが、そうでない場合はOracle R Enterpriseの関数はエラーを返します。各ユーザー定義の埋込みR関数の実行結果は、ore.list
に収集されます。このリストは、ユーザーが結果を要求するまでデータベースに保持されます。
埋込みRの実行では、Comprehensive R Archive Network (CRAN)のオープン・ソースのRパッケージまたは他のサード・パーティのRパッケージの関数を使用する可能性のあるユーザー定義のR関数のデータ・パラレル実行も可能です。ただし、サード・パーティのパッケージは、インデータベース並列性を活用しないため、Rの並列性制約の対象となります。サード・パーティのパッケージは、埋込みRの実行でサポートされているデータ・パラレル実行およびタスク・パラレル実行を利用できます。