Patent ID: 7627615

Claim:
A computer-implemented method for versioning of data objects comprising: storing one or more version values in a version accumulator structure, wherein each of the one or more version values indicates a different version of a data object; wherein the data object includes, and is decomposable into, a plurality of nodes; storing one or more copies of each node of the plurality of nodes, wherein each copy of the one or more copies is associated with a version range which does not overlap with any other version range that is associated with any other copy of the one or more copies; receiving a first request to perform a change to the data object, wherein the change involves a particular node of the plurality of nodes, and wherein the first request specifies an effective version value for the change; performing the change to the data object, wherein performing the change does not include making a complete copy of the data object that reflects the change, and wherein performing the change comprises: inspecting the version accumulator structure to determine a terminal version value, wherein the terminal version value is the smallest version value stored in the version accumulator structure that is greater than the effective version value specified in the first request; and performing the change based at least on the effective version value and the terminal version value; wherein performing the change to the data object further comprises adding the particular node to the plurality of nodes included in the data object, wherein adding the particular node to the plurality of nodes comprises: storing a copy of the particular node, wherein the copy of the particular node is associated with a particular version range, wherein a minimum version value included in the particular version range is set to the effective version value, and wherein a maximum version value included the particular version range is set to the terminal version value; and if the effective version value is not already stored in the version accumulator structure, then storing the effective version value in the version accumulator structure: receiving a second request to retrieve a certain version of the data object; and retrieving the certain version of the data object based on version ranges associated with the one or more copies of each node of the plurality of nodes; wherein the method is performed by one or more computing devices.