Bonjour à tous,

Un collègue et moi reprenons actuellement une application en cours de développement par une autre équipe. Nous devons simplement la stabiliser et l'améliorer dans un premier temps et enfin en la prendre entièrement sous notre aile pour y ajouter des fonctionnalités une fois le développement finis.
Au niveau des données, l'application est composée de multiples petit fichiers JSON (une vingtaine, profondeur max de 4, une vingtaine de lignes au maximum) et de 2 "gros" XML (de 160 Kb), le tout embarqué (et pourra aussi être téléchargé à terme). Pour le moment, les données sont parsées à chaque démarrage, ce qui prend de 2 à 8 secondes (selon les tests menées pour le moment). À terme, les informations seraient parsées une seule fois puis enregistrées dans la BDD.

Pour le moment, tout les fichiers sont parsées et seules les informations issues des fichiers JSON sont mis en mémoire.
Comme dit, le parsing seul prend de 2 à 8 secondes en condition normale. Si l'on rajoute l'insertion des données issues de la moitié des fichiers JSON (les autres ne sont pas encore géré), le temps de lancement passe de 2 secondes sur mon Nexus S à 23 secondes (de 8 secondes à 2 minutes sur le HTC Desire de mon collègue, cela empirant vu qu'il met toutes ses applis sur la carte SD).
La gestion de la BDD est mauvaise, c'est un fait, et explique en parti ce temps.

J'en viens donc à notre interrogation, et à la raison du titre de ce sujet (enfin ?) : nous devrons implémenter une recherche sur les données (plein texte et fichiers de correspondance XML requêtes <-> données).
Nous avons donc devant nous 2 (3 ?) chemins :
  • oublier la BDD et utiliser les données mises en mémoire vive
  • revoir toute la gestion de la BDD (le schéma semble être bonne)
  • (une solution hybride des deux)


EDIT : Précision : la Base de données n'est utilisée que pour avoir une copie des données XML. Ensuite, elle reste inchangée et ne servirait plus qu'a de la lecture pour la recherche et l'affichage.

Vu qu'on est chacun partisan d'une méthode différente (mon collègue est en train de faire un comparatif sommaire, je rédige ce sujet pour l'aider), je vous demande vos avis quant à cette problématique.

EDIT : un exemple de fichier à parser : http://greldinard.heliohost.org/hizin/exemple.xml
La recherche ne porterait que sur certaines balises nommées par le client.

Obligatoire de bosser en local.