Arbeiten mit gemeinsamen AE-Bibliotheken
Mit der AE-Shared-Library-Funktionalität können gemeinsam genutzte Bibliotheken in der Datenbank gespeichert werden, so dass sie zur Laufzeit für UDXs und AEs auf dem NPS verfügbar sind. Ursprünglich spezifisch für Linux Shared Libraries (.sofiles), wurde diese Funktionalität so erweitert, dass jede Art von Datei in der Datenbank gespeichert werden kann, einschließlich ausführbarer Dateien, Java-Klassendateien und Textdateien. In der Praxis wird die gemeinsam genutzte Bibliotheksdatei einem AE zur Laufzeit über eine Umgebungsvariable oder die AE-API zur Verfügung gestellt, die den Speicherort der Datei im Dateisystem angibt. Die Datei ist schreibgeschützt und sollte nicht geändert oder gelöscht werden.
Obwohl die AE-Shared-Library-Funktionalität es ermöglicht, die von einer AE benötigten Dateiressourcen in die NPS-Systemdatenbank zu packen, besteht die Alternative darin, diese Dateiressourcen in den AE-Exportverzeichnisbaum auf einem gemeinsam genutzten Netzlaufwerk zu legen. Die Auswahl basiert auf den Merkmalen der Anwendung. So kann beispielsweise die gemeinsame Bibliotheksfunktionalität von AE eine bessere organisatorische Effizienz bieten. Bei einigen Anwendungen kann es verwendet werden, um Netzwerkkonflikte im AE-Exportverzeichnisbaum zu vermeiden. Allerdings kann die AE-Shared-Library-Funktionalität bei zu vielen Dateien umständlich werden, so dass der AE-Exportverzeichnisbaum die bessere Wahl ist.
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';- MANUELLES LADEN weist das Netezza an, diese AE Shared Library nicht automatisch zu laden. Nur echte Linux.so shared library Dateien sollten automatisch geladen werden.
- Sowohl die Host- als auch die SPU-Kopien der ausführbaren Datei von helloae werden in der Datenbank gespeichert. Die Datenbank verfügt nicht über einen Zeiger auf die Dateiversionen auf der Festplatte.
- HELLOAE ist der externe Name dieser AE Shared Library.
- Für fortgeschrittene NPS-Systembenutzer sollte eine AE-Shared Library, die keine echte .so-Datei ist, keine Abhängigkeit für eine andere Bibliothek darstellen.
--deps inza..LIBNZAEADAPTER,inza..LIBNZAECHILD,HELLOAE
NZAE_EXECUTABLE_PATH=%[HELLOAE]Einige Hinweise zu dieser Registrierung:
- Die Option --deps teilt register_ae oder nzudxcompile mit, welche gemeinsamen Bibliotheken für diese AE-Anwendung erforderlich sind. HELLOAE wurde in die Standardliste aufgenommen.
- %[HELLOAE] ist ein Beispiel für die Ersetzung des Pfades einer gemeinsam genutzten AE-Bibliothek. Zur Laufzeit wandelt das AE-Laufzeitsystem dies in einen Dateipfad um, der auf eine Kopie der gemeinsamen Bibliothek verweist. Die Syntax besteht aus dem Prozentzeichen (%), gefolgt von eckigen Klammern ([ ]), die den Namen der externen AE-Shared Library einschließen.
- Die AE Shared Library sorgt dafür, dass die Host- und SPU-Executables auf den entsprechenden Rechnern platziert werden. Es ist nur ein NZAE_EXECUTABLE_PATH ohne ein Ortspräfix erforderlich.
- Diese AE-Anwendung greift, wie gezeigt, nicht auf den AE-Exportverzeichnisbaum zu.
Die AE-Shared-Library-Funktionalität kann für jeden Dateityp verwendet werden. AE Shared Library Path Substitution kann in jedem Umgebungswert verwendet werden. Um nur die XML-Datei anzuzeigen, die mit der Anwendung helloae verbunden ist: ' /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]Der folgende, alternative Ansatz verwendet einen API-Aufruf der AE-Umgebung, um den Wert von MY_XML abzurufen, der ein vollständiger Pfad zu einer temporären Kopie der Datei ist (die nur gelesen werden kann).