Patent ID: 7925624

Claim:
A computer-implemented data storage system comprising: a processor; and a memory, wherein the memory comprises one or more computer-executable logic components that configure the system to provide data storage, including: mapping logic configured to map responsibility for storing a plurality of data sets to a plurality of data centers and to a plurality of hosts within the plurality of data centers, the plurality of data centers corresponding to a ring topology; data set replication logic configured to write a first plurality of copies of a data set at a first subset of the plurality of hosts within a first subset of the plurality of data centers, the first subset of the plurality of hosts corresponding to a preference list for the data set, and the first subset of the plurality of data centers identified by a predetermined location on the ring topology, the predetermined location identified as a function of a multi-part key corresponding to the data set; data set retrieval logic configured to be responsive to a request to provide a single copy of the data set by reading a second plurality of copies of the data set at a second subset of the plurality of hosts within a second subset of the plurality of data centers, the second subset of the plurality of hosts corresponding to a preference list for the data set, wherein the data set comparison logic is configured to evaluate causal relationships between the second plurality of copies of the data set to provide a single copy of the data set, the evaluation of causal relationships including at least one of: applying a default ordering on copies in the second plurality of copies of the data set that are not causal ancestors of other copies in the second plurality of copies of the data set, wherein the default ordering is based at least in part on changes identified in the data versioning information; merging copies in the second plurality of copies of the data set that are not causal ancestors of other copies in the second plurality of copies of the data set based at least in part on changes identified in the data versioning information; and applying a reconciliation algorithm specific to inconsistencies among copies in the second plurality of copies of the data set that are not causal ancestors of other copies in the second plurality of copies of the data set based at least in part on changes identified in the data versioning information; wherein the first subset of the plurality of hosts for writing the data set and the second subset of the plurality of hosts for reading the data set are independently determined.