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

Studie: Ein Drittel aller E-Mails an Unternehmen sind unerwünscht

Der Cybersecurity Report von Hornetsecurity stuft 2,3 Prozent der Inhalte gar als bösartig ein. Die…

2 Tagen ago

HubPhish: Phishing-Kampagne zielt auf europäische Unternehmen

Die Hintermänner haben es auf Zugangsdaten zu Microsoft Azure abgesehen. Die Kampagne ist bis mindestens…

3 Tagen ago

1. Januar 2025: Umstieg auf E-Rechnung im B2B-Geschäftsverkehr

Cloud-Plattform für elektronische Beschaffungsprozesse mit automatisierter Abwicklung elektronischer Rechnungen.

3 Tagen ago

Google schließt schwerwiegende Sicherheitslücken in Chrome 131

Mindestens eine Schwachstelle erlaubt eine Remotecodeausführung. Dem Entdecker zahlt Google eine besonders hohe Belohnung von…

3 Tagen ago

Erreichbarkeit im Weihnachtsurlaub weiterhin hoch

Nur rund die Hälfte schaltet während der Feiertage komplett vom Job ab. Die anderen sind…

4 Tagen ago

Hacker missbrauchen Google Calendar zum Angriff auf Postfächer

Security-Experten von Check Point sind einer neuen Angriffsart auf die Spur gekommen, die E-Mail-Schutzmaßnahmen umgehen…

5 Tagen ago