Verwendung von Altova Tools für die Arbeit mit XML-Daten in der Amazon RDS Cloud(Dieser technische Tipp wurden anhand eines Posts im Altova Blog adaptiert. Im Altova Blog finden Sie die neuesten Nachrichten von Altova, lesen über neue Produktfunktionen, technische Tipps und Branchenneuigkeiten. Die Quellen für die unten dargestellten SQL-Skripts finden Sie am Ende der Seite, von wo Sie sie in Ihre Dokumente kopieren können.) Immer mehr Unternehmen entdecken die Vorteile der Implementierung von Datenbankapplikationen in der Cloud:
In diesem technischen Tipp wird gezeigt, wie Sie eine Verbindung zum Amazon Relational Database Service (Amazon RDS) herstellen und mit Hilfe von Altova DatabaseSpy eine kleine Datenbank erstellen können. Da alle Produkte des Altova MissionKit einen einheitlichen Datenbankverbindungsassistenten aufweisen, erfolgt die Herstellung in XMLSpy, MapForce oder StyleVision auf die gleiche Weise. Wenn Sie die unten beschriebenen Schritte selbst nachvollziehen möchten, müssen Sie sich unter http://aws.amazon.com/rds/ für einen Amazon Web Services (AWS) Account anmelden. Eine Testversion des Altova MissionKit mit dem vollen Funktionsumfang oder jede beliebigen Einzelapplikation von Altova steht unter http://www.altova.com/de/download-trial/ zur Verfügung. Erstellen eines lokalen PrototypsDer Amazon RDS basiert auf MySQL, daher werden wir eine kleine lokale Datenbank in der MySQL Community Edition erstellen, diese dann nach Amazon RDS migrieren und die Datenbank in der Cloud testen. Zwar unterstützt MySQL XML nicht als Datentyp für Datenbankspalten, doch unterstützen MySQL 5.1 und 6.0 einige Operationen für als Text gespeicherte XML-Daten. Wir werden für diese Übung einige der MySQL XML-Beispiele in den hier aufgelisteten MySQL-Referenzressourcen adaptieren und erweitern: http://dev.mysql.com/doc/refman/5.1/en/xml-functions.html http://dev.mysql.com/tech-resources/articles/xml-in-mysql5.1-6.0.html http://dev.mysql.com/tech-resources/articles/mysql-5.1-xml.html Wir haben zuerst DatabaseSpy gestartet und eine Verbindung zu unserer lokalen MySQL Community Edition hergestellt. Wir haben eine neue Datenquelle namens Local Prototype und ein neues Datenbankschema namens XMLtest erstellt. Hier sehen Sie den DatabaseSpy Online Browser und das Fenster "Eigenschaften":
Als nächstes haben wir zwei Tabellen namens "books" und "cities" erstellt und gemäß den Beispielen in der MySQL-Dokumentation Daten eingefügt. Hier sehen Sie die Tabellen in der DatabaseSpy Design-Ansicht:
Wir können Select-Abfragen ausführen und den Inhalt unserer Tabellen in übereinandergestapelten Ergebnisfenstern anzeigen:
Beachten Sie, dass die doc-Spalte der Tabelle "books" XML-Daten enthält, obwohl sie als varchar(150) definiert wurde. MySQL unterstützt zwei Funktionen beim Arbeiten mit XML in Textfeldern, ExtractValue( ) and UpdateXML( , die über XPath-Ausdrücke an einzelnen Elementen ausgeführt werden können. Unten sehen Sie eine einfache ExtractValue( ) Abfrage, mit der nur die Initialen der Autoren aus den einzelnen Zeilen der Tabelle "books" zurückgegeben werden:
Mit Hilfe der UpdateXML( ) Funktion kann der Inhalt einzelner XML-Elemente mit Hilfe eines SQL-Ausdrucks geändert werden. In der Abbildung unten aktualisiert die Abfrage in Zeile 1 alle Zeilen der Tabelle "books", während die Abfrage in Zeile 2 die neuen Werte zurückgibt:
Außerdem können wir mit Hilfe der Concat( ) Funktion wie unten gezeigt XML-Elemente zu Nicht-XML-Daten wie der Tabelle "cities" hinzufügen:
Bisher wurden alle unsere XML-Abfragen an allen Zeilen jeder einzelnen Tabelle ausgeführt. Um Abfragen an einer einzigen Zeile zu vereinfachen, fügen Sie am besten eine Spalte für einen eindeutigen Zeilenindex zur Tabelle hinzu. Wir können eine Kopie unserer Tabelle "books" machen und eine Spalten namens "id" für den Zeilenindex hinzufügen. Die Spalte "id" bietet außerdem einen praktischen Sekundärschlüssel, mit dem ein einzelnes XML-Dokuments in unserer Tabelle aus einer andern Tabelle referenziert werden kann. So könnten Sie z.B. eine Tabelle mit Namen von Stellenbewerbern definieren, die einen Sekundärschlüssel enthält, der die in XML formatierten und in einer separaten Tabelle gespeicherten Lebensläufe der einzelnen Kandidaten referenziert. Mit Hilfe des SQL-Editors in DatabaseSpy können Sie eine CREATE-Anweisung für die bestehende Tabelle "books" erstellen und diese direkt editieren oder Sie können die Tabelle grafisch mit dem DatabaseSpy Design Editor erstellen. Da wir dieselben Abfragen später in Amazon RDS ausführen möchten, haben wir für die Tabelle "books2" eine SQL CREATE-Anweisung und SQL INSERT-Anweisungen in einem Skript miteinander kombiniert. In der Abbildung unten sehen Sie einen Teil des Skripts für books2:
Wir können an der Tabelle "books2" eine Abfrage durchführen, um die eindeutige id-Spalte für jede Zeile anzuzeigen:
Nun können wir unsere UpdateXML( ) und ExtractValue( ) Abfragen verfeinern, damit sie an einer einzelnen Zeile ausgeführt werden:
Auf diese Art haben wir eine gute Beispielbasis, die wir in die Cloud migrieren und in einem Amazon RDS testen können. Verbinden von DatabaseSpy mit der Amazon RDS CloudNachdem Sie gemäß der Anleitung der AWS Management Console eine Datenbankinstanz auf Amazon RDS erstellt haben, können Sie mit Hilfe des Verbindungsassistenten von DatabaseSpy ganz einfach eine Verbindung herstellen. Wählen Sie einfach wie hier gezeigt die Option MySQL aus:
Wenn die Verbindung zum ersten Mal hergestellt wird, müssen Sie einen neuen DSN erstellen. Anschließend kann der DSN mit der Option "Vorhandenen Data Source Name verwenden" aus einer Liste ausgewählt werden. Auch von XMLSpy, MapForce oder StyleVision aus können Sie den ursprünglich erstellten DSN verwenden.
Füllen Sie im Verbindungsdialogfeld die folgenden Informationen aus:
Wir haben die Verbindung zur Amazon RDS Cloud-Datenbank im selben DatabaseSpy-Projekt hergestellt, das wir auch für den lokalen Prototypen verwendet haben. In der Abbildung unten sehen Sie das Projektfenster mit den Datenquellennamen und den zum Projekt hinzugefügten SQL-Arbeitsdateien:
Bevor wir unsere Tabellen erstellen und die Abfragen ausführen, sollten wir die Versionen der einzelnen Systeme überprüfen. In den Abbildungen unten sehen Sie eine Abfrage der Versionsinformationen für die einzelnen Systeme. Beachten Sie, dass in der grauen Leiste direkt oberhalb der Abfrage angezeigt wird, welcher Datenverbindung die SQKL-Anweisung zugewiesen wurde.
Das Ergebnis der Abfrage ist, dass auf Amazon RDS Version 5.1 des MySQL Community Servers läuft, also dieselbe Version wie auf unserem lokalen Prototyp - ein vielversprechender Beginn! Migrieren des lokalen Projekts in die CloudWir können die einzelnen ursprünglichen Skripts zur Erstellung der Tabelle öffnen und sie durch Neuzuweisung des Ausführungsziels im Fenster "Eigenschaften" in der Cloud-Datenbank ausführen.
Die graue Ausführungszielleiste im oberen Bereich des SQL Editor-Fensters gibt die Amazon RDS Cloud-Datenbank als Datenbankziel an:
Nachdem wir die Tabellen "books" und "books2" auf ähnliche Weise erstellt haben, können wir die einzelnen SQL-Abfragen an der Cloud-Datenbank ausführen. Beispiel ExtractValue( ) Funktion für alle Zeilen:
Concat( ) Abfrage zur Erstellung einer XML-Ausgabe anhand von Nicht-XML-Daten in einer Tabelle:
UpdateXML( ) Beispiel für eine einzige Zeile in einer Tabelle.
ExtractValue( ) für eine einzige Zeile:
FazitIn jedem von uns durchgeführten Test verhielt sich Amazon RDS genau wie die lokale MySQL Community Edition. Dadurch lassen sich neue Cloud Datenbankapplikationen oder Verbesserungen an bestehenden Applikationen viel effizienter erstellen und testen, ohne dass die Cloud-Ressourcen in den Entwicklungsphasen Kosten verursachen. Wir haben auch die MySQL XML-Funktionen für XML-Daten, die in Textspalten in Cloud-Datenbanken gespeichert sind, überprüft. Zwar waren unsere XML-Daten in der Größe sehr beschränkt - die Textspalte in unserer Tabelle "books" war auf 150 Zeichen beschränkt - doch gestattet MySQL die Speicherung viel größerer XML-Dokumente in einer einzigen Spalte. Jede Tabelle hat eine maximale Zeilengröße von 65.535 Bytes. Selbst, wenn in Ihrer Tabelle eine Indexspalte verwendet wird, bedeutet das, dass eine varchar-Spalte für einen XML-Eintrag über 65.000 Bytes enthalten darf. Wenn Sie noch größere XML-Dokumente speichern müssen, bietet MySQL ähnlich BLOBs MediumText und LongText-Datentypen. MediumText bietet Platz für über 16 Millionen Single-Byte Zeichen und LongText für mehr als 4 GB. Zwar gibt es keine Abbildung davon in diesem Blog Post, doch haben wir die Funktionen ExtractValue( ) and UpdateXML( ) mit den Datentypen MediumText und LongText erfolgreich getestet. Wenn Sie so große XML-Datendateien speichern müssen, kann die Erstellung von XPath-Ausdrücken zur Auflösung einzelner Elemente sich ziemlich schwierig gestalten. Der in XMLSpy enthaltene XPath Analyzer ist ein wertvolles Tool zum Testen und Debuggen von XPath 1.0 und 2.0-Ausdrücken. Während Sie einen XPath-Ausdruck in den Analyzer eingeben, überprüft XMLSpy ihn und gibt das resultierende Node Set in Echtzeit zurück. Dies kann viele Stunden Zeit beim Debuggen, Analysieren und Auffinden von XPath-Fehlern sparen. Quellen für die SQL-SkriptsHier finden Sie die oben besprochenen SQL-Skripts zum Kopieren und Einfügen in Ihre Dateien: Das CREATE-Skript für die Tabelle "cities" und die Varianten des CONCAT( ) Beispiels stammen aus http://dev.mysql.com/tech-resources/articles/xml-in-mysql5.1-6.0.html Hier finden Sie die oben dargestellte CONCAT( )-Anweisung: SELECT CONCAT('<city>', '<name>', name, '</name>', '<country>', country, '</country>', '<population>', population, '</population>', '</city>\n' ) AS xmldoc FROM cities;Die "books"-Tabellenbeispiele basieren auf http://dev.mysql.com/tech-resources/articles/mysql-5.1-xml.html Hier finden Sie ein CREATE-Skript für die Tabelle "books": CREATE TABLE books (doc VARCHAR(150)); INSERT INTO books VALUES (' <book> <title>A guide to the SQL standard</title> <author> <initial>CJ</initial> <surname>Date</surname> </author> </book> '); INSERT INTO books VALUES (' <book> <title>SQL:1999</title> <author> <initial>J</initial> <surname>Melton</surname> </author> </book> ');
Wenn Sie selbst testen möchten, wie gut sich Altova-Tools für die Arbeit mit Amazon RDS eignen, laden Sie eine kostenkose Testversion des Altova MissionKit herunter.
|
| |||||||||||||||||||||||||||||||
| Altova | Rechtsabteilung | Presse | Partner | Karriere | Übersicht | Kontakt | Altova Blog | Mobile | Full Site | |||
|
