Browse Prior Art Database

Using UUIDs (GUIDs) to identify element modification

IP.com Disclosure Number: IPCOM000132337D
Original Publication Date: 2005-Dec-08
Included in the Prior Art Database: 2005-Dec-08
Document File: 2 page(s) / 19K

Publishing Venue

IBM

Abstract

The comparison of different versions of large models, documents or other hierarchical systems can be made much more efficient by using unique identifiers. UUIDs (Universally Unique IDentifiers) or GUIDs (Globally Unique IDentifiers) assigned to each element in the document (or system) can be compared to quickly identify entire branches / sub-trees which have not changed; thus speeding up the comparison process.

This text was extracted from a PDF file.
This is the abbreviated version, containing approximately 51% of the total text.

Page 1 of 2

Using UUIDs (GUIDs) to identify element modification

Disclosed is an invention that provides a way to speed up comparison between different versions of a model / document / system.

Comparing different versions of a model can be a pretty time-consuming process when dealing with large models. In the absence of any "help", comparison engines need to go through each and every element in the model to identify differences in versions. Since models often have a good hierarchical structure it is possible to greatly speed up the comparison process if we can identify entire branches that have not been modified. The comparison engine can then ignore the rest of the branch / sub-tree.

One of the ways to achieve this is to generate a code which "defines" an element and its children. When comparing different versions of the model, we could look at corresponding codes and identify if there is a need to look further down the branch. If the codes are identical we can safely assume that the entire branch has not changed.

One possible solution for the code could include something like CRCs (Cyclic Redundancy Codes). A CRC however provides the opposite of what is required. In the case of CRCs ... elements having different CRCs are definitely different but elements with identical CRCs need not necessarily be the same. This does not satisfy the requirement of being absolutely certain that corresponding elements are identical.

The core idea of the invention is to use UUIDs or GUIDs as element modification codes. Using a UUID (GUID), instead of a CRC, we are able to know that if corresponding codes are identical, the elements are identical too. UUID codes can be associated with individual elements of a model to identify if they have been modified. When an element is created and saved for the first time it is assigned a "self" UUID code which is generated at save time. This UUID code does not change unless this element is modified. If the element is modified (and subsequently saved) it is given an updated UUID code at save time. UUID codes in corresponding elements from different versions of the model can then be compared. If they are same then the element has not been modified and can be assumed to be identical. A secondary "child" UUID code does the same for any children of this element. We only need to do further comparisons down the branch if the "Child" UUID codes are different. Using UUID codes as element modification identifiers is preferred because identical UUID codes means that the elements are still the same. Elements could have different UUID codes but still be identical but they cannot have the same UUID code and be different. And it is this feature that is of utmost importance when considering comparison engines.

The idea presented is very s...