IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Accès Xml ou base de données


Sujet :

ASP.NET

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Par défaut Accès Xml ou base de données
    Bonjour,

    Je voudrait mettre en place une facilité de saisie de codes postaux , ville et pays dans un formulaire web de saisie de données.

    Je me suis tourner vers un control toolkit ajax Autocomplete qui va me ramener "n" (J'ai choisis 10) enregistrements a chaque fois..

    Je vois deux types de stockage : Xml ou base de données(sql server).

    Quel serait le plus performant?

    Sachant que je vais rechercher dans ces stockages avec par exemple l'entrée : "Valen"

    ca va ramener : Valence,Valenciennes etc.....

    Merci d'avance

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Ben ça dépend, il n'y en a pas un qui est intrinsèquement plus performant que l'autre... Ca dépend de la quantité de données, de si la base de données est locale ou distante, etc.

    L'idéal dans un cas comme ça serait une base de données locale, pour tirer parti de l'indexation afin d'accélerer la recherche : en effet, si tu dois chercher parmi toutes les communes de France, soit environ 36000, la recherche dans un gros fichier XML risque d'être un peu longue... Par contre, si c'est une base de données distante, il faut voir si les temps de réponse et de transfert réseau ne sont pas trop importants, auquel cas le XML peut devenir plus intéressant...

    Donc, en résumé, pas de réponse toute faite, il faut voir ce qui correspond le mieux à ton besoin et à ton architecture technique

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Par défaut
    cc'est dans le cas d'un site web donc la base de donnée serait distante enfin sur le serveur.
    donc si je comprends il faudrait opter pour le fichier Xml.

  4. #4
    Membre chevronné
    Inscrit en
    Décembre 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Décembre 2008
    Messages : 256
    Par défaut
    Citation Envoyé par p_mehdi Voir le message
    cc'est dans le cas d'un site web donc la base de donnée serait distante enfin sur le serveur.
    donc si je comprends il faudrait opter pour le fichier Xml.
    Ben pas forcément, parce que de toutes façons le fichier XML sera sur le serveur aussi.

  5. #5
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Salut,

    Un fichier xml est interessant, si tu as plusieurs serveur IIS. Tu peux dupliquer ce moteur et ainsi répartir la charge de la recherche.
    Si tu utilise les fichiers xml il faut évidement considérer la taille du fichier. Plus le fichier est gros plus ça prend de temps. Le parcours d'un fichier xml avec XPath peut être long car il navigue dans le fichier. Il peut être nécessaire de le diviser. Ainsi, l'accès à un fichier des villes commençant par "v" sera rapide.
    Une base de données sera plus rapide si elle travaille sur des champs indexés.

    Personnellement j'opterai tout de même pour un base SQL avec une gestion du cache dans IIS. Avec une architecture 3-tiers tu pourras facilement changer la source de données (SQL <-> Xml).

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par p_mehdi Voir le message
    c'est dans le cas d'un site web donc la base de donnée serait distante
    Ben pas forcément... si la base de données est hébergée sur le serveur web, du point de vue du serveur web elle est locale.

    Mais de toutes façons, si elle est sur une autre machine du même réseau, la communication avec la base est pas forcément handicapante... faut faire des tests pour voir quelle est la meilleure solution

    Sinon, une autre possibilité : si ce sont des données "statiques", qui changent rarement, tu peux les charger une seule fois dans une liste ou une DataTable et stocker ça dans une variable d'application, ça t'évite de les recharger à chaque fois à partir de la base ou du fichier XML.

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Par défaut
    D'accord je comprends mieux vos explications.

    Par contre le stockage dans une datatable ca veut dire que cette datatable est construite au démarrage de l'application ( dans le Global asax ? )

    Ca ne pose aucun problème de stocker beaucoup de donner dans les variables d'application ?

    Physiquement c'est stockée ou une variable d'application ( dans la ram du serveur ?)

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par p_mehdi Voir le message
    Par contre le stockage dans une datatable ca veut dire que cette datatable est construite au démarrage de l'application ( dans le Global asax ? )
    Pas forcément au démarrage, ça peut être chargé la première fois que tu en as besoin ("lazy loading")

    Citation Envoyé par p_mehdi Voir le message
    Ca ne pose aucun problème de stocker beaucoup de donner dans les variables d'application ?

    Physiquement c'est stockée ou une variable d'application ( dans la ram du serveur ?)
    Oui, c'est stocké en RAM. Donc ça peut poser problème si la quantité de données est très importante, mais à mon avis dans ton cas c'est pas si énorme (36000 communes, en supposant que chacune prend 100 octets, ça fait à peu près 3.6Mo...)

  9. #9
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Sinon, une autre possibilité : si ce sont des données "statiques", qui changent rarement, tu peux les charger une seule fois dans une liste ou une DataTable et stocker ça dans une variable d'application, ça t'évite de les recharger à chaque fois à partir de la base ou du fichier XML.
    Il faudrait tester les performances et la durée de vie, mais dans ce cas je dirais singleton. Cela permet de garder le type de la donnée. Une variable d'application doit être transtypée il me semble.
    "Winter is coming" (ma nouvelle page d'accueil)

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Immobilis Voir le message
    Cela permet de garder le type de la donnée. Une variable d'application doit être transtypée il me semble.
    Je comprends pas ce que tu veux dire... le type n'est jamais perdu. Oui, il faudra faire un transtypage, mais en quoi est-ce un problème ?

  11. #11
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Oui, il faudra faire un transtypage, mais en quoi est-ce un problème ?
    Aucun si cela ne consomme pas trop de ressources en production.
    S'agissant de données en cache il faut faire une conversion à chaque accès:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.Data.DataTable dt = (System.Data.DataTable)System.Web.HttpContext.Current.Cache.Get("MaDataTableEnChache");
    Sur une grande quantité de données combien de temps et quelles ressource cela prend-il?

    Au contraire, les propriétés d'un singleton dont déjà typées.

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  12. #12
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Dans ton exemple, l'objet est déjà de type DataTable, ce n'est pas une "conversion" mais un simple cast pour dire "traite cet objet comme un DataTable". Un cast ne consomme quasiment pas de ressources...

  13. #13
    Membre expérimenté
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Par défaut
    Merci pour toutes ces infos je vais opter pour une datatable au niveau application.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Accés a une base de donnée sous trouvant sur un PC distant
    Par haganidjamel dans le forum Connexion aux bases de données
    Réponses: 2
    Dernier message: 15/03/2006, 09h38
  2. [base de donnée] accée a la base de données sur eclipse
    Par khalidlyon dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 07/04/2005, 22h12
  3. Manipulation de XML sur base de données
    Par psyche dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 02/11/2004, 14h07
  4. Réponses: 13
    Dernier message: 11/08/2004, 11h06
  5. [EJB] Accès concurrents à la base de données
    Par cameleon2002 dans le forum Java EE
    Réponses: 10
    Dernier message: 23/09/2003, 11h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo