A method comprising: storing a list of data transactions in a transaction log, wherein the list of data transactions represents data changes made to a data set over a period of time; reading, using one or more processors at a computer system, a respective data transaction from the transaction log; adding the respective data transaction into a first transaction queue in a plurality of concurrent transaction queues; reading the respective data transaction from the first transaction queue, wherein a plurality of data transactions are concurrently read off the plurality of concurrent transaction queues; determining whether the respective data transaction is dependent on any other currently pending data transaction, wherein a data transaction is currently pending if it has been read from the transaction log but not applied to a reconstructed data set; in accordance with a determination that the respective data transaction is not dependent on any other currently pending data transaction: applying the respective data transaction to the reconstructed data set; and in accordance with a determination that the respective data transaction is dependent on a currently pending second data transaction: delaying commitment of the respective data transaction until the second data transaction has been applied to the reconstructed data set; wherein a data transaction is represented by a data transaction record, wherein a data transaction record includes at least one data change and a target data address; and wherein determining whether the respective data transaction is dependent on any other currently pending data transaction further includes: accessing a data dependency table that stores dependency data for the data set; based on the target data address stored in a data transaction record associated with the respective data transaction, accessing an entry in the data dependency table that is associated with the target data address and determining whether the entry includes an identifier of a currently pending data transaction; and in accordance with a determination that the entry includes an identifier of a currently pending data transaction, updating the data transaction record associated with the respective data transaction to include dependency data. storing a list of data transactions in a transaction log, wherein the list of data transactions represents data changes made to a data set over a period of time; reading, using one or more processors at a computer system, a respective data transaction from the transaction log; adding the respective data transaction into a first transaction queue in a plurality of concurrent transaction queues; reading the respective data transaction from the first transaction queue, wherein a plurality of data transactions are concurrently read off the plurality of concurrent transaction queues; determining whether the respective data transaction is dependent on any other currently pending data transaction, wherein a data transaction is currently pending if it has been read from the transaction log but not applied to a reconstructed data set; in accordance with a determination that the respective data transaction is not dependent on any other currently pending data transaction: applying the respective data transaction to the reconstructed data set; and in accordance with a determination that the respective data transaction is dependent on a currently pending second data transaction: delaying commitment of the respective data transaction until the second data transaction has been applied to the reconstructed data set; applying the respective data transaction to the reconstructed data set; and in accordance with a determination that the respective data transaction is dependent on a currently pending second data transaction: delaying commitment of the respective data transaction until the second data transaction has been applied to the reconstructed data set; accessing a data dependency table that stores dependency data for the data set; based on the target data address stored in a data transaction record associated with the respective data transaction, accessing an entry in the data dependency table that is associated with the target data address and determining whether the entry includes an identifier of a currently pending data transaction; and in accordance with a determination that the entry includes an identifier of a currently pending data transaction, updating the data transaction record associated with the respective data transaction to include dependency data.