A repository contains multiple versions of an object, and any version of the object can be modified by a user, as and when necessary. A table for one object ("first object") that is contained in another object ("second object") has at least two columns, namely one column for a minimum version of the second object and another column for a maximum version of the second object. If a number of versions of the first object are responsive to a query, then one version of the first object is selected if a version of the second object that is responsive to the query happens to be in the range defined by the just-described minimum version number and the maximum version number. Depending on the embodiment, the second object can be an immediate parent of the first object, or can be an ancestor (also called "first class object") of the first object that is not contained in any other object. In some embodiments, one or more attributes of the first object are stored in a first table along with a unique identifier and a version number. In addition, information on relations of the first object to other objects as well as an identity of a configuration (to which the current version of the first object belongs) are stored in a second table. Therefore, a pair of tables are used for each object, so as to decouple information that defines an object from information on relationships of the object. If a change happens in just the relationship of an object then no change is made to the table containing the definition of the object. Similarly, if a change happens in just the definition of the object, then no change is made to the table containing the relations of the object. Moreover, when a change happens to an object, if the object has a number of ancestors and decendants only an immediate parent of the object is updated, thereby to eliminate a versioning chain reaction (i.e. other objects are not affected).

 
Web www.patentalert.com

> System and method for a snapshot query during database recovery

~ 00342