Modélisation: Xml vs. Base de données relationnelle
Je me demande si il y a de meilleures pratiques pour choisir entre un système doit être modélisé à l'aide de XML et quand il doit être modélisé à l'aide d'une base de données relationnelle (je sais que vous pouvez stocker des données XML dans une base de données, mais il y a une énorme différence entre la modélisation d'un système à l'aide normalisé db tables et la modélisation d'un système à l'aide de XML-Schema). Pour souci du concret, disons que vous avez été des exercices de modélisation dans une salle de sport. Le "bench press" est en fait une famille de exericses, pas un seul exercice. Vous pouvez vous allonger sur un banc, ou un ballon. Vous pouvez forcer vous serez de retour à la télévision ou à la permettre à de la tricherie. Vous pouvez utiliser des haltères, haltères, des câbles ou une machine universelle. Si vous utilisez des haltères, vous pouvez alterner les bras ou de pousser simultanément. Vous pouvez avoir une incliné, décliné ou une surface plane. Ma pensée est que, en raison de la complexité (et la possible complexité que je n'ai pas encore penser) que cela devrait être modélisées à l'aide de xml. Est-ce une bonne évaluation? Quels sont les autres facteurs importants doivent être pris en compte?
Addendum: Quand j'ai dit que XML, l'une des technologies que j'avais dans le dos de mon esprit était RDF (même si je ne souhaite pas limiter la discussion), qui semble avoir des avantages et des inconvénients par rapport à la mise en œuvre de la conception dans les tables de base de données. Je ne suis pas sûr si le général antipathie certains utilisateurs se sentent vers XML étendent tout le chemin à RDF (peut-être), mais peut-être que contribuer à orienter la conversation un peu.
source d'informationauteur Daniel
Vous devez vous connecter pour publier un commentaire.
Votre exemple d'exercice peut être modelé dans de nombreuses façons. Pour certains, l'expérience et la sagesse sur la question de savoir quand xml du modèle hiérarchique présente un avantage, lire Ron Burrett:
http://www.rpbourret.com/xml/XMLAndDatabases.htm
Il y a des cas où natif xml DBs montrer les énormes avantages du Rdb lorsque le contenu stocké est semi-structuré. @Smout, es qu'il est plus facile et plus sûr pour stocker de la clientèle-contrat-les données des clients dans un RDB-mais ce qui se passe quand vous devez également stocker le contrat?
RDF contraste avec les deux modèles relationnels et avec xml des modèles. RDF est conçu pour un "monde ouvert" de la représentation de données dans laquelle vous ne pouvez jamais être sûr que vous savez tout à l'heure que vous avez à calculer. Le fait que RDF peut être exprimé en xml est pratique, mais accessoire. Il a d'autres expressions.
Faire de la lecture chez EMC Technologies XML et MarkLogic.
Dans les années 1960, les systèmes de gestion des données ont été inventés/conçu/élaboré, qui étaient toutes basées sur l'idée que les données peuvent être organisées de façon hiérarchique. IMS est l'un d'eux. Les erreurs ou les lacunes/faiblesses de ces systèmes est immédiatement devenu clair pour tout le monde de manière intensive à l'aide (d'une part, ils ont tendance à conduire à "interroger les préjugés": dans les systèmes hiérarchiques, il est souvent facile de requête de laquelle il existe des contrats, pour un client donné, et dans le même temps presque impossible de requête pour laquelle les clients sont impliqués dans un marché donné).
Toutes ces lacunes ont finalement mené à l'invention du modèle relationnel.
Donc, si vous voulez savoir si XML est approprié comme une solution pour TOUT PROBLÈME de GESTION des DONNÉES que ce SOIT, demandez-vous ceci : "est XML de nature hiérarchique ou pas ?".
Le succès de XML dans le marché prouve la justesse de l'observation que "ceux qui ne connaissent pas l'histoire sont condamnés à la répéter".
En général, le XML est juste temporaire format de fichier pour envoyer des données d'un système à l'autre. Ou pour stocker un petit ensemble de données, comme des options de configuration et un peu plus de données. Si vos besoins en matière de données sont de petite taille et que vous avez affaire à un seul utilisateur de la situation, XML sera très bien.
Si vous avez à traiter avec un environnement multi-utilisateur, vous pouvez toujours utiliser le langage XML, mais vous avez besoin pour créer un complexe de la couche de gestion autour d'elle, gardant des traces de modifications par tous les utilisateurs et, fondamentalement, l'ajout de beaucoup de fonctionnalité multi-utilisateurs qu'une normale SGBDR offre en standard.
Si vous avez beaucoup de données, il y a un risque que votre fichier XML devient trop gros. La norme XML est un peu gonflé et si vous avez à travailler avec les fichiers XML de 500 MO chacun, j'espère que vous avez beaucoup, beaucoup de patience.
Il y a, bien sûr, d'autres alternatives. J'ai créé un simple navigateur web, ce qui permettrait de télécharger une page web, d'en extraire toutes les Url en elle et puis répétez cette action pour chaque URL. Il a utilisé environ 20 fils qui étaient tout de chargement des pages et le nombre d'Url permettrait de croître dans les millions. Je voulais éviter de téléchargement d'une seule URL par deux fois, donc j'ai eu de filtrer les doublons. À l'aide de XML serait un cauchemar, compte tenu de la quantité de données. À l'aide d'une base de données a été exagéré, car j'avais besoin d'une seule table avec un champ unique: URL. J'ai donc écrit un spécial algorithme de hachage et de créer mon propre fichier de la base de hachage table de la solution. C'était vraiment trop rapide, la vérification de plusieurs milliers d'URL par seconde, si elle n'avait pas à télécharger les pages...
Avec des situations de ce genre d'exercice, je voudrais commencer par la création d'un simple schéma XML en utilisant certains outil de modélisation pour XML. (Altova est XMLSpy est bon à ce sujet). Quand je pense à mes données cadrerait bien dans ce XSD, je commence à créer une base de données, où chaque élément sera converti en un tableau. En conséquence, je voudrais avoir un bon, de base de données relationnelle en plus de certains éléments de définition pour un format XML qui peut être utilisé pour importer/exporter les mêmes données de la base de données.
L'exercice de votre exemple est bon, mais je pense que vous arrivez à la mauvaise conclusion.
Je pense que cette conclusion est fondée sur la mauvaise hypothèse que XML fournit de plus la souplesse de modélisation que le modèle relationnel. En fait (comme Erwin Smout habilement décrit), le modèle relationnel est, par nature, plus souple que le XML, parce que le XML est strictement hiérarchique, alors que le modèle relationnel permet plusieurs-à-plusieurs relations de complexité arbitraire.
XML pourrait être plus souple au moment de l'exécution si vous n'avez pas besoin d'un strict schéma et que vous voulez être en mesure de stocker à peu près n'importe quoi. Mais alors nous ne sommes pas vraiment parler de modélisation plus.
Comment sur "none of the above"?
Je voudrais tout d'abord le modèle du Domaine à l'aide d'une modélisation conceptuelle de l'outil comme NORMA. Cela permettrait de vous concentrer sur le modèle, jusqu'à ce que vous avez terminé. À ce point, NORMA pouvez générer DDL pour plusieurs bases de données populaires, ainsi que d'un schéma XML.