2009-03-25 4 views
6

Je cherche à implémenter la synchronisation de données entre les serveurs et les clients distribués. La source de données sur le serveur est mysql avec django en haut. Le client peut varier. Les mises à jour peuvent avoir lieu sur le client ou le serveur, et la connexion entre le serveur et le client n'est pas fiable (par exemple, les modifications peuvent être effectuées sur un téléphone cellulaire déconnecté, doivent être synchronisées lorsque le téléphone a une connexion). S. Lott suggère d'utiliser un modèle de conception de contrôle de version dans this question, ce qui est logique. Je me demande s'il existe des paquets/implémentations de ce que je peux utiliser. Ou, devrais-je utiliser directement svn/git/etc?Cadre/algorithme de synchronisation de données pour le serveur <->?

Y a-t-il d'autres alternatives? Il doit y avoir des cadres de synchronisation ou des descriptions détaillées d'algorithmes, mais je n'ai pas beaucoup de chance de les trouver. J'apprécierais que vous me pointiez dans la bonne direction.

Répondre

0

Vous pouvez trouver ce lien utile: http://pdis.hiit.fi/pdis/download/

Il est la page de téléchargement du projet de banque d'informations personnelles distribué (PDIS), et énumère quelques paquets de python pertinents.

1

Peut-être en utilisant plaine vieux rsync est suffisant.

1

AFAIK il n'y a pas de solution générique à cela principalement en raison des diverses exigences de synchronisation.

Dans l'un de nos projets précédents, nous avons implémenté un mécanisme de synchronisation basé sur Spring batching qui repose sur le dernier champ d'horodatage mis à jour sur chacune des tables (qui participent à la synchronisation).

J'ai entendu parler de SyncML mais je n'ai pas beaucoup d'expérience avec ça.

Si vous avez un seul serveur et plusieurs clients, vous pouvez penser à une approche basée sur JMS. Les données sont regroupées et placées dans des files d'attente (ou des rubriques) et seront extraites par les clients.

Dans votre cas, puisque les mises à jour sont bidirectionnelles, vous devez également gérer la détection de conflit. Cela apporte des complexités supplémentaires.

Questions connexes