A method for managing database transactions in a distributed database system including a plurality of nodes (108, 108a-c), the method including: maintaining, at a first node of the plurality of nodes (108, 108a-c), a first plurality of records of transactions in the system, each record in the first plurality of records being associated with a transaction and including a start time of the transaction and a start time of the oldest transaction that was active at the start time of the transaction, one of the records in the first plurality of records being a record of the oldest currently active transaction in the system; maintaining, at a second node of the plurality of nodes (108, 108a-c), a second plurality of records of transactions, the second plurality of records including records of completed transactions associated with the second node , each record in the second plurality of records including a transaction start time and a transaction end time; receiving at the second node , a message from the first node including a start time of the oldest transaction that was active at the transaction start time of the oldest currently active transaction in the system; removing, from the second plurality of records, any records of completed transactions with a transaction end time occurring before the start time of the oldest transaction; receiving, at the second node , a first transaction for accessing a data element associated with the second node ; maintaining, at the second node , a third plurality of records including records of active transactions at the second node ; and determining whether the first transaction is allowed to access a version of the data element of a plurality of versions of the data element based on one or both of the second plurality of records and the third plurality of records. maintaining, at a first node of the plurality of nodes (108, 108a-c), a first plurality of records of transactions in the system, each record in the first plurality of records being associated with a transaction and including a start time of the transaction and a start time of the oldest transaction that was active at the start time of the transaction, one of the records in the first plurality of records being a record of the oldest currently active transaction in the system; maintaining, at a second node of the plurality of nodes (108, 108a-c), a second plurality of records of transactions, the second plurality of records including records of completed transactions associated with the second node , each record in the second plurality of records including a transaction start time and a transaction end time; receiving at the second node , a message from the first node including a start time of the oldest transaction that was active at the transaction start time of the oldest currently active transaction in the system; removing, from the second plurality of records, any records of completed transactions with a transaction end time occurring before the start time of the oldest transaction; receiving, at the second node , a first transaction for accessing a data element associated with the second node ; maintaining, at the second node , a third plurality of records including records of active transactions at the second node ; and determining whether the first transaction is allowed to access a version of the data element of a plurality of versions of the data element based on one or both of the second plurality of records and the third plurality of records. <EOS>