2011-10-31 1 views
1

On m'a demandé de créer un faux blogue à l'aide d'un système de gestion de contenu assez verrouillé. Je n'ai pas la possibilité d'utiliser des bases de données pour le stockage de contenu, donc je jouais avec l'option d'utiliser XML pour stocker des données sur les articles; des trucs basiques comme la date, le titre, l'extrait, les balises et le contenu et utilisent jQuery pour rendre les pages.Utilisation de XML pour le stockage de données

Les articles ne vont pas être très longs, mais y a-t-il des avantages/inconvénients à créer une telle application?

+0

Il est peu probable que ce soit un problème pour vous, mais nous avons récemment développé une solution comme celle-ci dans mon travail et rencontré un gros problème car nous avons oublié que notre serveur de production était équilibré sur six machines. Un utilisateur mettrait à jour le XML sur un serveur, puis rechargerait, puis serait confus parce que leur XML était maintenant servi à partir d'une machine différente et que leurs modifications ne s'y trouvaient pas. (Enfin, nous l'avons résolu en sauvegardant le fichier XML sur le serveur de test, mais nous étions tous d'accord sur le fait qu'une base de données aurait été la solution si nous avions eu le choix.) – Blazemonger

Répondre

1

Autant que je suis un fan de XML, il semble être un peu d'une réaction réflexe d'utiliser ce sur tout autre format possible en matière de stockage/transmission de données. Une bonne base de données serait toujours une solution préférable, mais si c'est vraiment impossible, essayez d'éviter de tout jeter dans un énorme fichier XML. Stocker un fichier séparé par article avec vos métadonnées obligatoires (date, titre, tags ...) serait un bon début. Alternativement, le contenu de l'article pourrait être intégré dans le XML. Cela se sentirait à la maison avec cela puisque XML était initialement destiné à définir les langages de balisage, même s'il semble que ces jours-ci, vous le trouvez plus souvent utilisé pour la structure de données.

De nombreux fichiers XML plus petits, et peut-être un autre qui effectue une indexation, seraient la solution. Cela se rapproche au moins du partitionnement et de l'indexation qui se déroule dans une base de données. Quoi que vous fassiez, ne créez pas un ou plusieurs documents XML énormes. Sinon, vous reviendrez un jour poser une de ces questions "aidez-moi à analyser un document XML à 1 Go et à court de mémoire" :)

La suggestion de Hunter.ross semble très bien.

1

Vous pouvez certainement utiliser XML pour vos besoins de stockage, mais cela va coûter cher, pas que l'implémentation soit difficile.

Comme vous n'avez pas mentionné votre plate-forme, je suppose que vous travaillez sur .NET! en utilisant XElement, l'utilisation de XML n'est pas difficile à compliquer que juste des requêtes de base de données. D'autre part, la chose que vous voulez atteindre est de frapper beaucoup de temps sur votre performance. Vos fichiers XML seront réécrits chaque fois que vous voulez enregistrer quelque chose et même aller à la récupération, si vous n'envisagez pas de charger votre fichier XML entier en mémoire. Si vous le faites, vous obtiendrez bientôt "Mémoire insuffisante" exception une fois que vos fichiers XML commencent à grossir.

Le coût de mise en œuvre à l'aide de XML est relativement élevé car vous devez passer par le processus manuel de récupération des données de votre fichier XML, où une simple requête de base de données fera de même. Si vous envisagez un autre choix que XML, je vous recommande d'aller avec SQLite, et vous pouvez également lire when to use SQLite. Vous n'avez besoin d'aucune installation de base de données et c'est portable. C'est juste un fichier binaire stocké sur votre serveur et SQLite a API pour presque chaque plate-forme et il a une large gamme de wrappers. C'est plus comme exécuter des requêtes de base de données sur votre fichier de données.

SQLite est juste une autre base de données relationnelle comme SQL Server, MySQL, etc et vous pouvez effectuer vos toutes sortes de requêtes SQL que vous connaissez, et vous pouvez également utiliser avec Entity Framework, NHibernate ou tout autre ORMs.

La performance ne va pas être comme SQL Server/MySQL mais vous pouvez server des milliers de visiteurs de votre site avec ce SQLite.

Questions connexes