1. A system, comprising: at least one compute node that implements a transaction manager; a plurality of data nodes that maintain respective data partitions; the transaction manager, configured to: for a given transaction received at the transaction manager from a client to commit at particular ones of the plurality of data nodes: send to at least the particular data nodes respective lock requests, wherein a respective lock request sent to a respective data node identifies to lock a key to at least a portion of the respective data partition maintained at the respective data node and respective sibling keys to lock at nodes other than the respective data node of the particular nodes to perform the transaction; receive, responsive to the respective lock requests from at least the particular data nodes sent the respective lock requests, respective lock queues for the keys to the portions of the respective data partitions, wherein the respective lock queues comprise one or more lock requests for a respective one or more transactions including the respective lock request for the transaction, wherein the one or more lock requests identify respective sibling keys to lock as part of the one or more respective transactions, wherein at least one of the respective lock queues includes a respective lock request for a respective transaction that is different than the transaction; evaluate the respective lock queues from at least the particular data nodes to identify a particular transaction of the one or more respective transactions to commit, wherein the evaluation is based, at least in part, on an ordering of the one or more lock requests within the respective lock queues; and send a request to commit the identified transaction to the data nodes identified according to the sibling keys included in a respective lock request for the identified transaction.