AE共有ライブラリの操作

AE共有ライブラリ機能では、共有ライブラリをデータベースに保存し、NPS上のUDXおよびAEが実行時に利用できるようにする。 もともとはLinux共有ライブラリ(.sofiles)専用だったが、この機能は拡張され、実行ファイル、Javaクラス・ファイル、テキスト・ファイルなど、あらゆるタイプのファイルをデータベースに保存できるようになった。 実際には、共有ライブラリファイルは、ファイルシステム上のファイルの場所を提供する環境変数または AE API を介して、実行時に AE が利用できるようになります。 このファイルは読み取り専用で、変更したり削除したりしてはならない。

AE 共有ライブラリ機能により、AE が必要とするファイルリソースを NPS システムデータベースにパッケー ジすることができますが、これらのファイルリソースをネットワーク共有ドライブ上の AE エクスポートディレク トリツリーに配置することもできます。 選考はアプリケーションの特性に基づいて行われる。 例えば、AE共有ライブラリ機能は、より優れた組織効率を提供するかもしれない。 ア プ リ ケーシ ョ ン に よ っ ては、 AE エ ク ス ポー ト デ ィ レ ク ト リ ツ リ ー上のネ ッ ト ワー ク 競合を回避す る ために使用 さ れ る 場合 も あ る。 ただし、ファイル数が多すぎるとAE共有ライブラリ機能が煩雑になる可能性があるため、AEエクスポートディレクトリツリーの方が適しています。

例として、「単純な C 言語 AE」のセクションで示されている helloae コードは、AE エクスポートディレクトリツリーの代わりに AE 共有ライブラリを使用するように変更できます。 この例では、ホスト実行ファイルは/nz/export/ae/applications//dev/david/host/helloae/david/host/helloaeにあり、SPU実行ファイルは/nz/export/ae/applications/dev/david/spu/helloaeにある/dev/david/spu/helloae. まず、SQLコマンドを使って、AE共有ライブラリとしてデータベースに保存する:
CREATE OR REPLACE LIBRARY HELLOAE
MANUAL LOAD
EXTERNAL HOST OBJECT '/nz/export/ae/applications/dev/david/host/helloae'
EXTERNAL SPU OBJECT '/nz/export/ae/applications/dev/david/spu/helloae';
このSQLについての注意事項がある:
  • MANUAL LOAD は、この AE 共有ライブラリを自動的にロードしないようにNetezzaシステムに指示する。 真のLinux.so共有ライブラリファイルだけが自動的にロードされるべきである。
  • helloae実行ファイルのホストおよびSPUコピーの両方がデータベースに保存される。 データベースはディスク上のファイル・バージョンへのポインタを保持しない。
  • HELLOAEは、このAE共有ライブラリの外部名である。
  • 上級 NPS システム・ユーザーの場合、真の .so ファイルでない AE 共有ライブラリは、他のライブラリの依存 関係になるべきではない。
このAEは以下のように登録されている:
--deps inza..LIBNZAEADAPTER,inza..LIBNZAECHILD,HELLOAE
NZAE_EXECUTABLE_PATH=%[HELLOAE]

この登録についての注意事項がある:

  • --depsオプションは、register_aeまたはnzudxcompileに、このAEアプリケーションが必要とする共有ライブラリを指示する。 HELLOAEがデフォルトリストに追加された。
  • HELLOAE]はAE共有ライブラリ・パス置換の例である。 実行時にAEランタイムシステムは、これを共有ライブラリのコピーを指すファイルパスに変換する。 構文は、パーセント記号(%)の後に角括弧([ ])で外部 AE 共有ライブラリ名を囲むことに注意。
  • AE共有ライブラリは、ホストとSPUの実行ファイルを適切なマシンに配置する。 NZAE_EXECUTABLE_PATH は、ロケーションプレフィックスなしで1つだけ必要である。
  • このAEアプリケーションは、図のようにAEエクスポートディレクトリツリーにアクセスしません。

AE共有ライブラリの機能は、どのようなファイルタイプにも使用できる。 AE共有ライブラリのパス置換は、どのような環境値でも使用できる。 helloaeアプリケーションに関連するXMLファイルのみを表示する場合: '/home/david/myxml.xml

共有ライブラリーは一度作成されるとソース・ファイルを参照しないため、XMLファイルがエクスポート・ツリーにある必要はない。 AE共有ライブラリを作成する:
CREATE OR REPLACE LIBRARY DAVIDXML
MANUAL LOAD
EXTERNAL HOST OBJECT '/home/david/myxml.xml'
EXTERNAL SPU OBJECT '/home/david/myxml.xml';
DAVIDXMLはSQLコマンド実行時のXMLファイルのスナップショットです。 この場合、ホストとSPUで同じコピーを使用するが、異なるファイルを使用することもできる。 XML ファイルは、コマンドライン引数として helloae AE アプリケーションに渡すことができます。
NZAE_EXECUTABLE_PATH=%[HELLOAE]
NZAE_NUMBER_PARAMETERS=1
NZAE_PARAMETER1=%[DAVIDXML]
別の登録方法は以下の通り:
NZAE_EXECUTABLE_PATH=%[HELLOAE]
MY_XML=%[DAVIDXML]

こ れはフ ァ イ ルの一時 コ ピー (読み取 り 専用) への フ ルパス です。