<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>18.1. Identifier Management — Metacat 2.8.4 documentation</title> <link rel="stylesheet" href="_static/bootstrap.min.css" type="text/css" /> <link rel="stylesheet" href="_static/font-awesome/css/font-awesome.min.css" type="text/css" /> <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="_static/metacatui.css" type="text/css" /> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT: './', VERSION: '2.8.4', COLLAPSE_MODINDEX: false, FILE_SUFFIX: '.html', HAS_SOURCE: true }; </script> <script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/underscore.js"></script> <script type="text/javascript" src="_static/doctools.js"></script> <link rel="index" title="Index" href="genindex.html" /> <link rel="search" title="Search" href="search.html" /> <link rel="top" title="Metacat 2.8.4 documentation" href="index.html" /> <link rel="up" title="18. Appendix: Development Issues" href="development.html" /> <link rel="prev" title="18. Appendix: Development Issues" href="development.html" /> <link rel="next" title="18.2. DOI Management" href="doi.html" /> </head> <body> <div id="metacatDocs"> <div class="banner"> <a href="index.html"><img class="logo" src="_static/metacat-logo-white.png" /></a> <a href="index.html"><h1 class="title">Metacat: Metadata and Data Management Server</h1></a> <img class="logo-right" src="_static/nceas-logo-white.png" /> </div> <div class="related"> <h3>Navigation</h3> <ul> <li class="right"> <span id="searchbox" style="display: none;"> <form class="search" action="search.html" method="get"> <input type="text" name="q" size="18" /> <input type="submit" value="Go" class="icon-search"/> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> </span> </li> <script type="text/javascript">$('#searchbox').show(0);</script> <li class="right"> <a href="genindex.html" title="General Index" accesskey="I">index</a> </li> <li class="right"> <a href="doi.html" title="18.2. DOI Management" accesskey="N">next</a> </li> <li class="right"> <a href="development.html" title="18. Appendix: Development Issues" accesskey="P">previous</a> </li> <li class="breadcrumb first"><a href="index.html">Metacat 2.8.4 documentation</a> »</li> <li class="breadcrumb"><a href="development.html" accesskey="U">18. Appendix: Development Issues</a> »</li> </ul> </div> <div class="document"> <div class="documentwrapper"> <div class="bodywrapper"> <div class="body"> <div class="section" id="identifier-management"> <h1>18.1. Identifier Management<a class="headerlink" href="#identifier-management" title="Permalink to this headline">¶</a></h1> <dl class="docutils" id="index-0"> <dt>Author</dt> <dd>Matthew B. Jones</dd> <dt>Date</dt> <dd><ul class="first last simple"> <li>20100301 [MBJ] Initial draft of Identifier documentation</li> </ul> </dd> <dt>Goal</dt> <dd>Extend Metacat to support identifiers with arbitrary syntax</dd> <dt>Summary</dt> <dd>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.</dd> </dl> <div class="section" id="identifier-resolution"> <h2>18.1.1. Identifier Resolution<a class="headerlink" href="#identifier-resolution" title="Permalink to this headline">¶</a></h2> <p>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.</p> <div class="section" id="identifier-table-structure"> <h3>18.1.1.1. Identifier Table Structure<a class="headerlink" href="#identifier-table-structure" title="Permalink to this headline">¶</a></h3> <div class="figure" id="id1"> <img alt="_images/identifiers.png" src="_images/identifiers.png" /> <p class="caption"><span class="caption-text">Figure 1. Table structure for identifiers.</span></p> </div> </div> <div class="section" id="handling-document-read-operations"> <h3>18.1.1.2. Handling document read operations<a class="headerlink" href="#handling-document-read-operations" title="Permalink to this headline">¶</a></h3> <p>An overview of the process needed to read an object using a GUID.</p> <div class="figure" id="id2"> <img alt="_images/guid_read.png" src="_images/guid_read.png" /> <p class="caption"><span class="caption-text">Figure 2. Basic handling for string identifiers (GUIDs) as mapped to docids (LocalIDs) to retrieve an object.</span></p> </div> </div> <div class="section" id="handling-document-create-operations"> <h3>18.1.1.3. Handling document create operations<a class="headerlink" href="#handling-document-create-operations" title="Permalink to this headline">¶</a></h3> <p>An overview of the process needed to create an object using a GUID.</p> <div class="figure" id="id3"> <img alt="_images/guid_insert.png" src="_images/guid_insert.png" /> <p class="caption"><span class="caption-text">Figure 3. Basic handling for string identifiers (GUIDs) as mapped to docids (LocalIDs) to create an object.</span></p> </div> </div> <div class="section" id="handling-document-update-operations"> <h3>18.1.1.4. Handling document update operations<a class="headerlink" href="#handling-document-update-operations" title="Permalink to this headline">¶</a></h3> <p>An overview of the process needed to update an object using a GUID.</p> <div class="figure" id="id4"> <img alt="_images/guid_update.png" src="_images/guid_update.png" /> <p class="caption"><span class="caption-text">Figure 4. Basic handling for string identifiers (GUIDs) as mapped to docids (LocalIDs) to update an object.</span></p> </div> </div> <div class="section" id="handling-document-delete-operations"> <h3>18.1.1.5. Handling document delete operations<a class="headerlink" href="#handling-document-delete-operations" title="Permalink to this headline">¶</a></h3> <p>An overview of the process needed to delete an object using a GUID.</p> <div class="figure" id="id5"> <img alt="_images/guid_delete.png" src="_images/guid_delete.png" /> <p class="caption"><span class="caption-text">Figure 5. Basic handling for string identifiers (GUIDs) as mapped to docids (LocalIDs) to delete an object.</span></p> </div> </div> </div> </div> </div> </div> </div> <div class="clearer"></div> </div> <div class="footer"> <div class="footerNav"> <div class="related"> <h3>Navigation</h3> <ul> <li class="right"> <span id="searchbox" style="display: none;"> <form class="search" action="search.html" method="get"> <input type="text" name="q" size="18" /> <input type="submit" value="Go" class="icon-search"/> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> </span> </li> <script type="text/javascript">$('#searchbox').show(0);</script> <li class="right"> <a href="genindex.html" title="General Index" >index</a> </li> <li class="right"> <a href="doi.html" title="18.2. DOI Management" >next</a> </li> <li class="right"> <a href="development.html" title="18. Appendix: Development Issues" >previous</a> </li> <li class="breadcrumb first"><a href="index.html">Metacat 2.8.4 documentation</a> »</li> <li class="breadcrumb"><a href="development.html" >18. Appendix: Development Issues</a> »</li> </ul> </div> </div> <div class="small-print"> © Copyright 2012, Regents of the University of California. Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.5.2. </div> </div> </div> </body> </html>