56 votes

Xml ou Sqlite, Quand abandonner Xml pour une base de données ?

J'aime beaucoup Xml pour sauvegarder des données, mais quand est-ce que sqlite/base de données devient la meilleure option ? par exemple, quand le xml a plus de x ou est supérieure à y MB ?

Je suis en train de coder un lecteur rss et je crois que j'ai fait le mauvais choix en utilisant xml plutôt qu'une base de données sqlite pour stocker un cache de todos les éléments de l'alimentation. Il y a des flux qui ont un fichier xml de ~1mb après un mois, un autre a plus de 700 éléments, tandis que la plupart n'ont que ~30 éléments et ont une taille de ~50kb après un mois. plusieurs mois.

Pour l'instant, je n'ai pas l'intention de mettre en place un plafond, car j'aime pouvoir effectuer des recherches dans tous les domaines.

Donc, mes questions sont :

  1. Quand la surcharge de sqlite/bases de données est-elle justifiée par rapport à l'utilisation de xml ?
  2. Est-ce que les quelques gros fichiers xml justification suffisante pour la base de données lorsqu'il y a beaucoup de petits même les plus petites grandiront avec le temps ? (une longue long temps)

actualisé (plus d'infos)

Chaque fois qu'un flux est sélectionné dans l'interface graphique, je recharge tous les éléments du fichier xml de ce flux.

Je dois également modifier l'état de lecture/non-lu, ce qui semble très compliqué lorsque je parcours en boucle tous les nœuds du fichier xml pour trouver l'élément et le mettre en lecture/non-lu.

5voto

typicalrunt Points 636

Je n'utiliserais pas XML pour stocker des éléments RSS. Un lecteur de flux effectue des mises à jour constantes au fur et à mesure qu'il reçoit des données.

Avec le XML, vous devez d'abord charger les données à partir d'un fichier, les analyser, puis les stocker pour faciliter la recherche, la récupération et la mise à jour. On dirait une base de données...

De plus, que se passe-t-il si votre application se plante ? Si vous utilisez XML, quel est l'état des données dans le fichier XML par rapport aux données en mémoire. Au moins avec SQLite, vous bénéficiez de l'atomicité, vous êtes donc assuré que votre application démarrera avec le même état que lors de la dernière écriture dans la base de données.

5voto

Bradley Harris Points 624

Le XML est utilisé de préférence comme format d'échange lorsque vous devez déplacer des données de votre application vers un autre endroit ou partager des informations entre applications. Une base de données devrait être la méthode de stockage préférée pour presque toutes les applications, quelle que soit leur taille.

5voto

sieben Points 967

J'ai fait la transition vers SQLite et je me sens beaucoup mieux en sachant que c'est dans une base de données.

Il y a beaucoup d'autres avantages à cela :

  • L'ajout de nouveaux éléments est très simple
  • Triage par colonnes multiples
  • Suppression des doublons avec un index unique

J'ai créé deux vues, une pour les éléments non lus et une pour tous les éléments. Je ne sais pas si c'est la meilleure façon d'utiliser les vues, mais je voulais vraiment essayer de les utiliser.

J'ai également évalué le xml par rapport à sqlite en utilisant la fonction Chronomètre et le sqlite est plus rapide, mais il se peut que ma façon d'analyser les fichiers xml ne soit pas la plus rapide. .

  1. Petits # articles et taille (25 articles, 30kb)
    • ~1,5 ms sqlite
    • ~8.0 ms xml
  2. Nombre important d'articles (700 articles, 350kb)
    • ~20 ms sqlite
    • ~25 ms xml
  3. Fichier de grande taille (850 éléments, 1024kb)
    • ~45 ms sqlite
    • ~60 ms xml

3voto

Mitchel Sellers Points 38352

Pour moi, cela dépend vraiment de ce que vous en faites, du nombre d'utilisateurs/processus qui doivent y accéder en même temps, etc.

Je travaille tout le temps avec des fichiers XML volumineux, mais il s'agit d'éléments à traitement unique, de type importation, pour lesquels le multi-utilisateur ou la performance ne sont pas vraiment des besoins.

Il s'agit donc d'un équilibre.

2voto

Mostlyharmless Points 2050

Si vous avez besoin de changer d'échelle, utilisez des bases de données.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X