2017-05-06 5 views
1

Nous sommes en train d'évaluer MariaDB Galera cluster pour notre application. Si je comprends bien, le cluster prend en charge la réplication au niveau des lignes et des instructions. Nous nous penchons vers la réplication au niveau de la ligne. Notre modèle de données a plusieurs entités liées les unes aux autres. Nous allons avoir des relations de clé étrangères entre les entités. Je voudrais savoir si nous allons avec la réplication basée sur les lignes comment le cluster gérerait le scénario suivant.MariaDB Galera Cluster contrainte d'intégrité référentielle

1> Le cluster a 3 noeuds

2> Il y a des entités comme la classe et l'élève. En cela, nous avons une clé étrangère étudiant -> Classe

3> Nous obtenons deux noeuds (N1 & N2) obtenir deux mises à jour de deux transactions différentes

A) A l'instant t1: noeud N1 obtient insère pour un étudiant (s1 et s2) pour une classe particulière c1 et c2 respectivement.

B) A temps t2: La classe c1 est supprimé du nœud N2

C) A l'instant t3: Le changement (ajout du s1 étudiant et s2) est poussé de N1 à N2

L'ensemble de la transaction impliquant l'ajout d'étudiants serait-il annulé?

Répondre

2

RBR seulement.

Au moment de COMMIT, vous devez vérifier les erreurs. C'est l'heure à laquelle les conflits sont vérifiés avec d'autres nœuds. En d'autres termes, un nœud peut ne pas avoir de conflit, pour découvrir (à COMMIT) que ce qui semblait bien sur ce nœud entrerait en collision avec ce qui se passait simultanément sur un ou plusieurs autres nœuds.

Plus Galera tips

En général, chaque fois que vous obtenez "impasse", il suffit de relancer l'ensemble de la transaction. Il fonctionnera probablement la deuxième fois (ou rencontrera une autre erreur, maintenant que la transaction à distance l'a fait le noeud courant).