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

Décisions SGBD Discussion :

Comment synchroniser deux bases de données


Sujet :

Décisions SGBD

  1. #1
    Membre du Club Avatar de apoingsfermes
    Profil pro
    Inscrit en
    Février 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 54
    Points : 42
    Points
    42
    Par défaut Comment synchroniser deux bases de données
    Bonjour,

    Si vous voulez bien m'aider, il faudra prévoir un peu plus que quelques secondes !
    Voici ma problématique :
    J'ai une base de données MySQL (base 1) utilisée par un système de gestion de communications téléphoniques.
    Je dois concevoir une application d'administration qui permettra de gérer toutes les fonctionnalités de ce système via une interface web, sans avoir à toucher à cette base de données.

    Cette base est très bas niveau, et pour avoir une conception plus orientée client, on va créer une nouvelle base de données (base 2), en MSSQL cette fois-ci, qui sera une abstraction de la base 1 et ajoutera des informations client.

    On veut que l'appli web d'administration dialogue uniquement avec cette nouvelle base. Il faut donc un sous-système qui répercute automatiquement les changements de la base 2 à la base 1, sachant que :
    - la synchronisation est unilatérale : on considère que la base 1 ne change pas d'elle-même; et si elle le fait, elle ne doit pas en informer la base 2.
    - les répercutions sont non triviales : un ajout de tuple dans la base 2 se traduira souvent par des requetes complexes dans plusieurs tables de la base 1.
    - Cette synchronisation doit être automatique.

    J'ai plusieurs idées :
    - un compilateur qui recoit des messages de l'appli web à chaque changement de la base 2, les analyse et effectue les opérations adéquates sur la base 1. Beaucoup de boulot en perspective: le compilo, le protocole pour les messages.
    - un simple parseur pourrait suffire ? (expressions regulères...)
    - des triggers sur la base 2 ? Ca me semble très lourd de tout coder via des triggers, et ca n'offre peut-etre pas toute la puissance nécessaire (commits, logs...)

    Votre avis m'intéresse bigrement !

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    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 768
    Points : 52 577
    Points
    52 577
    Billets dans le blog
    5
    Par défaut
    Il serait plus inteligent de prendre un SGBDR qui intègre des mécanismes de réplication, car à vouloir prendre un SGBDR qui n'est pas capable de faire cela nativement cela va finir par vous couter très cher en terme de développement.

    Un petit exemple ta problématqiue est résolue en 1/2 journée en prenant deux serveurs SQL Server de MS.
    Il existe un assistant fort complet de mise en eouvre de réplication qui permet tout un tas de combinaisons possible (fusion, transactionnelle, capture instantanée, poste à poste...)

    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/ * * * * *

  3. #3
    Membre du Club Avatar de apoingsfermes
    Profil pro
    Inscrit en
    Février 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 54
    Points : 42
    Points
    42
    Par défaut
    Le problème, c'est que je ne peux pas changer la première base de données. Je peux à la limite concevoir ma deuxième base dans le même SGBDR, mais je doute que j'arriverai à imposer cette contrainte aux décideurs.

    Par contre le mécanisme de réplication m'intéresse. Il me semblait que ça n'était qu'un moyen de copier automatiquement une base à differents endroits. Je me demande si ça a la puissance nécessaire pour faire toutes les traductions requises dans mon cas.

    Sinon je me pose encore une question sur le SGBD pour la base à concevoir. Je me rends compte que cette base contiendra des informations clients, des ressources, des groupes. Bref, c'est du Active Directory. Et comme l'appli web pourrait évoluer vers une solution complète d'administration des clients et ressources, il me semble qu'Active Directory est à considérer.

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    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 768
    Points : 52 577
    Points
    52 577
    Billets dans le blog
    5
    Par défaut
    une réplication est un mécanisme qui permet de prendre une collection d'articles (appellée publication) dans une base d'un serveur pour aller l'insérer ou le mettre à jour dans une autre base d'un autre serveur.

    Un article est un ensemble de colonnes filtrées ou non. Autrement dit un article peut être :
    • une colonne d'une seule ligne
    • une colonne de plusieurs lignes
    • plusieurs colonnes d'une ligne
    • plusieurs colonnes de plusieurs lignes

    les lignes pouvant être extraites d'une table, d'une requête (jointure) ou d'une vue.

    certains SGBDR permettent de répliquer des procédures stockées. C'est souvent plus intelligent ! Par exemple plutôt que de répliquer la mise à jour de 300000 produits du catalogue avec une augmentation de 3% on peut répliquer l'exécution d'une procédure qui aura fait cette mise à jour.

    Les mécanismes de réplication peuvent être basés sur :
    - l'application des transactions (on capte en continue les transactions achevées et on les rejoue)
    - un cliché (snapshot) des données concernées (on prend une photographie des données concernées à un intervalle régulier)
    - le signalement d'évolution des données par des déclencheurs aidé par un versionning des lignes (on place dans les tables concernées un tag de ligne qui évolue à chaque mise à jour et une batterie de triggers pour envoyer les nouvelles valeurs à chaque mise à jour)

    Afin que la chose se passe bien il y a généralement :
    - un ou plusieurs serveur sources
    - un serveur de distribution (centralise les données en cours d'évolution)
    - un ou plusieurs serveur cible
    Le serveur de distribution peut être localisé sur le serveur cible ou source dans certains cas.

    La réplication se passe avec un temps de latence qui peut être quasi synchrone lorsque le mode transactionnel est choisit.

    Seul le mode avec versionning des lignes permet des réplications bilatérales, aussi appelées fusions. Le gros handicap de ce mode est que des conflits de réplication peuvent survenir. Par exemple les serveur sources SrvA et SrvB modifient la même données au même moment. Quelle information doit prendre le serveur cible SrvC ? Des règles peuvent être automatisées (priorité de site, au max, au min, au plus long....). Mais il y aura toujours une forte gestion à entreprendre.

    Enfin, la réplication, c'est toujours très consammateur de ressources. Plus le temps de latence est élevé, plus les ressources sont pompées.

    Si je te dis tous cela c'est parce que faire une réplication sans utiliser un outil spécifique ou un SGBDR qui l'intègre c'est du suicide, compte tenu de la complexité et de la lourdeur de l'admin !

    A titre d'exemple, lorsque j'intervient en assistance, conseil sur de la réplicatio SQL Server je facture entre 1 200 et 1 600 € HT (et hors frais) la journée !

    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/ * * * * *

  5. #5
    Membre du Club Avatar de apoingsfermes
    Profil pro
    Inscrit en
    Février 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 54
    Points : 42
    Points
    42
    Par défaut
    Bigre! Je te dois combien ?
    J'ai farfouillé dans MSDN à propose de la réplication, et il semblerait qu'on ne puisse avoir que des clients Oracle ou DB2, à part MSSQL. Donc c'est mort...
    Si j'utilise Active Directory, c'est pas mieux.
    Bon, je crois que je vais implémenter mon propre système de synchronisation, même si ça a l'air assez lourd...

    Merci pour ces infos

  6. #6
    co2
    co2 est déconnecté
    Membre éclairé
    Avatar de co2
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 182
    Points : 829
    Points
    829
    Par défaut
    Citation Envoyé par apoingsfermes
    Bon, je crois que je vais implémenter mon propre système de synchronisation, même si ça a l'air assez lourd...
    Hello

    Si tu veux implémenter ton propre système de synchronisation à la main je te conseille d'utiliser un ETL (http://fr.wikipedia.org/wiki/ETL) graphique afin, entre autre, de gagner en productivité, en maintenabilité.
    Je travaille chez l'editeur Open Source qui dévelope Talend Open Studio. Je t'invite donc à tester cette voie !

    Pour plus d'information, n'hésitez pas à consulter notre site web.

    ---
    Cordialement,
    Cédric Carbone
    Directeur Technique Talend
    Skype : cedriccarbone
    Mail : ccarbone(a)talend.com

    Cédric Carbone, Talend CTO
    Blog sur Talend, la Business Intelligence et l'intégration de données | Télécharger Talend Open Studio 3.2 / TOP 3.2
    Le forum Talend francophone | anglophone

    Actu : Offre d'emploi Consultants Talend |
    Tu as la réponse à ta question ? Clique sur en bas à gauche de ton message

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

Discussions similaires

  1. [MySQL-5.5] Comment synchroniser deux bases de données sur le même serveur ?
    Par AssoumaniSaid dans le forum Administration
    Réponses: 1
    Dernier message: 29/08/2014, 17h35
  2. Synchroniser deux bases de données Access 2003?
    Par js8bleu dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 02/04/2010, 09h52
  3. Réponses: 4
    Dernier message: 05/11/2009, 17h35
  4. Synchroniser deux bases de données
    Par whitespirit dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 27/11/2008, 14h01
  5. Synchronisation deux base de données
    Par musmus dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 11/07/2008, 23h16

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