Object stores are used as building blocks to construct a system with variable
complexity on a network. Typically, an object store comprises information (e.g.,
data) stored in object format, or objects. The objects and object stores are managed
by an object version management mechanism that adapts to different object store
types and optimizes resource consumption by each object store. Various data fields
are used to indicate an object's version within an object store. Version information
is used to compare the states among matching object replicas in matching object
stores. Utilizing both the object store based system and the object version management
mechanism, a data synchronization protocol is developed. The data synchronization
protocol is capable of adapting to different types of object stores and the characteristics
of network connection media to optimize data synchronization.