AE共有ライブラリの操作
AE共有ライブラリ機能では、共有ライブラリをデータベースに保存し、NPS上のUDXおよびAEが実行時に利用できるようにする。 もともとはLinux共有ライブラリ(.sofiles)専用だったが、この機能は拡張され、実行ファイル、Javaクラス・ファイル、テキスト・ファイルなど、あらゆるタイプのファイルをデータベースに保存できるようになった。 実際には、共有ライブラリファイルは、ファイルシステム上のファイルの場所を提供する環境変数または AE API を介して、実行時に AE が利用できるようになります。 このファイルは読み取り専用で、変更したり削除したりしてはならない。
AE 共有ライブラリ機能により、AE が必要とするファイルリソースを NPS システムデータベースにパッケー ジすることができますが、これらのファイルリソースをネットワーク共有ドライブ上の AE エクスポートディレク トリツリーに配置することもできます。 選考はアプリケーションの特性に基づいて行われる。 例えば、AE共有ライブラリ機能は、より優れた組織効率を提供するかもしれない。 ア プ リ ケーシ ョ ン に よ っ ては、 AE エ ク ス ポー ト デ ィ レ ク ト リ ツ リ ー上のネ ッ ト ワー ク 競合を回避す る ために使用 さ れ る 場合 も あ る。 ただし、ファイル数が多すぎるとAE共有ライブラリ機能が煩雑になる可能性があるため、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';- MANUAL LOAD は、この AE 共有ライブラリを自動的にロードしないようにNetezzaシステムに指示する。 真のLinux.so共有ライブラリファイルだけが自動的にロードされるべきである。
- helloae実行ファイルのホストおよびSPUコピーの両方がデータベースに保存される。 データベースはディスク上のファイル・バージョンへのポインタを保持しない。
- HELLOAEは、このAE共有ライブラリの外部名である。
- 上級 NPS システム・ユーザーの場合、真の .so ファイルでない 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
CREATE OR REPLACE LIBRARY DAVIDXML
MANUAL LOAD
EXTERNAL HOST OBJECT '/home/david/myxml.xml'
EXTERNAL SPU OBJECT '/home/david/myxml.xml';NZAE_EXECUTABLE_PATH=%[HELLOAE]
NZAE_NUMBER_PARAMETERS=1
NZAE_PARAMETER1=%[DAVIDXML]NZAE_EXECUTABLE_PATH=%[HELLOAE]
MY_XML=%[DAVIDXML]こ れはフ ァ イ ルの一時 コ ピー (読み取 り 専用) への フ ルパス です。