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

Autres SGBD Discussion :

Choix entre XML et une base de données relationnelle


Sujet :

Autres SGBD

  1. #1
    Membre régulier
    Inscrit en
    Mars 2003
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 217
    Points : 73
    Points
    73
    Par défaut Choix entre XML et une base de données relationnelle
    Bonjour,
    Je suis en train de me poser la question sur le choix entre l’utilisation d’une base données ou de XML.
    Mon projet concerne la création de règles qui serviront dans la RH. Ces règles permettent de calculer les heures supp, les primes,… une règle est composée de condition, d’action. Une condition peut être simple ou complexe (groupement d’autres règles simple). La question que je me pose est il bénéfique d’utiliser XML dans le stockage de l’information ou une base de données relationnelle?
    La recherche d’information dans un fichier XML est assez lente comparée à une base de données relationnelle. Mais l’imbrication de la condition (condition complexe) n’avantage t-il pas le fichier XML ?
    Je sollicite votre expertise pour m’aider à faire le choix entre un fichier XML et une base de données. C’est surtout du coté de la performance qui est important.
    Actuellement, je combine les deux outils c'est-à-dire, j’utilise une base de données relationnelle où je stocke mes informations sur les variables, les actions,les conditions, les règles sous format XML.
    Je vous remercie à l’avance de votre aide

  2. #2
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Je suis curieux de savoir quel schéma de BDD tu proposes pour stocker des règles. En fonction de ta réponse, on pourra sans doute te donner notre avis.
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 736
    Points : 52 447
    Points
    52 447
    Billets dans le blog
    5
    Par défaut
    Vous pouvez parfaitement définir une structure arborescente dans votre modèle de données afin de représenter une règle qui en englobe d'autres. Pour cela vous pouvez utiliser des requêtes récursives ou bien le mode intervallaire de représentation des arborescences.
    Sur ces deux éléments, consultez les papiers que j'ai écrit :
    http://sqlpro.developpez.com/cours/s...te-recursives/
    http://sqlpro.developpez.com/cours/arborescence/

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 215
    Points : 558
    Points
    558
    Par défaut
    A priori, je dirais que XML est à réserver à un fichier d'exportation, pour passer des données d'un programme à un autre, ou bien à des données qui ne doivent pas être (souvent) modifiées. Dans les deux cas, il ne faut pas non plus que le volume de données dans le fichier soit trop important.

    Et pour les données dont la représentation est plus simple en XML, la solution de mettre du XML en DB n'est pas mauvaise, mais là non plus il ne faut pas en abuser. Il sera toujours plus efficace (même si p-e moins simple à mettre en place) d'avoir les champs en DB plutôt qu'un XML à décoder.

  5. #5
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    pour la sérialisation de données hiérarchiques, j'aurais tendance à favoriser XML. Il y a tout un ensemble de technologies conçues pour permettre de requêter (XPath, XQuery), transformer (XSLT), valider (W3C XML Schema, Relax NG), manipuler (DOM) des données dans ce format, de manière plus simple qu'avec une base de données relationnelle. Si les performances sont un problème, il existe des bases de données natives XML (eXist, XIndice) offrant des possibilités d'indexation et de cache.

    Mais ce n'est qu'une tendance, dans un projet complexe, comme cela semble être le cas ici, il y a bien d'autres paramètres à considérer.

    Si le but est d'externaliser hors de l'application les règles métiers et de créer un moteur de règles, il y a peut-être une autre possibilité, mais qui n'a plus grand chose à voir avec les bases de données ; ce serait de modéliser les régles dans un langage de script pouvant être interprété par l'application principale, à l'instar de ce qui existe pour Java 6 et Javascript (il y a d'autres langages de script disponibles).
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  6. #6
    Membre régulier
    Inscrit en
    Mars 2003
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 217
    Points : 73
    Points
    73
    Par défaut
    Une règle est composée d’une et une action et une et une condition
    Règle(IDRègle, NomRegle, …, #IDAction,#IDCondition)
    Une action est composée d’une et une variable
    Action(IDAction,NomAction,…,#IDVariable)
    Variable
    Les données sur la variables peuvent être modifiées en table variable
    <Variable IndexVariable="1" Type="F">
    <UnitMeasure></UnitMeasure>
    <CodeName>JOUR</CodeName>
    <ListSource>
    <List>Dimanche;Lundi;Mardi;Mercredi;Jeudi;Vendredi;Samedi;</List>
    <TableName></TableName>
    <CodeField></CodeField>
    <DescField></DescField>
    </ListSource>
    <Meta>
    <Name>Jour de la semaine</Name>
    <Comment>
    Kit
    initialisation </Comment> <Category> Condition </Category> <CreatedBy> Herivola </CreatedBy>
    Condition
    <Condition IndexCondition="6" Type="M">
    <IndexConditions>
    <IdCond>1</IdCond>
    <IdCond>2</IdCond>
    </IndexConditions>
    <BinaryOp>ET</BinaryOp>
    <Meta>
    <Name>Si heure par jour entre 8 et 10</Name>
    <Comment></Comment>
    <Category>Surtemps</Category>
    <CreatedBy></CreatedBy>
    <Date>2009-03-10 14:39:28</Date>
    </Meta>
    </Condition>
    Une condition peut être simple ou multiple. Une condition multiple est une composition de condition simple. L’exemple ci-dessus est une condition multiple. Elle est composée de la condition simple 1 et 2. On ne sait jusqu’à quelle profondeur va l’imbrication.
    J’ai regardé un peu les solutions qui vous avez proposé et il parait que SQL server n’est pas très performant dans les requêtes imbriquées. La solution avec une définition des parents et fils dans les conditions peuvent être une solution efficace, qu'est ce que vous en pensez? Le projet de générateur de règle tourne sur SQL Server donc ça limite les possibilités.

  7. #7
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 814
    Points
    17 814
    Par défaut
    Citation Envoyé par pbatty1 Voir le message
    il parait que SQL server n’est pas très performant dans les requêtes imbriquées
    Il parait que XML c'est nul (quoi, cette allégation ne met pas fin au débat ?)

    Soyons sérieux, et postez des sources si vous avancez ce genre d'argument, sinon à part mettre SQLPro en colère vous n'arriverez à rien !

    A ma connaissance il n'y a aucun soucis avec SQL Server et les requêtes imbriquées, vous avez du confondre avec Access ou MySQL.

    Pas de soucis avec les hierarchies non plus.

  8. #8
    Membre régulier
    Inscrit en
    Mars 2003
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 217
    Points : 73
    Points
    73
    Par défaut
    Je vous remercie pour vos reponses. En conclusion, il est tout a fait faisable de representer ce projet avec seulement l'aide d'une base données.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 09/08/2011, 09h56
  2. [MySQL] passerelle entre un fichier xml et une base de données mysql
    Par Deboh dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 26/06/2008, 09h59
  3. [XML] [EXPAT] D'un document Xml vers une base de données
    Par AlphonseBrown dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 07/12/2005, 13h15
  4. Intégration des fichier XML dans une base de données MySQL
    Par bebemoundjou dans le forum XQUERY/SGBD
    Réponses: 8
    Dernier message: 25/11/2005, 23h41
  5. Champs de type XML dans une base de données
    Par Flocodoupoil dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 07/07/2004, 19h57

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