Speichern und Abrufen von XML-Daten in Sybase mit Java-Custom-Klassen

Niemand möchte zwar die Hochleistungsspeicherung und die SQL-Abfrage-Engines missen, über die proprietäre Enterprise-Datenbankprodukte verfügen, doch die Möglichkeit zum offenen Datenaustausch in einem HTTP-freundlichen Textformat zwischen einzelnen Anwendungen macht XML sehr beliebt. In diesem Artikel werden wir uns Sybase Adaptive Server Enterprise (ASE) 12.5 und dessen verschiedene Methoden zur Speicherung und Verarbeitung von XML-Daten ansehen. Außerdem werden wir die OrderXml-Muster-Java-Custom-Klasse (eine Unterklasse der JXml-Standardklasse) diskutieren, die in ASE 12.5 enthalten ist.


Finden des Quellcode
Der Quellcode und Javadoc für die in diesem Artikel benutzte OrderXml-Klasse ist (in Abhängigkeit von Ihrer Plattform) in folgenden Sybase Server-Verzeichnissen zu finden:
UNIX: $SYBASE/ASE-12_5/sample/JavaSql
Windows NT: %SYBASE%ASE-12_5sampleJavaSql

Einbindung von XML in Sybase ASE
Die meisten großen Datenbank-Anbieter haben zwar bedeutende Schritte unternommen, um XML über grundlegende Erweiterungen in SQL-Anweisungen und serverseitige Vorlagen zu implementieren, doch Sybase hat in seinem Flaggschiff-Produkt einen weit konsequenteren Schritt in Richtung XML unternommen. Sybase ASE hat eine leistungsfähige serverseitige Java VM.

Zu den leistungsfähigsten XML-Verarbeitungsfunktionen von ASE gehört die Fähigkeit, eigene Java-Custom-Klassen zu benutzen. Sie können die Methoden dieser Klassen benutzen, um Daten aus XML-Dokumenten zu extrahieren und sie als normale SQL-Datentypen zu speichern oder sogar die Methoden selbst als Datentypen für Spalten in SQL-Tabellen benutzen. Diese Java Custom Class-Datentypen können Methoden haben, um Elemente aus den gespeicherten XML-Dokumenten nach Bedarf zu validieren, zu extrahieren sowie zu aktualisieren, hinzuzufügen oder zu löschen. Diese Klassen können sogar SQL-Tabellen anlegen und mit verschiedenartigen, aus dem XML-Dokument extrahierten Elementen ausfüllen, damit diese von herkömmlichen, nicht XML-fähigen Anwendungen benutzt werden können.

Speicherung von XML
Sybase ASE kann XML-Daten auf dreierlei Art speichern: Element-Speicherung, Dokument-Speicherung und Hybrid-Speicherung (eine Kombination aus der Element- und der Dokument-Methode).

Für die Zwecke dieser Diskussion werden wir als Muster das folgende OrderXml-Dokument benutzen:


<?xml version="1.0"?><Order>
<Date>1999/07/04</Date>
<CustomerId>123</CustomerId>
<CustomerName>Acme Alpha</CustomerName>
<Item>
<ItemId> 987</ItemId>
<ItemName>Coupler</ItemName>
<Quantity>5</Quantity>
</Item>
<Item>
<ItemId>654</ItemId>
<ItemName>Connector</ItemName>
<Quantity unit="12">3</Quantity>
</Item>
<Item>
<ItemId>579</ItemId>
<ItemName>Clasp</ItemName>
<Quantity>1</Quantity>
</Item>
</Order>

Das folgende SQL legt die Tabellen an, die mit den Musterdaten benutzt werden sollen:


create table orders
(customer_id varchar(5) not null,
order_date datetime not null,
item_id varchar(5) not null,
quantity int not null,
unit smallint default 1)
create table customers
(customer_id varchar(5) not null unique,
customer_name varchar(50) not null)
create table items
(item_id varchar(5) unique,
item_name varchar(20))

Das Standard-SQL zum Ausfüllen der Auftragsorder-Tabellen würde folgendermaßen aussehen:


insert into customers values("123", "Acme Alpha")


insert into orders values ("123", "2002/05/07", "987", 5, 1) insert into orders values ("123", "2002/05/07", "654", 3, 12) insert into orders values ("123", "2002/05/07", "579", 1, 1)

insert into items values ("987", "Widget") insert into items values ("654", "Medium connector") insert into items values ("579", "Type 3 clasp")

Das folgende SQL wählt die Daten aus der Datenbank aus, wenn sie gespeichert worden sind:


select order_date as Date, c.customer_id as CustomerId,
customer_name as CustomerName,
o.item_id as ItemId, i.item_name as ItemName,
quantity as Quantity, o.unit as unit
from customers c, orders o, items I
where c.customer_id=o.customer_id and
o.item_id=i.item_id

Die Ausgabe sieht in etwa so aus wie das, was Sie in dieser Tabelle sehen:

Date July 4 1999 July 4 1999 July 4 1999
CustomerID 123 123 123
CustomerName Acme Alpha Acme Alpha Acme Alpha
ItemId 987 654 579
ItemName Coupler Connector Clasp
Quantity 5 3 1
Unit 1 12 1

SQL-Ausgabe
Als Nächstes wollen wir uns Beispiele für die Speichermethoden und -techniken ansehen, um eine Tabelle current_orders anzulegen, die anstelle der oben angelegten und ausgefüllten Tabelle orders benutzt werden soll.

Page: 1 2

ZDNet.de Redaktion

Recent Posts

Taugen Kryptowährungen als Unterstützer der Energiewende?

Bankhaus Metzler und Telekom-Tochter MMS testen, inwieweit Bitcoin-Miner das deutsche Stromnetz stabilisieren könnten.

3 Stunden ago

Supercomputer-Ranking: El Capitan überholt Frontier und Aurora

Mit 1,7 Exaflops ist El Capitan nun der dritte Exascale-Supercomputer weltweit. Deutschland stellt erneut den…

7 Stunden ago

Ionos führt neue AMD-Prozessoren ein

Der deutsche Hyperscaler erweitert sein Server-Portfolio um vier Angebote mit den neuen AMD EPYC 4004…

8 Stunden ago

Lags beim Online-Gaming? DSL-Vergleich und andere Tipps schaffen Abhilfe

Beim Online-Gaming kommt es nicht nur auf das eigene Können an. Auch die technischen Voraussetzungen…

8 Stunden ago

GenKI-Fortbildung immer noch Mangelware

Fast jedes zweite Unternehmen bietet keinerlei Schulungen an. In den übrigen Betrieben profitieren oft nur…

8 Stunden ago

Netzwerk-Portfolio für das KI-Zeitalter

Huawei stellt auf der Connect Europe 2024 in Paris mit Xinghe Intelligent Network eine erweiterte…

11 Stunden ago