2009-09-24 7 views
14

Je suis face au défi suivant:Tenue de bases de données distribuées dans un réseau synchronisé instable

J'ai un tas de bases de données dans différents lieux géographiques où le réseau peut échouer beaucoup (j'utilise le réseau cellulaire). Je dois garder toutes les bases de données synchronisées mais il n'est pas nécessaire d'être en temps réel. J'utilise Java mais j'ai la liberté de choisir n'importe quelle base de données gratuite.

Toutes les suggestions sur la façon dont je peux y parvenir.

Merci.

+0

Vous cherchez un outil? Développer une solution personnalisée? –

Répondre

8

Je ne suis pas au courant de bases de données qui vous donneront cette fonctionnalité hors de la boîte; il y a beaucoup de complexité ici en raison de la nécessité d'une cohérence et d'une résolution de conflit (par exemple, que se passe-t-il si le réseau est divisé en 2 moitiés et que vous mettez à jour la valeur 123 alors que 321 puis les réseaux se reconnectent?)

Vous devrez peut-être rouler les vôtres.

Pour quelques idées sur la façon de le faire, consultez la conception du système PNUTS Yahoo: http://research.yahoo.com/node/2304 et Amazon Dynamo: http://www.allthingsdistributed.com/2007/10/amazons_dynamo.html

+0

+1. Bons liens! – David

+0

L'article de Yahoo est très intéressant. L'idée de développer ma propre solution était déjà dans mon esprit. J'aimerais avoir quelque chose comme GIT pour les bases de données – jassuncao

+2

La chose à propos de Git est, il vous oblige à effectuer une fusion manuelle lorsqu'il y a des mises à jour en conflit. Ce n'est généralement pas une option viable pour les bases de données. Vous avez donc besoin d'un modèle de cohérence qui vous réserve le moins de surprises possible. – SquareCog

0

Je ne connais pas vos besoins ou vos applications, mais ce n'est pas une question de type réponse rapide. Je suis très intéressé de voir ce que les autres ont à dire. Cependant, j'ai une suggestion qui peut ou peut ne pas fonctionner pour vous, selon vos besoins et votre situation. en particulier, cela n'aidera pas si vos utilisateurs ont besoin d'utiliser l'application même lorsque le réseau est indisponible (accès hors connexion).

La synchronisation d'un ensemble de petites bases de données est une tâche assez complexe à effectuer correctement. Y a-t-il une possibilité de n'avoir qu'une seule base de données centralisée, et d'avoir les applications clientes directement connectées ou (ma solution préférée) d'écrire des services web pour gérer l'accès/mise à jour des données plutôt que d'avoir des bases de données client? Je réalise que cela limite l'accès hors ligne, mais il existe différentes stratégies de mise en cache que vous pouvez utiliser. (Ce qui, bien sûr, vous ramène à votre question initiale.)

17
+0

Grande collection d'informations. Je vous remercie. – jassuncao

+0

Vous êtes les bienvenus. – MaD70

3

Découvrez SymmetricDS. SymmetricDS est un logiciel de synchronisation et de réplication de données, indépendant de la base de données, compatible Web. Il utilise des technologies Web et de base de données pour répliquer des tables entre des bases de données relationnelles en temps quasi réel. Le logiciel a été conçu pour évoluer vers un grand nombre de bases de données, travailler sur des connexions à faible bande passante et résister à des périodes d'indisponibilité du réseau.

+0

Ouais. Je l'ai déjà regardé et je l'ai fait tourner. Ça a l'air joli dieu. Est-ce que c'est sûrement ce qui va être utilisé? – jassuncao

Questions connexes