CREATE EXTERNAL TABLE <tablename> ( <columnlist> ) USING (DATAFILES( x1 [,x2,... ] ), < )
CREATE EXTERNAL TABLE <tablename> SAMEAS <templatetable> USING (DATAFILES( x1 [,x2,... ] ) , <table-options> )
SELECT <column-list> FROM <external-table> -- Selektieren von Daten INSERT INTO <base-table> SELECT <column-list> FROM <external-table> -- Laden von Daten INSERT INTO <external-table> SELECT <column-list> FROM <base-table> -- Entladen von Daten
Wann immer man mit Reorganisationen, Migrationen, Auslagerung oder Archivierung von Daten beschäftigt ist, stehen zeitliche Aspekte im Vordergrund. Je schneller Lade- oder Entladevorgänge ablaufen desto besser. Informix bietet zwar mit dem HPL hier durchaus eine gute Lösung, die aber viele Datenbankadministratoren scheuen, weil sie komplex zu konfigurieren ist und bei auftretenden Fehlern die Analyse oder Reaktion auf diese Fehler nicht immer trivial sind.
Deshalb werden trotz teilweise extremer Laufzeiten bei Informix weiterhin sehr häufig die komfortablen SQL-Erweiterungen LOAD und UNLOAD im Werkzeug dbaccess genutzt. Kenner von Informix XPS wissen deshalb die Funktion der so genannten EXTERNAL TABLES zu schätzen, die über SQL Syntax angelegt werden und dann einfach über SELECT und INSERT in beide Richtungen angesprochen werden können.
Die Arbeitsweise bei einem LOAD von einer EXTERNAL TABLE ist in Abbildung 1 dargestellt.
Mithilfe einfacher SQL-Erweiterungen beim CREATE TABLE wird eine EXTERNAL TABLE angelegt und schon kann man sie zum Entladen nutzen (oder bei vorhandenen dementsprechenden Datenfiles auch zum Laden). Die SQL-Syntax zum Anlegen einer Tabelle finden Sie in den Abbildungen 2 a und b, die Syntax zum Laden oder Entladen ist in Abbildung 3 dargestellt.
Zusätzliche Optionen lassen die Verwandtschaft mit dem HPL erkennen. Die Syntax zeigt die einfache Verwendung auch in Anwendungen oder Skripten.
Für die Implementierung dienen drei neue, obligatorische Systemtabellen:
sysexternal
sysextdfiles
sysextcols
Ob diese Systemtabellen bei einem Upgrade auf die Version xC6 einfach angelegt werden, muss von unserer Seite noch geprüft werden. Da aber Versionswechsel bei Informix bislang immer recht problemlos vonstatten gingen, gehen wir davon aus, dass auch bei diesem Wechsel keine Probleme auftreten werden. Wir werden darüber in einer der nächsten ORDIX News berichten.
Nach Informix Angaben soll das Verfahren mit External Tables sowohl beim Unload wie auch beim Load deutlich schneller als mit dem HPL sein. Diese Aussage werden wir in den nächsten Wochen intensiv verifizieren und die Ergebnisse in einer der nächsten ORDIX News vorstellen. Bei dem Vergleich der beiden Verfahren greifen wir auf gute Erfahrungen und viele erfolgreiche Projekte mit dem HPL zurück.
Sollten die angekündigten Verbesserungen im Bereich Methoden und Werkzeuge zutreffen, werden wir uns nicht gegen diesen “Trend“ verschließen.
Schon auf den ersten Blick macht die Technologie einen guten Eindruck. Sie scheint nicht nur einfacher als der HPL einsetzbar zu sein, sondern auch gut zu funktionieren, selbst wenn wir noch nicht alle Funktionalitäten ausführlich testen konnten.
Sollte sich auch die Performance-Aussage bewahrheiten, wird es schwer, noch für den HPL zu argumentieren, auch wenn wir von ORDIX mit unserem Aufsatzprodukt die Nutzung des HPL deutlich vereinfachen. Wir behalten die Funktion EXTERNAL TABLE im Auge und werden in den nächsten ORDIX News noch die eine oder andere Frage beantworten.
Ulf Papenfuß (info@ordix.de).
Michael Skowasch (info@ordix.de).