XML dans le cloud
Utilisation des outils Altova et du service de base de données relationnelle Amazon (Amazon RDS)
De plus en plus d'entreprises découvrent les avantages de l'implémentation d'applications de bases de données dans le cloud :
- Haute disponibilité et fiabilité
- Mise à l'échelle automatique
- Liberté des coûts liés au matériel et suppression des contraintes de maintenance
Dans cet article de blog, nous expliquons comment se connecter au service de base de données relationnelles Amazon (Amazon RDS) et comment créer une petite base de données à l'aide d'Altova DatabaseSpy. Étant donné que l'assistant de connexion à la base de données est le même dans tous les produits Altova MissionKit, vous pouvez vous connecter de la même manière en utilisant XMLSpy, MapForce ou StyleVision.
Si vous souhaitez suivre les étapes décrites ci-dessous, vous devrez créer un compte Amazon Web Services (AWS) à l'adresse suivante : http://aws.amazon.com/rds/. Vous pouvez également télécharger une version d'essai gratuite et entièrement fonctionnelle d'Altova MissionKit ou de toute application Altova individuelle à l'adresse suivante : https://www.altova.com/download-trial/
Construisez un prototype local
Amazon RDS est basé sur MySQL, donc nous allons créer une petite base de données locale en utilisant la version Community Edition de MySQL, puis nous migrerons vers Amazon RDS et nous testerons notre base de données dans le cloud. Bien que MySQL ne prenne pas en charge XML comme type de données pour les colonnes de base de données, les versions 5.1 et 6.0 de MySQL prennent en charge certaines opérations pour les données XML stockées sous forme de texte. Pour cet exercice, nous adapterons et développerons certains exemples MySQL concernant XML, disponibles dans les ressources de référence MySQL listées ici : 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 Tout d'abord, nous avons lancé DatabaseSpy et nous nous sommes connectés à notre instance locale de MySQL Community Edition. Nous avons créé une nouvelle source de données, que nous avons appelée LocalPrototype, et nous avons conçu un nouveau schéma de base de données, que nous avons nommé XMLtest. Les fenêtres de navigateur en ligne et de propriétés de DatabaseSpy sont présentées ici :
![]()
Ensuite, nous avons créé deux tables, nommées "books" (livres) et "cities" (villes), et nous avons inséré des données en suivant les exemples présents dans la documentation MySQL. Voici une vue de conception de nos tables, telle que vue par DatabaseSpy :
![]()
Nous pouvons exécuter des requêtes spécifiques et afficher le contenu de nos tables dans des fenêtres de résultats empilées
![]()
Notez que la colonne "doc" de la table "books" contient des données XML, bien qu'elle ait été définie comme varchar(150). MySQL prend en charge deux fonctions pour travailler avec des données XML dans des champs de texte : ExtractValue() et UpdateXML(), qui peuvent opérer sur des éléments individuels via des expressions XPath. Voici une requête simple utilisant ExtractValue() pour renvoyer uniquement les initiales de l'auteur de chaque ligne de la table "books" :
![]()
La fonction UpdateXML() peut être utilisée pour modifier le contenu des éléments XML individuels à l'aide d'une expression SQL. Dans la capture d'écran ci-dessous, la requête à la ligne 1 met à jour chaque ligne de notre table "books", et la requête à la ligne 2 renvoie les nouvelles valeurs :
![]()
Nous pouvons également utiliser la fonction Concat() pour ajouter des éléments XML à des données qui ne sont pas au format XML, comme le tableau des villes, comme illustré ci-dessous :
![]()
Jusqu'à présent, nos requêtes XML ont opéré sur toutes les lignes de chaque table. Pour faciliter les requêtes ciblant une seule ligne, il est utile d'ajouter une colonne à la table pour stocker un index unique pour chaque ligne. Nous pouvons créer une copie de notre table "books" et ajouter une colonne appelée "id" pour stocker cet index de ligne. La colonne "id" peut également servir de clé étrangère pratique pour référencer un document XML individuel dans notre table, à partir d'une ligne d'une autre table.
Par exemple, vous pouvez définir une table pour contenir les noms des candidats, avec une clé étrangère qui fait référence au curriculum vitae au format XML de chaque candidat, stocké dans une table distincte. Vous pouvez utiliser Éditeur SQL Dans DatabaseSpy, vous pouvez générer une instruction CREATE pour la table "books" existante, puis la modifier directement. Vous pouvez également utiliser DatabaseSpy pour.. Rédacteur de conception pour créer le tableau de manière graphique. (Pour plus d'informations, consultez la section suivante.) DatabaseSpy section de Altova (Site web.)
Étant donné que nous prévoyons d'exécuter les mêmes requêtes ultérieurement sur Amazon RDS, nous avons combiné une instruction SQL CREATE et des instructions SQL INSERT en un seul script pour la table "books2". La capture d'écran ci-dessous montre une partie du script pour la table "books2" :
![]()
Nous pouvons exécuter une requête sur la table "books2" qui affiche la colonne "id" unique pour chaque ligne
![]()
Nous pouvons maintenant améliorer nos requêtes UpdateXML() et ExtractValue() pour qu'elles agissent sur une ligne individuelle
![]()
Cela nous fournit un ensemble d'exemples de base de bonne qualité que nous pouvons utiliser pour migrer vers le cloud et tester sur Amazon RDS.
Connectez DatabaseSpy au service Amazon RDS dans le cloud
Une fois que vous avez suivi les instructions dans la console de gestion AWS pour créer une instance de base de données sur Amazon RDS, l'assistant de connexion facilite le démarrage avec DatabaseSpy. Sélectionnez simplement l'option MySQL, comme indiqué ici :
![]()
La première fois que vous vous connectez, vous devrez créer un nouveau nom de source de données (DSN). Par la suite, vous pourrez sélectionner le DSN dans une liste en choisissant l'option "Utiliser un nom de source de données existant". Vous pouvez même utiliser le DSN initial lorsque vous vous reconnectez depuis XMLSpy, MapForce ou StyleVision.
![]()
Dans la fenêtre de configuration de la connexion, veuillez saisir les informations suivantes :
- Nom de la source de données : C'est le nom qui sera affiché dans la fenêtre "Projet DatabaseSpy" et dans la liste des sources de données existantes lorsque vous vous reconnecterez.
- Description : Informations à titre indicatif.
- Serveur : Il s'agit du nom du point de terminaison qui figure dans le tableau de bord de votre compte Amazon RDS.
- Port : 3306 – assurez-vous que votre service informatique ne bloque pas ce port avec un pare-feu !
- Nom d'utilisateur / Mot de passe : Il s'agit d'un utilisateur que vous avez configuré dans Amazon RDS.
- Base de données : Le nom de la base de données par défaut que vous avez configuré lors du lancement de votre instance RDS.
![]()
Nous nous sommes connectés à notre base de données cloud Amazon RDS dans le même projet DatabaseSpy que celui que nous avions créé pour le prototype local. Voici une capture d'écran de la fenêtre du projet, montrant les noms des sources de données et les fichiers SQL que nous avons ajoutés à notre projet :
![]()
Avant de créer nos tables et d'exécuter les requêtes, il serait intéressant de vérifier les versions de chaque système. Les captures d'écran ci-dessous montrent une requête qui demande des informations de version pour chaque système. Notez que la barre grise située directement au-dessus de chaque requête indique à quelle connexion de données la commande SQKL est associée.
![]()
![]()
Amazon RDS indique qu'il utilise la version 5.1 du serveur MySQL Community, la même que celle de notre prototype local, ce qui est un signe encourageant !
Migrer le projet local vers le cloud
Nous pouvons ouvrir chacun de nos scripts de création de tables originaux et les exécuter dans la base de données cloud en modifiant la cible d'exécution dans la fenêtre des propriétés
![]()
La barre grise, située en haut de la fenêtre de l'éditeur SQL, indique que la base de données Amazon RDS dans le cloud est la cible de la requête :
![]()
Après avoir créé de la même manière les tables "books" et "books2", nous pouvons exécuter chacune des requêtes SQL dans la base de données cloud. Voici un exemple d'utilisation de la fonction ExtractValue() pour toutes les lignes :
![]()
Requête Concat() pour générer une sortie XML à partir de données non-XML contenues dans une table :
![]()
Exemple d'utilisation de la fonction UpdateXML() pour une seule ligne dans un tableau.
![]()
Extraire une valeur pour une seule ligne :
![]()
Conclusion
Dans chaque test que nous avons effectué, Amazon RDS a fonctionné exactement comme la version communautaire locale de MySQL. Ce comportement est beaucoup plus efficace pour les développeurs, car il leur permet de créer et de tester de nouvelles applications de bases de données dans le cloud, ou d'améliorer des applications existantes, sans encourir les coûts liés aux ressources cloud pour les phases de développement.
Nous avons également vérifié le fonctionnement des fonctions XML de MySQL pour les données XML stockées dans des colonnes de texte dans les bases de données cloud. Nos données XML étaient très limitées : la colonne de texte dans notre table "livres" était limitée à 150 caractères. Cependant, MySQL vous permet de stocker des documents XML beaucoup plus volumineux dans une seule colonne. Chaque table a une taille de ligne maximale de 65 535 octets. Même si votre table utilise une colonne d'index, cela signifie qu'une colonne varchar pour une seule entrée XML peut dépasser 64 Ko. Si vous devez stocker des documents XML encore plus volumineux, MySQL propose les types de données MediumText et LongText, similaires aux BLOB. MediumText peut contenir plus de 16 millions de caractères d'un seul octet, et LongText peut contenir jusqu'à 4 Go. Bien que cela ne soit pas illustré dans cet article de blog, nous avons testé avec succès les fonctions ExtractValue() et UpdateXML() avec les types de données MediumText et LongText.
Lorsque vous devez stocker des fichiers de données XML de cette taille, la création d'expressions XPath pour identifier des éléments individuels peut devenir un défi de développement. L'analyseur XPath inclus dans XMLSpy est un outil précieux qui facilite les tests et le débogage des expressions XPath 1.0 et 2.0. Lorsque vous saisissez une expression XPath dans l'analyseur, XMLSpy l'évalue et affiche l'ensemble de nœuds résultant en temps réel. Cela peut vous faire gagner des heures de débogage en vous aidant à comprendre et à identifier les problèmes liés aux expressions XPath.
Dans les prochains articles de notre blog, nous explorerons d'autres façons dont XMLSpy, MapForce, DiffDog et DatabaseSpy peuvent aider les développeurs à accélérer la création d'applications cloud utilisant Amazon RDS. Nous espérons vous revoir bientôt ! Si vous souhaitez constater par vous-même l'efficacité des outils Altova avec Amazon RDS, téléchargez une version d'essai gratuite de la suite Altova MissionKit.