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 :

Synchronisation BD locale et distante(serveur)


Sujet :

Décisions SGBD

  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2004
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 33
    Points : 30
    Points
    30
    Par défaut Synchronisation BD locale et distante(serveur)
    Bonjour,

    J'aimerai avoir votre avis sur un problème de conception.

    Nous avons une application complexe qui tourne sur un serveur et dispose d'une base de données. Technologies utilisées : PHP et MySql

    Cependant cette base de données est la plupart du temps mise à jour en local.

    Mon problème, mettre à jour la base de données serveur avec celle locale, sachant que la mise à jour de la BD n'est pas critique, même si une mise à jour quotidienne serait intéressante.

    Voici les solutions qui s'offrent à moi :
    - Lorsqu'une requête est effectuée en local. l'effectuer aussitôt sur le serveur. D'après moi pas intéressant car la mise à jour à la seconde n'est pas essentielle.
    - Effectuer en batch chaque jour une copie de la BD locale et la charger sur le serveur. Solution lourde car la base de données sera importante et celà oblige à charger des données qui n'ont pas évolué.
    - Enregistrer les requêtes effectuées en local dans un fichier log. Lors d'un batch, effectuer les requêtes dispos dans le fichier sur le serveur puis purger le contenu du fichier log local.

    De mon point de vue, la dernière solution me semble la meilleure.

    Qu'en pensez vous?

    Savez-vous si MySQL permet de logguer automatiquement les requêtes où dois-je coder cette fonctionnalité?

  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 854
    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 854
    Points : 52 995
    Points
    52 995
    Billets dans le blog
    6
    Par défaut
    autre solution, plus légère et plus automatique : ajouter à chaque table deux colonnes de marquage : un GUID et un tag de mise à jour (I, U, D). Faire passer un batch qui régulièrement calcule les données différentielles et met à jour la base distante.

    ALTER TABLE ...
    ADD COLUMN TAG_VERSION CHAR(36) DEFAULT GUID ()
    ALTER TABLE ...
    ADD COLUMN TAG_SQLORDER CHAR(1) DEFAULT 'I'

    Le GUID sert à versionner la ligne,
    le Tag sert à savoir quelle ordre a été effectué : I => INSERT, U=> UPDATE, D=> DELETE.

    Si I alors insertion dans table distante et update du I en U.
    Si U et version <> alors mise à jour dans la table distante
    Si D alors suppression dans la table distante et suppression finale dans table origine.

    Tout cela peut être fait de manière très simples par des triggers hélas pas encore disponible sous MySQL !

    A +

  3. #3
    Nouveau membre du Club
    Inscrit en
    Octobre 2004
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 33
    Points : 30
    Points
    30
    Par défaut
    Merci pour ton point de vue.

    Celà dit je reste perplexe.

    En effet celà m'oblige à calculer les données différentielles, j'ai peur que ça soit un traitement lourd si la base devient importante et si peu de données sont modifiées.

    Un autre membre du forum m'a également proposé de rajouter un champ 'mise à jour' aux tables afin que chaque ligne possède la dernière date de mise à jour.

    Celà me permettrait de sélectioner les lignes qui ont été ajoutées ou modifées avec une date>= à la date de dernière mise à jour des données serveur(date que je conserverai alors sur le serveur) puis de mettre à jour ces lignes sur le serveur.

    On pourrait également faire un mix de vos 2 solutions : le tag qui indique la modif effectuée(I,U,D° ainsi que la date de dernière modif.

    Cependant après réflexion, je persiste à croire que la solution consistant à logguer les requêtes dans un fichier SQL local, à mettre à jour la BD serveur à partir de ce fichier et à viderce fichier en local est la moins couteuse en temps de traitement est n'est pas moins souple que les autres solutions.

    Mais je reste ouvert à la discussion si tu vois des désavantages à ma solution, n'hésites pas à m'en faire part.

    A++

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 114
    Points : 56
    Points
    56
    Par défaut Re: Synchronisation BD locale et distante(serveur)
    Citation Envoyé par 73672
    Bonjour,

    J'aimerai avoir votre avis sur un problème de conception.

    Nous avons une application complexe qui tourne sur un serveur et dispose d'une base de données. Technologies utilisées : PHP et MySql

    Cependant cette base de données est la plupart du temps mise à jour en local.

    Mon problème, mettre à jour la base de données serveur avec celle locale, sachant que la mise à jour de la BD n'est pas critique, même si une mise à jour quotidienne serait intéressante.

    Voici les solutions qui s'offrent à moi :
    - Lorsqu'une requête est effectuée en local. l'effectuer aussitôt sur le serveur. D'après moi pas intéressant car la mise à jour à la seconde n'est pas essentielle.
    - Effectuer en batch chaque jour une copie de la BD locale et la charger sur le serveur. Solution lourde car la base de données sera importante et celà oblige à charger des données qui n'ont pas évolué.
    - Enregistrer les requêtes effectuées en local dans un fichier log. Lors d'un batch, effectuer les requêtes dispos dans le fichier sur le serveur puis purger le contenu du fichier log local.

    De mon point de vue, la dernière solution me semble la meilleure.

    Qu'en pensez vous?

    Savez-vous si MySQL permet de logguer automatiquement les requêtes où dois-je coder cette fonctionnalité?
    Question bete mais pourqoi au moment d'effectuer ta requete en local tu l'effectues pas aussi a distance ?

  5. #5
    Nouveau membre du Club
    Inscrit en
    Octobre 2004
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 33
    Points : 30
    Points
    30
    Par défaut Re: Synchronisation BD locale et distante(serveur)
    Citation Envoyé par romeo9423
    Question bete mais pourqoi au moment d'effectuer ta requete en local tu l'effectues pas aussi a distance ?
    Si le serveur n'est pas accessible à ce moment là, j'ai peur que ça pose problème.

  6. #6
    Nouveau membre du Club
    Inscrit en
    Octobre 2004
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 33
    Points : 30
    Points
    30
    Par défaut
    Ben tiens pour ce qui rechercheront pareil que moi, MySQL a cette fonctionnalité :

    http://dev.mysql.com/doc/mysql/fr/replication.html

    Par contre, il faut avoir accès à la config du serveur local ainsi qu'à celui distant.

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

Discussions similaires

  1. [CS3] video flv, marche en local pas sur serveur distant
    Par mag_sergio dans le forum Dreamweaver
    Réponses: 12
    Dernier message: 11/06/2008, 17h20
  2. Récupération de donnée serveur local et distant
    Par sebaaas dans le forum Langage
    Réponses: 1
    Dernier message: 04/12/2007, 23h51
  3. Synchronisation entre une base locale et distante
    Par gege87270 dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 09/11/2007, 14h04
  4. mise à jour d'une BDD locale sur un serveur distant
    Par jive dans le forum Général Conception Web
    Réponses: 4
    Dernier message: 22/08/2005, 21h26
  5. [Conception] Synchronisation BD locale et distante(serveur)
    Par 73672 dans le forum Décisions SGBD
    Réponses: 6
    Dernier message: 03/02/2005, 21h44

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