Patent ID: 7707181

Claim:
A system for distributing replication commands from a distributor to a subscriber, the system comprising: a memory; a distributor for execution on a first computer in a network including a plurality of computers, the distributor comprising: a command queue that receives transactional replication commands from a publisher and stores the transactional replication commands in the memory, wherein each replication command corresponds to a change in data in a data row and is associated with a respective hash of a primary key of the data row to which the replication command is associated; a plurality of command buckets, wherein each of the plurality of command buckets is associated with a respective connection to the command queue and only one data row, and wherein at least a portion of a communication and logging overhead associated with a two phase commit operation is avoided by including for each of the plurality of command buckets an executor that executes a coordinated commit operation upon the plurality of command buckets at substantially the same time; a dispatcher, wherein the dispatcher: sorts the transactional replication commands stored in the command queue as a function of each hash associated with a transactional replication command, and by applying a logical sequence number of commit record in order to identify which commands amongst the transactional replication commands of the command queue need to be re-applied as a result of an unsuccessful commit operation; transmits each transactional replication command in the command queue to an associated command bucket as a function of the hash associated with the transactional replication command using the respective connection for the associated command bucket such that each command bucket stores a respective set of replication commands having a same hash value; marks each of the command buckets as ready to be committed; stops sending new transactional replication commands to the marked command buckets; and waits to receive from each executor, an event that signals a successful completion of the coordinated commit operation, thereby detecting a mixture of successful and unsuccessful commit operations amongst the plurality of command buckets.