[mysql-dde] Re: The mutual conflict problem

  • From: "Peter B. Volk" <PeterB.Volk@xxxxxxx>
  • To: <mysql-dde@xxxxxxxxxxxxx>
  • Date: Mon, 12 Dec 2005 15:56:52 +0100

Hey,
Well I could be solved by having GI-Key Masters. I've added 2 diagramms to
show a few details.

Peter
----- Original Message ----- 
From: "Fabricio Mota" <fabricio.oliveira@xxxxxxxxxxxxxxxx>
To: "dde" <mysql-dde@xxxxxxxxxxxxx>
Sent: Monday, December 12, 2005 2:19 PM
Subject: [mysql-dde] The mutual conflict problem


> Hey Guy!
> We have a problem with uniqueness management with any approach we use.
That is:
>
> Suppose Clients C1 and C2, connected respectivelly through servers S1 and
S2.
> Both clients try to insert a value k, into a unique-indexed column.
Suppose they try to insert the value approximately during the same time.
>
> If we think about to validate global uniqueness among servers before to
insert, then:
>
> 1 - C1 tries to insert it through S1 / at same time, C2 tries it through
S2.
> 2 - S1 validates k / C1 locally. Uniqueness is ok. S2 validates k / C2
locally, too. Both are ok.
> 3 - S1 request S2 about uniqueness of k. At aproximately the same time, S2
request the same for S1.
> 4a - if we consider a fully isolated transaction approach, then S1 will
perform C1 command, and S2 will perform C2 command, too. That's an
inconsistence!
> 4b - if we consider the value k is shared during transactions, both
servers will abort, because k is already there during remote validation,
causing a mutual abort.
>
> If we think about to validate global uniqueness among servers after to
insert, replicating global indexes, then:
>
> 1 - C1 tries to insert it through S1 / at same time, C2 tries it through
S2.
> 2 - S1 validates k / C1 locally. Uniqueness is ok. S2 validates k / C2
locally, too. Both are ok.
> 3 - S1 tries to sync S2 about its new value k. At aproximately the same
time, S2 tries to sync S1, too.
> 4a - if we consider a fully isolated transaction approach, then S1 will
update S2 with its k, and S2 will update S1 with its own k, too. That's an
inconsistence, again.
> 4b - if we consider the value k is shared during transactions, both
servers will abort, because k is already there during remote validation,
causing a mutual abort.
>
> If we consider the hypothesis 4b, what criterion could be used for both
server to agree in which transaction to abort?
>
> Or so, what could we do in respect to it?
>
> Fabricio Mota
> Analista de Sistemas
> FCPC - Divisão de Planejamento do Cadastro Comercial
> MySql-DDE discussion list
> www.freelists.org/
>




MySql-DDE discussion list
www.freelists.org/

Other related posts: