web-dev-qa-db-fra.com

Pourquoi la partition RDBMS n'est-elle pas tolérante dans le théorème CAP et pourquoi est-elle disponible?

Deux points que je ne comprends pas sur le fait que le SGBDR est CA dans le théorème du CAP:

1) Il dit que le SGBDR est pasTolérant à la partition mais comment le SGBDR est-il tout moins Tolérant à la partition que d'autres technologies comme MongoDB ou Cassandra? Existe-t-il une configuration SGBDR où nous abandonnons l'autorité de certification pour en faire AP ou CP?

2) Comment est-il disponible en CAP? Est-ce à travers la configuration maître-esclave? Comme quand le maître meurt, l'esclave prend le relais de l'écriture?

Je suis novice en architecture DB et en théorème CAP, alors soyez indulgent avec moi.

23
Glide

De nombreuses bases de données ont désormais des configurations différentes et selon les paramètres que vous définissez, il peut s'agir de CA, CP, AP, etc., mais ne peut pas atteindre les trois en même temps. Certaines bases de données font en fait un effort pour prendre en charge les trois, mais les hiérarchisent toujours d'une certaine manière.

Par exemple, MySQL peut être CP et CA selon les configurations. Par défaut, c'est CA car il suit un paradigme maître-esclave dont les données sont répliquées sur les esclaves. La tolérance de partition est sacrifiée dans le cas où un ensemble d'esclaves perd la connexion avec le maître et décide donc d'élire un nouveau maître créant deux maîtres avec leur propre ensemble d'esclaves.

Cependant, MySQL a également une autre configuration qui est une configuration en cluster. Il donne la priorité au CP sur la disponibilité, par exemple. le cluster s'arrêtera s'il n'y a pas suffisamment de nœuds actifs pour traiter toutes les données.

Il y a probablement plus de configurations pour MySQL qui le font satisfaire d'autres combinaisons de théorèmes CAP mais dans l'ensemble, je voulais juste dire que cela dépend de ce dont votre système a besoin. Parfois, les bases de données sont meilleures pour une configuration par rapport à une autre, il est donc préférable de voir quels types de problèmes peuvent également survenir lors de l'utilisation d'une certaine configuration.

En ce qui concerne la mise en œuvre du théorème de la PAC, je conseillerais de jeter un œil sur les différentes bases de données et sur la façon dont elles mettent en œuvre les priorités pour le théorème de la PAC. Il existe tout simplement trop de façons différentes de les mettre en œuvre, par exemple. généralement, le modèle maître esclave est utilisé pour les systèmes CA, l'anneau de hachage pour les systèmes AP, etc.

21
Will C

Le théorème CAP est problématique et ne s'applique qu'aux systèmes de bases de données distribuées. Lorsque vous avez des bases de données distribuées, des pannes de partition réseau et de nœuds peuvent se produire. Et lorsque la partition réseau se produit, vous devez avoir une tolérance de partition (le P de votre CAP).

Donc, pour répondre à votre question numéro 1) C'est soit CP soit AP. Il peut être configuré comme Will l'a mentionné.

En savoir plus sur les raisons pour lesquelles la tolérance de partition est un must: https://codahale.com/you-cant-sacrifice-partition-tolerance/

En savoir plus sur les problèmes autour du théorème de CAP: https://martin.kleppmann.com/2015/05/11/please-stop-calling-databases-cp-or-ap.html

0
Jani Siivola

Je suis d'accord que RDBMS peut avoir toutes les propriétés de CAP. J'ai commencé à étudier les bases de données noSQL et j'avais une expérience antérieure avec IBM DB2.

Voici comment IBM DB2 satisfait toutes les 3 propriétés CAP

  1. C: Cohérence: chaque base de données relationnelle satisfait cela en raison de la nature transactionnelle du SGBDR.

  2. R: Disponibilité: La disponibilité signifie que lorsqu'une requête est effectuée pour une donnée existante, elle doit être renvoyée. Encore une fois, une base de données relationnelle est conçue pour le faire facilement.

  3. P: Tolérance de partition: c'est la plus intéressante. Du point de vue DB2, dans l'application sur laquelle je travaillais, nous avions 2 bases de données réparties dans différents centres de données. L'un était le primaire et communiquait avec le secondaire via des battements cardiaques. Chacune de ces bases de données primaires et secondaires avait 12 instances physiques où les données étaient distribuées sur la base d'une logique prédéfinie. Si le primaire tombe en panne, le secondaire le détecte et remplace le primaire. Étant donné que le primaire et le secondaire ont toujours été synchronisés, les données restent également cohérentes.

C'est ainsi que je pense que le SGBDR satisfait aux 3 propriétés du théorème CAP.

Je peux me tromper et être ouvert à la discussion à ce sujet.

0
Nishit