1. A method for replicating data in a distributed transactional system, comprising: at a first node of a cluster, committing a per-transaction write set that comprises a plurality of write operations that are performed against a first database maintained by the first node; replicating one or more per-transaction write sets from the first node to a second node of the cluster; and upon receiving a read query at the second node, the second node performing: parsing the read query to identify a read set, calculating a write set conflict window for the read query, and upon determining that the read set conflicts with one or more write sets in the write set conflict window, waiting to process the read query until all write sets in the write set conflict window that conflict with the read query are committed.