Slide 49
Slide 49 text
Example: RAMP Transactions
Atomic visibility is
sufficient for correctly
maintaining foreign key
constraints, secondary
indexes, materialized views
Traditional strategy: use
mutual exclusion
Coordination-free solution:
multi-versioning and
metadata
C1
PREPARE
PREPARE
lastCommit[x]=⊥
versions={x1
}
x1
, md={y}
y1
, md={x}
lastCommit[y]=⊥
versions={y1
}
COMMIT
tsc
=1
COMMIT
ts
c
=1
GET
i=x, tsreq
=⊥ GET
lastCommit[x]=1
versions={x1
}
GET
x1
, md={y}
y⊥, md={}
y1
, md={x}
lastCommit[y]=1
versions={y1
}
vlatest ←{x:1, y:1}
prepared
RESPONSE
prepared
i=y, tsreq
=⊥
i=y, tsreq
=1
lastCommit[x]=⊥
versions={}
lastCommit[y]=⊥
versions={}
BEGIN T1
committed
committed
BEGIN T2
COMMIT T1
COMMIT T2
resp={x
1
,y
1
}
RESPONSE
RESPONSE
RESPONSE
RESPONSE
RESPONSE
RESPONSE
C2
Px
Py
[w(x1
), w(y1
)]
[r(x), r(y)]
SIGMOD 2014