分析実行可能ファイル
Analytic Executables(AE)は、アナリティクスの開発と処理のための強力なツールです。 NetezzaのUDX機能では、ユーザーが提供するC++コードをSQL関数から呼び出すことができますが、AEはSQL関数から呼び出せる独立した実行可能プログラムです。
SQL関数やUDXのように、AEにも関数型と集約型という異なる関数型を扱うための種類があります。 つまり、スカラー SQL 関数とテーブル SQL 関数はそれぞれの関数 AE を呼び出すために使用され、集約 SQL 関数は集約 AE を呼び出すために使用されます。
AEは、C、C++、Java、Python、Fortran、Perl、Rなど、Cライブラリを呼び出す機能を持つあらゆる言語で記述できるという点でユニークである。 R のインストール情報については、IBM developerWorks NetezzaDeveloper Network (NDN) コミュニティを参照してください。 まず、developerWorks https://www.ibm.com/developerWorks に登録する必要があります。 NetezzaDeveloper Network コミュニティを検索するには、「NDN」を検索してください。 概要ページの指示に従って、コミュニティの非公開部分にアクセスしてください。 AEが記述されると、それをサポートするIBM Netezzaアプライアンスのノード上に関数としてパブリッシュし、登録することができる。 その後、意図した目的を遂行するために実行される。 AE は、ホスト上でもアプライアンスの並列ノード上でも動作する。 図はこのプロセスを強調している。図1: ホストとSブレード(SPU)のAE動作

AEはアナリティクスの開発において多くの新しい機能を提供する。 AEを使用する利点は以下の通りである:
- 特定の操作または目的のためにデータストリームを流用する方法を提供すること
- データストリームに対するアルゴリズム操作の自由度
- C、C++、Java、Fortran、Perl、Python、Rで柔軟に関数を記述できる
- データが存在する場所で、著しく計算集約的なアルゴリズムを可能にする
- NPSの一部ではないライブラリや言語の使用
AEはまた、アプリケーションの寿命をより大きく制御する。 UDXの寿命はNPSシステムによって制御され、常にクエリの寿命より短い。 AEの寿命はオプションでNetezzaシステムまたはAE自身が制御でき、無期限にすることもできる。
機能 AE
関数AEは通常、ファイルI/Oまたは「標準入出力」のデータフローパラダイムを使用する。 SQLのスカラー関数またはテーブル関数は、入力行1つにつきちょうど1つの出力行を返し、その戻り行がちょうど1つの列を含むもので、プログラミング言語によって異なりますが、以下のような一般的な構造を持っています:
getDataConnectionToNPS();
while (getNextInputRow)
{
getInputColumns();
setOutputColumn(); // only one
outputResultRow();
}
closeDataConnection();同じAEをSQLのスカラー関数とテーブル関数から呼び出すことができます。 AEプログラミング言語の実装の中には、入力行1つに対して出力行を正確に1つ返す場合にのみ使用できるコールバックパラダイムをサポートしているものもある。 多くの場合、SQLテーブル関数は入力行ごとに複数の出力行を返し、複数の列を持つ出力行を定義します。 この場合、AEは以下のような一般的な構造を持つ:getDataConnectionToNPS();
while (getNextInputRow)
{
getInputColumns();
limit = { 0 or a positive integer, app specific };
for (int i = 0; i < limit; i++)
{
setOutputColumns();
outputResultRow();
}
}
limit = { 0 or a positive integer, app specific };
for (int i = 0; i < limit; i++)
{
setOutputColumns();
outputResultRow();
}
closeDataConnection();出力行1つにつき複数の列が存在し、入力行1つにつき任意の数の出力行が存在しうることに注意。 入力終了後、AEはどの入力行にも関連しない出力行を返すことができる。 このタイプのAEは、SQLテーブル関数によってのみ呼び出すことができる。総合AE
集約AEは、関数AEとは異なるAPIを使用する。 この違いは、集約アルゴリズムの構造が異なるために存在する。 集約AEは、プログラミング言語によって異なるが、以下のような一般的な構造を持つ:
getDataConnectionToNPS();
while (getNextMessage())
{
case INTIALIZE:
initialize aggregation state
break;
case ACCUMULATE:
optionally set aggregation state based on application algorithm
break;
case MERGE:
merge results from different data
slices break;
case FINAL_RESULT:
set final result based on application
algorithm break;
}
closeDataConnection();例えば、initialize関数は初期化時に呼ばれ、accumulate関数はaccumulate時に呼ばれるといった具合だ。