Comment stocker des données XML dans des tables Oracle
Dans notre entreprise, nous avons besoin de recevoir et de traiter des milliers de fichiers XML par jour et tous ces fichiers sont dans le même format. Nous tenons à stocker ces données dans des tables oracle et de la réserve de la relation hiérarchique de ces données et puis on peut les interroger à l'aide de SQL traditionnelles et de poursuivre l'analyse. Quelle est la meilleure façon de le faire? Est XML DB le bon choix?
Mise à jour:
Actuellement, je pense à l'aide de XML DB avec les données stockées dans le stockage structuré. Donc, je comprends que je peux définir un Schéma XML avec des annotations et je sais que les étapes mais j'aimerais avoir confirmé des réponses aux questions suivantes:
- Je peux annoter un Schéma XML pour créer plusieurs tables pour la relation parent-enfant? Je voudrais que les données soient stockées dans des tables relationnelles, pas des objets.
- Puis-je définir les clés Primaires, clés étrangères pour tous ces tableaux? Il n'est pas très clair pour moi comment Oracle de maintenir la relation parent-enfant dans ces tableaux.
- Quelqu'un peut-il me montrer un exemple?
OriginalL'auteur user981848 | 2012-05-31
Vous devez vous connecter pour publier un commentaire.
Vous voulez certainement commencer avec XMLDB.
XMLDB est tout un univers de fonctionnalités et de caractéristiques à l'intérieur de lui-même.
Très brièvement, vous avez trois options de stockage w/XMLDB et XMLTYPE de données.
Vous pouvez stocker:
1.) Dans un CLOB type de données. Si vous faites cela, le XML se trouve juste dans la base de données, et c'est un MÉTIER. Vous ne pouvez pas indexer, rechercher, etc. La base de données est un peu un seau, et que vous enregistrez le fichier XML.
2.) XML BINAIRE: C'est la dernière option, introduit dans 11gR2. Cela permettra de marquer et de compresser le fichier XML, et de les stocker dans un encodés dans un format binaire. L'avantage ici, c'est que vous pouvez ensuite utiliser l'Oracle du Texte et XMLINDEX domaine indices, index et rechercher du contenu. C'est l'option que j'ai le plus d'expérience avec. Nous avons un milliard de documents, de taille moyenne, environ 12k, stockée dans un 11gR2 base de données. Cela fonctionne vraiment bien pour nous.
3.) XML pour le mappage relationnel: Vous définissez un schéma relationnel pour stocker les données dans votre schéma XML, et de définir comment les éléments XML de la carte à laquelle relationnel des tables et des champs. Sur l'ingestion, le XML est décomposé et stockées dans un classique du modèle relationnel. Vous pouvez ensuite rechercher, trier, index, comme toutes les bases de données traditionnelles.
Cela dépend vraiment de ce que vous voulez faire, qui XML modèle de stockage que vous choisissez d'aller avec.
Vous pouvez demander à vos questions sur l'Oracle XMLDB forum. Il est très actif, et a certaines personnes qui sont beaucoup plus informés sur le sujet que je suis.
https://forums.oracle.com/forums/forum.jspa?forumID=34
Espère que ça aide.
Réponse à la mise à Jour 1:
Je n'ai que l'expérience avec XML Binaire option de stockage, désolé. Je pense que la vérification de la XMLDB Exemple de Code sur OTN, serait utile.
Voir:
http://www.oracle.com/technetwork/indexes/samplecode/xmldb-sample-523617.html
Je vous remercie beaucoup. 3) est ce que je pensais mais j'avais quelques questions à ce sujet. Votre post a répondu à mes questions sur mon esprit, mais je veux encore clairement le confirmer. Je vais l'ajouter à mes questions du post original.
OriginalL'auteur Mark J. Bobak
Il y a un bon livre, je l'ai utilisé et il m'a aidé à travers toutes les questions fondamentales. C'est sur Oracle 11g, mais il est également utilisable avec la 12c.
Il est appelé "la Construction d'Oracle XML DB Applications", dirais-je, de l'acheter et de la réserve de deux jours pour la lecture et l'essayer.
OriginalL'auteur Bert Verhees