Je travaille depuis quelques années sur des applications Web basées sur des bases de données et j'ai récemment entrepris un projet impliquant un CMS compatible XML. Cela m'a amené à réfléchir à l'utilisation de XML / XSLT en général et dans quelles situations il serait plus utile que l'approche que j'ai toujours utilisée, qui consiste à stocker toutes mes données dans une base de données (My) SQL puis à utiliser PHP / Python / etc. pour l'utiliser sur le Web au besoin.
Il y a évidemment quelque chose que je ne "reçois" pas ici .. Quelqu'un pourrait-il me donner des exemples d'applications où le stockage des données dans des fichiers XML plutôt que dans une base de données serait préférable?
Réponses:
Pour citer ce livre (XML efficace: 50 façons spécifiques d'améliorer votre XML):
Je pense que cela résume les choses, même si c'est un peu brutal. XML est un format d'échange de données. On peut avoir des bibliothèques d'analyse XML qui peuvent interroger un DOM avec des expressions XPath, mais ce n'est pas la même chose qu'un SGBD. Vous pouvez créer un SGBD avec une interface DOM / XPath, mais pour obtenir des propriétés ACID ou évoluer vers de grands ensembles de données, vous devez implémenter un moteur de SGBD et un format de données avec des index, la journalisation et d'autres artefacts d'un SGBD - ce qui (par définition) fait c'est autre chose que XML.
la source
Utilisez XML pour créer des fichiers qui doivent être envoyés à d'autres applications. XML est plus adapté comme format d'échange de données que comme format de stockage de données.
Le lien suivant n'est pas mal à décrire lors de l'utilisation de XML: Pourquoi utiliser XML?
la source
SQL est de bonnes données tabulaires - des données qui s'intègrent facilement dans des lignes et des colonnes. XML est bon pour les données hiérarchiques - des données qui ont plusieurs niveaux de tailles différentes.
SQL est bon pour le stockage et la recherche. XML est bon pour la transmission et le formatage.
la source
1) Lorsque vous devez échanger vos données avec d'autres. XML est la " lingua franca " du Web - à peu près tout le monde peut le lire et l'interpréter, contrairement à un fichier de base de données.
2) Lorsque votre volume de données est petit et que vous n'avez pas à effectuer de requêtes complexes contre lui. Les fichiers XML sont utiles pour des tâches telles que le stockage de configurations ou de modèles de documents.
3) Lorsque vous n'avez pas beaucoup d'écrivains qui essaient d'accéder aux mêmes données. Les bases de données SQL impliquent des mécanismes de concurrence qui fonctionnent pour vous en coulisse. Les bases de données SQL peuvent prendre en charge les index pour la récupération rapide d'informations sur de grands ensembles de données ...
la source
Choses pour lesquelles j'utilise XML:
Il n'y a pas beaucoup de chevauchement entre ces cas d'utilisation et les cas d'utilisation d'une base de données. Certains, mais pas beaucoup.
Ironiquement, là où je fais le plus grand usage de XML pour le moment, c'est dans une application de bureau qui crée un ADO DataSet en mémoire et utilise les méthodes WriteXml et ReadXml du DataSet pour le conserver et le récupérer. J'utilise ADO car il est beaucoup plus facile de créer dynamiquement un modèle de données défini par méta-information en utilisant ADO que d'implémenter mon propre modèle objet pour la tâche.
Voici donc un cas qui semble utiliser XML comme base de données. Mais je ne le suis vraiment pas. J'utilise un modèle objet qui implémente de nombreuses fonctionnalités de type base de données, et j'utilise XML comme format de persistance.
la source
Je pense qu'il existe de nombreuses applications commerciales qui utilisent largement XML comme support de stockage. Je l'ai fait pour une application de planification de projet, où l'utilisateur stocke chaque projet dans son propre fichier. L'application vit sur une clé USB et ne nécessite aucune installation. Toutes les données sont extraites du XML et travaillées en mémoire, donc getRecord (id) est très rapide.
Donc ma réponse serait ... lorsque les données sont suffisamment petites pour être conservées en mémoire, une base de données est en train de tuer.
la source
Ne fais pas ça.
Essayez SELECT auteur FROM livre
la source
Chaque fois que vous n'avez pas le luxe d'avoir une base de données (pensez aux applications mono-utilisateur) ou que vous avez besoin d'un format de stockage très léger.
Comme l'a mentionné l'affiche précédente, un format d'échange.
la source
XML et RDMS peuvent être utilisés comme banques de données, mais chaque implémentation a ses propres avantages et inconvénients.
L'utilisation de XML pour stocker des données pour une application Web n'est généralement pas un gros problème jusqu'à ce que vous commenciez à traiter de grandes quantités de données ou que vous décidiez de découvrir d'autres informations à partir de vos données (exemple: exploration de données). En d'autres termes, le stockage de grandes quantités de fichiers XML pour une source de données n'est pas très évolutif, mais il facilite le déplacement des données. XML peut également être utilisé pour sérialiser des objets complexes dans un format non relationnel, ce qui pourrait éliminer le besoin d'un ORM si vous pouvez sérialiser / désérialiser vos objets directement à partir du XML
Les SGBDR (bases de données) sont généralement plus évolutifs, offrent une meilleure prise en charge de la concurrence et sont beaucoup plus rapides lorsque vous travaillez avec de grandes quantités de données. Le modèle relationnel facilite l'exploration des données par la suite. Les bases de données souffrent de l'inadéquation de l'impédance relationnelle objet ( http://en.wikipedia.org/wiki/Object-Relational_impedance_mismatch ) qui peut vous obliger à écrire du code laid ou à utiliser des ORM complexes.
la source
J'irais si j'ai des bases de données mysql limitées sur mon hôte, alors je verrais l'opportunité d'utiliser XML comme magasin de données.
la source
Voici un exemple d'utilisation de XML avec SQL: Les utilisateurs authentifiés lisent et écrivent des données dans diverses bases de données, qui ne sont pas toutes le même SGBD. Les utilisateurs de la société A utilisent les données d'une base de données SQL Server locale. Les utilisateurs de la société B utilisent les données d'une base de données Oracle distante. Etc. Une douzaine de bases de données différentes, chacune avec des schémas légèrement différents pour les mêmes données de base.
Le développeur du site Web n'a pas la possibilité de créer des procédures stockées sur les bases de données distantes. SQL doit être envoyé directement de l'application Web à la base de données. Étant donné que chaque base de données a une syntaxe et un schéma SQL légèrement différents, il est nécessaire d'utiliser un SQL différent pour chacune des 12 bases de données pour la même opération (SELECT, INSERT, etc.).
L'un des choix pour incorporer les instructions SQL dans l'application Web consiste à les placer dans des fichiers XML. Chaque fichier XML contient l'ensemble des instructions SQL pour l'une des douzaines de bases de données. Le code détermine à quelle base de données accède l'utilisateur connecté et récupère le SQL approprié à partir du fichier XML spécifié.
Tout comme avec les procédures stockées, le SQL du fichier XML peut être mis à jour sans arrêter ni recompiler l'application.
la source
Certaines applications utilisent des fichiers XML pour stocker la configuration, je préfère utiliser SQLite pour le faire.
la source
Je n'aurais jamais aucun type de XML pour stocker mes données.
Nous utilisons les transformations XSLT comme couche d'abstraction de données dans notre application SOA. Tous les objets s'envoient des données en XSLT, il n'y a donc qu'un seul langage qu'ils doivent comprendre. Sauf pour le connecteur de base de données, qui doit pouvoir transformer les données en SQL, pour les envoyer à la base de données.
De cette façon, la génération de chaînes SQL n'est pas distribuée sur un million d'objets dans votre application. Rend la maintenance beaucoup plus facile.
la source