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.
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
Erstmals liegen Preise für Verbraucher vor. Sie zahlen weniger als Geschäftskunden. Dafür beschränkt Microsoft den…
Die Entwickler arbeiten noch an weiteren „Verfeinerungen“. Windows Insider erhalten nun wohl eine erste Vorschau…
Laut Bitkom-Umfrage werden in jedem dritten Unternehmen in Deutschland private KI-Zugänge genutzt. Tendenz steigend.
2023 erlitten neun von zehn Unternehmen in der DACH-Region Umsatzverluste und Kurseinbrüche in Folge von…
Der Report „Pacific Rim“ von Sophos beschreibt Katz-und-Maus-Spiel aus Angriffs- und Verteidigungsoperationen mit staatlich unterstützten…
NVIDIA DGX SuperPOD soll voraussichtlich Mitte 2025 in Betrieb genommen und für Forschungsberechnungen genutzt werden.