A system suitable for use with a plurality of data stores, the system comprising: one or more computing devices configured to implement a log based transaction manager comprising: a persistent log (1510, 1810) configured to store transaction records corresponding to previously-committed transactions associated with a plurality of data stores; and a conflict detector configured to: receive a transaction descriptor (1744, 1844) of a requested transaction involving a first data store and a second data store of the plurality of data stores, wherein the first data store is of a first type and the second data store is of a second type, wherein the first type and the second type are different, wherein the transaction descriptor includes (a) a read set descriptor (1704, 1846) that indicates one or more objects from which data is read during the requested transaction including a first object in the first data store (1530A-C, 1730A-C) and a second object in the second data store (1530A-C, 1730A-C), (b) a conflict check delimiter (1702, 1842) determined based at least in part on a first logical timestamp corresponding to a first previously-committed transaction at the first data store and a second logical timestamp corresponding to a second previously-committed transaction at the second data store, and (c) a write set descriptor (1706, 1846) that indicates one or more objects to which data is to be written in response to a commit of the requested transaction; identify, using the conflict check delimiter, a subset of transaction records in the persistent log to be examined for conflicts prior to committing the requested transaction; determine that no conflicts exist between the requested transaction and the subset of transaction records in the persistent log; and in response to the determination that no conflicts exist, accept the requested transaction for commit. a persistent log (1510, 1810) configured to store transaction records corresponding to previously-committed transactions associated with a plurality of data stores; and a conflict detector configured to: receive a transaction descriptor (1744, 1844) of a requested transaction involving a first data store and a second data store of the plurality of data stores, wherein the first data store is of a first type and the second data store is of a second type, wherein the first type and the second type are different, wherein the transaction descriptor includes (a) a read set descriptor (1704, 1846) that indicates one or more objects from which data is read during the requested transaction including a first object in the first data store (1530A-C, 1730A-C) and a second object in the second data store (1530A-C, 1730A-C), (b) a conflict check delimiter (1702, 1842) determined based at least in part on a first logical timestamp corresponding to a first previously-committed transaction at the first data store and a second logical timestamp corresponding to a second previously-committed transaction at the second data store, and (c) a write set descriptor (1706, 1846) that indicates one or more objects to which data is to be written in response to a commit of the requested transaction; identify, using the conflict check delimiter, a subset of transaction records in the persistent log to be examined for conflicts prior to committing the requested transaction; determine that no conflicts exist between the requested transaction and the subset of transaction records in the persistent log; and in response to the determination that no conflicts exist, accept the requested transaction for commit. receive a transaction descriptor (1744, 1844) of a requested transaction involving a first data store and a second data store of the plurality of data stores, wherein the first data store is of a first type and the second data store is of a second type, wherein the first type and the second type are different, wherein the transaction descriptor includes (a) a read set descriptor (1704, 1846) that indicates one or more objects from which data is read during the requested transaction including a first object in the first data store (1530A-C, 1730A-C) and a second object in the second data store (1530A-C, 1730A-C), (b) a conflict check delimiter (1702, 1842) determined based at least in part on a first logical timestamp corresponding to a first previously-committed transaction at the first data store and a second logical timestamp corresponding to a second previously-committed transaction at the second data store, and (c) a write set descriptor (1706, 1846) that indicates one or more objects to which data is to be written in response to a commit of the requested transaction; identify, using the conflict check delimiter, a subset of transaction records in the persistent log to be examined for conflicts prior to committing the requested transaction; determine that no conflicts exist between the requested transaction and the subset of transaction records in the persistent log; and in response to the determination that no conflicts exist, accept the requested transaction for commit.