2010-09-17 10 views
70

J'ai entendu parler de deux types d'architectures de base de données.Architecture maître-maître vs base de données maître-esclave?

  • maître-maître

  • maître-esclave

n'est pas le maître-maître plus approprié pour le web d'aujourd'hui parce que c'est comme Git, chaque unité a l'ensemble des données et si l'on descend, ça n'a pas vraiment d'importance. Maître-esclave me rappelle SVN (que je n'aime pas) où vous avez une unité centrale qui manipule chose.

Questions:

  1. Quels sont les avantages et les inconvénients de chacun?

  2. Si vous voulez avoir une base de données locale dans votre téléphone portable comme l'iPhone, laquelle est la plus appropriée?

  3. Le choix de l'un d'entre eux est-il un facteur critique à considérer à fond?

Répondre

52

La disponibilité, l'homogénéité et la complexité font l'objet de négociations. Pour répondre d'abord à la dernière question: est-ce important? Oui beaucoup! Les choix concernant la façon dont vos données doivent être gérées sont absolument fondamentaux, et il n'y a pas de «meilleure pratique» pour esquiver les décisions. Vous devez comprendre vos besoins particuliers.

Il y a une tension fondamentale:

Une copie: la cohérence est facile, mais si cela arrive à être en panne tout le monde est hors de l'eau, et si les gens sont alors à distance peut payer les frais de communication affreuses. Amenez les appareils portables, qui peuvent avoir besoin de fonctionner déconnectés, dans l'image et une copie ne le coupera pas. Maître esclave: la cohérence n'est pas trop difficile car chaque élément de données possède exactement un maître propriétaire. Mais alors que faites-vous si vous ne pouvez pas voir ce maître, une sorte de travail différé est nécessaire. Master-Master: bien si vous pouvez le faire fonctionner, il semble offrir tout, pas de point de défaillance unique, tout le monde peut travailler tout le temps. Le problème est très difficile de préserver la cohérence absolue. Voir le wikipedia article pour plus.

Wikipedia semble avoir un bon résumé des avantages et des inconvénients

Avantages

  • Si un maître échoue, d'autres maîtres continueront de mettre à jour la base de données .

  • Les maîtres peuvent être situés dans plusieurs sites physiques, c'est-à-dire répartis sur le réseau.

Inconvénients

  • La plupart SYSTÈMES DE réplication multi-maîtres ne sont que faiblement cohérente, à savoir paresseux et asynchrone, violant des propriétés acides.

  • Les systèmes de réplication complexes sont complexes et introduisent une certaine latence de communication .

  • Des problèmes tels que la résolution de conflits peuvent devenir insolubles car le nombre de nœuds impliqués augmente et la latence requise diminue.

+0

CouchDB utilise MVCC. Est-ce que ce genre de gérer le problème de cohérence face à plusieurs maîtres cause quand un que j'ai mis en ligne à nouveau, le système de gestion des versions gère la cohérence et ce maître obtiendra les données mises à jour correctes. –

+4

Mais que se passe-t-il lorsque deux utilisateurs font quelque chose de contradictoire - comme deux utilisateurs tentent d'acheter le dernier article en stock? Imaginez un scénario où nous avons deux maîtres et chaque utilisateur touche un maître différent, alors nous obtenons une sorte de pépin de communication - à la fin il y aura soit un compromis d'intégrité, soit une disponibilité réduite - on dit à un utilisateur "désolé compagnon, Je ne sais vraiment pas ce qui se passe jusqu'à ce que je parle à l'autre maître », ou nous avons un méchant conflit lorsque les communications sont rétablies - et celles-ci peuvent devenir vraiment compliquées. – djna

+2

Qu'utilisent les marchés financiers ou les marchés boursiers? Ils seraient frapper ce problème tout le temps? – CMCDragonkai

48

Bien que des recherches sur les différentes architectures de bases de données ainsi. J'ai compilé un bon nombre d'informations qui pourraient être pertinentes pour quelqu'un d'autre à l'avenir. Je suis tombé sur

  1. maître-esclave réplication
  2. maître-maître réplication
  3. MySQL Cluster

J'ai décidé de régler pour utiliser MySQL Cluster pour mon cas d'utilisation. Cependant s'il vous plaît voir ci-dessous pour les différents avantages et les inconvénients que j'ai compilé

1. maître-esclave de réplication

Pros

  • applications analytiques peuvent lire de l'esclave (s) sans impact sur la maîtriser
  • les sauvegardes de la base de données complète de relativement pas d'impact sur le maître
  • esclaves peuvent être prises en mode hors connexion et synchronisation au maître sans aucune interruption

Contre

  • Dans le cas d'un échec, doit être promu esclave de maîtriser pour prendre sa place. Pas de basculement automatique
  • Downtime et peut-être la perte de données lorsqu'un maître échoue
  • Toutes les écritures doivent également être fait au maître dans un design maître-esclave
  • Chaque esclave supplémentaire ajouter une charge au maître depuis le binaire log doivent être lues et les données copiées à chaque esclave
  • application peut être redémarré

2.Master-maître réplication

Pros

  • Les applications peuvent lire des deux maîtres
  • Distribue écrire charge sur les deux nœuds maîtres
  • basculement simple, automatique et rapide

Moins

  • Librement cohérente
  • pas aussi simple que maître-esclave pour configurer et déployer

3. MySQL Cluster

Le nouveau kid dans la ville basée sur la conception du cluster MySQL. Le cluster MySQL a été développé en tenant compte de la haute disponibilité et de l'évolutivité. C'est la solution idéale pour les environnements qui ne nécessitent aucun temps d'arrêt, une grande disponibilité et une évolutivité horizontale.

Voir MySQL Cluster 101 pour plus d'informations

Pros

  • (Haute Sport et nature) Aucun point de défaillance
  • un débit très élevé
  • 99,99% de disponibilité
  • Auto-Sharding
  • Réactivité en temps réel
  • en direct des opérations (changements de schéma, etc.)
  • Distribué écrit

Contre

Vous pouvez visiter ma Blog ventilation complète, y compris les diagrammes d'architecture qui va dans plus de détails sur les 3 architectures mentionnées.

+0

Merci de partager le blog! –

+0

Pas de problème. Content que cela vous a aidé! – Skillachie

Questions connexes