Dans la théorie des bases de données, quelle est la différence entre "conflit sérialisable" et "conflit équivalent"?
Mon manuel comporte une section sur les conflits sérialisables mais passe sous silence l'équivalence des conflits. Ce sont probablement les deux concepts que je connais bien, mais je ne connais pas la terminologie, je cherche donc une explication.
Juste deux termes pour décrire une chose de différentes manières.
Équivalent conflit : vous devez dire que l’annexe A est équivalente à l’annexe B. elle doit comporter deux annexes.
Conflict serializable : Utilisez toujours les Annexes A et B. Nous pouvons dire que l’Annexe A est un conflit sérialisable. L'annexe B est un conflit sérialisable.
Nous n'avons pas dit que l'annexe A/B est équivalente au conflit
Nous n'avons pas dit que l'annexe A est un conflit sérialisable en annexe B
Un conflit dans un SGBD peut être défini comme deux ou plusieurs transactions différentes accédant à la même variable et dont l'une au moins est une opération d'écriture.
Par exemple:
T1: Read(X)
T2: Read (X)
Dans ce cas, il n'y a pas de conflit car les deux transactions effectuent uniquement des opérations de lecture.
Mais dans le cas suivant:
T1: Read(X)
T2: Write(X)
il y a un conflit.
Disons que nous avons un horaire S
et que nous pouvons réorganiser les instructions qu’il contient. et créez 2 autres horaires S1
et S2
.
Équivalent de conflit : Fait référence aux annexes S1
et S2
où elles conservent l'ordre des instructions en conflit dans les deux annexes. Par exemple, si T1
doit lire X
avant que T2
écrit X
dans S1
, il devrait en être de même dans S2
également. (L'ordre ne doit être maintenu que pour les opérations en conflit).
Sérialisabilité des conflits : S
est dit conflit sérialisable s'il est équivalent à un calendrier série (c'est-à-dire lorsque les transactions sont exécutées les unes après les autres).
De Wikipedia .
Les plannings S1
et S2
sont dits équivalents en conflit si les conditions suivantes sont remplies:
Les calendriers S1
et S2
impliquent le même ensemble de transactions (y compris la commande d'actions dans chaque transaction).
L'ordre de chaque paire d'actions en conflit dans S1
et S2
est identique.
Une planification est dite conflit-sérialisable lorsque la planification est conflit-équivalente à une ou plusieurs planifications en série.
Une autre définition de la sérialisabilité conflictuelle est la suivante: une planification est sérialisable conflictuelle si et seulement si son graphe de priorité/graphe de sérialisabilité, lorsque seules les transactions validées sont considérées, est acyclique (si le graphe est défini pour inclure également les transactions non validées, les cycles les transactions peuvent avoir lieu sans violation de sérialisabilité conflictuelle).
Si une annexe S peut être transformée en une annexe S´ par une série d'échanges d'instructions non contradictoires, nous dirons que S et S´ sont équivalents en conflit.
Nous disons qu'un calendrier S est un conflit sérialisable s'il est équivalent au conflit d'un calendrier en série.
Annexes équivalentes au conflit: si une annexe S peut être transformée en une annexe S 'par une série d'échanges d'instructions non contradictoires, nous disons que l'annexe S & S' est équivalente à un conflit.
Planification sérialisable en conflit: La planification S est un conflit sérialisable si elle est équivalente à une planification en série.
Conflit sérialisable signifie un conflit équivalent à tout programme en série.
S'il existe au moins une planification équivalente au conflit pour la planification de transaction considérée, le conflit est sérialisable.
Les définitions ont déjà été expliquées à la perfection, mais j’estime que cela sera très utile à certains.
J'ai développé un petit programme de console (sur github) qui peut tester n'importe quel planning de sérialisation des conflits et dessine également un graphe de priorité.