Précédent   Forum du club des développeurs et IT Pro > Bases de données > Décisions SGBD > Autres
Autres Autres sujets sur les SGBD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 02/06/2009, 20h52   #1
pbatty1
Membre du Club
 
Inscription : mars 2003
Messages : 216
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 216
Points : 40
Points : 40
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
pbatty1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2009, 22h25   #2
Hephaistos007
Membre Expert
 
Avatar de Hephaistos007
 
Inscription : décembre 2004
Messages : 1 602
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 1 602
Points : 1 954
Points : 1 954
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. [SHADOKS]

Retrouvez mes cours et tutos autour d'Android/Java/Eclipse sur http://olegoaer.developpez.com/
Hephaistos007 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2009, 11h02   #3
SQLpro
Rédacteur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 12 080
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 12 080
Points : 21 678
Points : 21 678
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
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2009, 11h14   #4
michel.bosseaux
Membre confirmé
 
Homme Michel Bosseaux
Développeur Web
Inscription : mai 2009
Messages : 164
Détails du profil
Informations personnelles :
Nom : Homme Michel Bosseaux
Âge : 40
Localisation : Belgique

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

Informations forums :
Inscription : mai 2009
Messages : 164
Points : 248
Points : 248
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.
michel.bosseaux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2009, 18h40   #5
GrandFather
Expert Confirmé Sénior
 
Avatar de GrandFather
 
Inscription : mai 2004
Messages : 4 538
Détails du profil
Informations personnelles :
Âge : 43

Informations forums :
Inscription : mai 2004
Messages : 4 538
Points : 6 335
Points : 6 335
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
GrandFather est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2009, 20h43   #6
pbatty1
Membre du Club
 
Inscription : mars 2003
Messages : 216
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 216
Points : 40
Points : 40
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
Citation:
<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
Citation:
<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.
pbatty1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2009, 01h48   #7
Waldar
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 6 278
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 35
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : septembre 2008
Messages : 6 278
Points : 13 563
Points : 13 563
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
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.
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2009, 14h25   #8
pbatty1
Membre du Club
 
Inscription : mars 2003
Messages : 216
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 216
Points : 40
Points : 40
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.
pbatty1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 17h15.


 
 
 
 
Partenaires

Hébergement Web