17.2. Identifier Management

Author

Matthew B. Jones

Date
  • 20100301 [MBJ] Initial draft of Identifier documentation

Goal

Extend Metacat to support identifiers with arbitrary syntax

Summary

Metacat currently supports identifier strings called ‘docids’ that have the syntax ‘scope.object.revision’, such as ‘foo.34.1’ (we will refer to these as ‘LocalIDs’). We now want Metacat to support identifiers that are arbitrary strings, but still enforce uniqueness and proper revision handling (refer to these as GUIDs). Metacat must be able to accept these strings as identifiers for all CRUD operations, and reference them in search results.

17.2.1. Identifier Resolution

Because Metacat uses LocalIDs throughout the code for references to objects, and that LocalID has a constrained structure that includes semantics about revisions in the identifier, it is difficult to wholesale replace it with less-constrained string identifiers without re-writing much of Metacat. Thus, our alternate strategy is to wrap the Metacat APIs with a identifier resolution layer that keeps track of the unconstrained GUIDs and maps them to constrained local identifiers which are used internally within Metacat. The basic identifer table model is shown in Figure 1, while the basic strategy for retrieving an object is shown in Figure 2, creating an object is shown in Figure 3, updating an object in Figure 4, and deleting an object is shown in Figure 5.

17.2.1.1. Identifier Table Structure

_images/identifiers.png

Figure 1. Table structure for identifiers.

17.2.1.2. Handling document read operations

An overview of the process needed to read an object using a GUID.

_images/guid_read.png

Figure 2. Basic handling for string identifiers (GUIDs) as mapped to docids (LocalIDs) to retrieve an object.

17.2.1.3. Handling document create operations

An overview of the process needed to create an object using a GUID.

_images/guid_insert.png

Figure 3. Basic handling for string identifiers (GUIDs) as mapped to docids (LocalIDs) to create an object.

17.2.1.4. Handling document update operations

An overview of the process needed to update an object using a GUID.

_images/guid_update.png

Figure 4. Basic handling for string identifiers (GUIDs) as mapped to docids (LocalIDs) to update an object.

17.2.1.5. Handling document delete operations

An overview of the process needed to delete an object using a GUID.

_images/guid_delete.png

Figure 5. Basic handling for string identifiers (GUIDs) as mapped to docids (LocalIDs) to delete an object.