Page 1 sur 1

XML ou base de données ?

Posté : 13 avr. 2009, 01:47
par supercanard
Bonjour,

Ayant comme beaucoups de monde l'habitude de travailler avec une base de données, je me demandais si travailler avec des fichiers XML ne serais pas suffisant pour certains projets.
Je dois avouer que je ne peut pas répondre à cette question car je ne travaille presque jamais avec du XML.

Pourtant je me disais que dans le cadre du developpement d'un simple blog, avec des fonctions de base tel que la gestion de catégories, d'articles et de commentaires, 3 fichiers XML seraient largement suffisant. A la manière d'une base de données l'un d'entre eux pourrait contenir les catégories, l'autre les billets et le dernier les commentaires. Les 3 fichiers pourraient être liés de la même façon qu'un shéma relationel grâce à des id.

Maintenant je ne sais pas si il serait aussi simple en XML d'aller piocher les billets et les commentaires appartenant à une categorie, qu'on pourrait le faire en SQL avec une requête et une simple jointure, ou que d'aller modifier un noeud est aussi simple que de faire un update en SqL ?
Conçernant les performances c'est pareil, je me pose la question. Certaines opérations seraient peut être plus simple à faire et plus rapide en SQL, mais d'aller lire des fichiers sur le serveur ne serait pas plus rapide dans la majorité des cas ?

Merci d'avance pour vos réponses

Posté : 13 avr. 2009, 10:14
par Victor BRITO
Le XML étant un langage de structuration de données, il peut convenir au stockage de données pour lesquelles on recours également aux SGBD.

Ensuite, pour piocher les données que tu veux, il n'y a aucune difficulté particulière, surtout depuis l'apparition d'extensions comme SimpleXML. En revanche, la manipulation des fichiers XML risque d'être un peu laborieuses si tu veux reproduire l'équivalent de certaines requêtes SQL complexes (jointures, clauses WHERE multiples...). Mais, ce n'est pas insurmontable.

Posté : 13 avr. 2009, 13:23
par Ryle
C'est tout à fait possible en effet et pas forcément compliqué techniquement, mais comme tu le précises toi même, c'est à réserver à "certains projets". Ca va dépendre du contexte, des besoins, de la volumétrie, de la charge etc. :)

A mon avis, tu risques de très vite te retrouver confronté à pas mal de problèmes qu'un sgbd saura gérer nativement : ajouter un enregistrement dans une bdd est un simple ajout, alors que dans ton fichier xml, il faudra le réécrire complètement.
Bien sur, tu peux simplement le compléter sans le réorganiser, mais dès lors, retrouver les commentaires 11, 27 et 4623 qui répondent au billet consulté prendront nettement plus de temps que dans ta base où ils seront indexés et retrouvés immédiatement.
Il te faudra également gérer les accès simultanés aux fichiers (si deux commentaires sont postés en même temps)...

Bref, à chacun son métier selon moi.
Le xml sera idéal pour décrire tes données (pour des échanges entre deux applications indépendantes, ou simplement pour lire les données de ma base, les encapsuler en xml et les renvoyer à des scripts ou des classes métier, qui les formatteront en html, en pdf, ou les traiteront avec ajax). Le SGBD s'occupera quant à lui de la gestion des données, il en a non seulement l'habitude, mais en plus il a un très bon cv pour ce type de boulot ;)