RPG IV-Spickzettel für SQL Datalinks

10. November 2007 | Von | Kategorie: Load`n`go, Programmierung

Ein Artikel der NEWSolutions: RPG IV-Spickzettel für SQL Datalinks.

UDB DataLinks in RPG-Programmen verwenden

von Mike Cravitz

Die Unterstützung von UDB DataLinks ist eine Alternative zu den Large-Object-Spalten (LOBs) in SQL/400. Der Unterschied zwischen SQL/400 LOBs und DataLinks besteht darin, daß mit DataLinks nur Verweise auf Datenobjekte wie Bilder oder Videoclips in der Datenbank gespeichert werden und nicht die Objekte selbst, wie bei SQL-LOBs. Zur Klärung des Begriffs sei hier darauf hingewiesen, daß DataLinks (mit dem Buchstaben “s”) die offizielle Bezeichnung für die DataLink-Unterstützung ist. Wir verwenden also den Begriff “DataLinks” nicht als Plural von “DataLink”, sondern als Bezeichnung des UDB-Konstrukts. Anhand eines RPG-Beispielprogramms, das auf eine verknüpfte Datei zugreift, wollen wir Sie in die Verwendung von DataLinks einführen. Wir werden eine Tabelle mit einer DataLink-Spalte erstellen, die Tabelle mit Daten füllen und die Daten mit einem RPG-Programm lesen. Aber zunächst befassen wir uns kurz mit einigen Grundbegriffen.

April Utility zur NEWS/400
Load`n`go

DataLinks Grundlagen
DataLinks ist eine UDB-Architektur, die einen DataLinks File Manager (DLFM) beschreibt, der die Verbindungen zwischen den verknüpften Daten und den entsprechenden DataLink-Spalten pflegt. Ein weiterer Bestandteil der Architektur ist der DataLinks File Filter (DLFF), der den Zugriff auf die verknüpften Daten verwaltet. Eine Spalte des Typs DataLink enthält eigentlich nur einen Verweis auf eine Datei auf einem lokalen oder fernen System. Die aktuelle Implementation (V4R5) unterstützt nur das URL-Format (Universal Resource Locator) zur Definition der Verweise. Im Gegensatz zu DataLink-Spalten werden in LOB-Spalten die eigentlichen Inhalte selbst gespeichert. Die Abbildungen 1a und 1b zeigen diesen grundlegenden Unterschied. Normalerweise bezieht sich eine DataLink-Spalte auf eine Byte-Stream-Datei. Auf der AS/400 befinden sich solche Dateien gewöhnlich im Integrierten Dateisystem (IFS), aber eine Datei kann sich auf jedem Comutersystem 0befinden, auf dem ein DLFM/DLFF installiert ist. Derzeit wird DataLinks auf den Plattformen AIX, HP-UX, Linux, NUMA-Q, OS/2, OS/400, Solaris und Windows 95/98/NT/2000 unterstützt. OS/390-Unterstützung soll in nächster Zeit verfügbar werden, so daß jede Plattform, auf der DB2 UDB eingesetzt werden kann, auch DataLinks unterstützt.

Eine Beispiel-Tabelle

Abbildung 2a zeigt ein Beispiel für eine Personal-Tabelle mit einer DataLink-Spalte, und Abbildung 2b zeigt die Create Table-Anweisung zum Definieren der Tabelle. Die Tabelle enthält eine Spalte namens Notes vom Typ DataLink. In diesem Fall ist jeder Zeile in der Personal-Tabelle eine IFS-Datei auf der lokalen AS/400 zugeordnet (die den Systemnamen RISC trägt). Bevor die Tabelle mit Daten gefüllt werden kann, müssen 4 Bedingungen erfüllt sein:

  • Die Tabelle muß journalisiert werden (siehe Handbuch Backup and Recovery (SC41-5304) für weitere Informationen über Journalisierung).
  • Das Präfix muß registriert werden. Zum Registrieren des Präfix für die verknüpften Dateien in unserem Beispiel wurde der folgende AS/400-Befehl verwendet: AddPfxDLFM Prefix( ‘/myDataLinks’ )
  • Die Datenbank und die Collections (bibliotheken) mit verknüpften Tabellen müssen registriert werden. Um verknüpfte Spalten in der in Abbildung 2a verwendeten Collection DLLIB zu ermöglichen, wurde folgender Befehl eingegeben: AddHDBDLFM Hostlib( DLLIB ) HostDb( RISC )
  • Die Dateien, die verknüpft werden sollen, müssen bereits existieren. Diese Situation ist entstanden, weil wir bei der Definition der verknüpften Spalte (Abbildung 2b) die Klausel File Link Control angegeben haben. Hätten wir dies nicht getan, so könnten auch Zeilen in die Tabelle eingefügt werden, bei denen die verknüpfte Datei nicht existiert.

Abbildung 3 zeigt die INSERT-Anweisungen, die wir zum Füllen der Tabelle Employee verwendet haben.

Schlagworte: , , , , , , , ,

Schreibe einen Kommentar

Sie müssen eingeloggt sein, um einen Kommentar schreiben.