  Many distributed applications require transactions. However, transactional
protocols that require strong synchronization are costly in large scale
environments. Two properties help with scalability of a transactional system:
genuine partial replication (GPR), which leverages the intrinsic parallelism of
a workload, and snapshot isolation (SI), which decreases the need for
synchronization. We show that, under standard assumptions (data store accesses
are not known in advance, and transactions may access arbitrary objects in the
data store), it is impossible to have both SI and GPR. To circumvent this
impossibility, we propose a weaker consistency criterion, called Non-monotonic
Snapshot Isolation (NMSI). NMSI retains the most important properties of SI,
i.e., read-only transactions always commit, and two write-conflicting updates
do not both commit. We present a GPR protocol that ensures NMSI, and has lower
message cost (i.e., it contacts fewer replicas and/or commits faster) than
previous approaches.
