WO2011049553A1 - Universally unique semantic identifiers - Google Patents
Universally unique semantic identifiers Download PDFInfo
- Publication number
- WO2011049553A1 WO2011049553A1 PCT/US2009/061224 US2009061224W WO2011049553A1 WO 2011049553 A1 WO2011049553 A1 WO 2011049553A1 US 2009061224 W US2009061224 W US 2009061224W WO 2011049553 A1 WO2011049553 A1 WO 2011049553A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- universally unique
- metadata
- unique identifier
- identifier
- embedding
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/51—Discovery or management thereof, e.g. service location protocol [SLP] or web services
Definitions
- UUIDs Universally unique identifiers
- objects e g, data files, software components, network components, and other entities
- the UUIDs that are assigned to the stored objects are used to identify the objects so that they can be retrieved from memory.
- Existing solutions to the problem of dereferencing UUID-based identifiers to the data that they identify typically involve a centralized registry or lookup service that caches extra information related to the identified objects that allows the objects to be retrieved.
- mapping table that maps a UUID to information about the database table and primary key that points to the object identified by the UUID. While this kind of approach allows very efficient lookup of data based on a UUID, it requires the additional mapping information to be managed and maintained, which introduces the potential for the mapping information to become "stale"
- FIG. 1 is a block diagram of an embodiment of an object management system.
- FIG 2 is a flow diagram of an embodiment of a method of generating a universally unique semantic identifier.
- FIG. 3 is a diagrammatic view of an embodiment of a method of generating a universally unique semantic identifier.
- FIG. 4 is a flow diagram of an embodiment of a method of using a universally unique semantic identifier.
- FIG. 5 is a block diagram of an embodiment of the object management system of FIG 1 responding to a request for an object
- FIG 6 is a block diagram of an embodiment of a computer system that incorporates an embodiment of the object management system of FIG. 1.
- a "computer” is any machine, device, or apparatus that processes data according to computer-readable instructions that are stored on a computer-readable medium either temporarily or permanently.
- a "computer operating system” is a software component of a computer system that manages and coordinates the performance of tasks and the sharing of computing and hardware resources.
- a "software application” (also referred to as software, an application, computer software, a computer application, a program, and a computer program) is a set of instructions that a computer can interpret and execute to perform one or more specific tasks.
- a " data file” is a block of information that durably stores data for use by a software application.
- a "universly unique identifier" (also referred to as a globally unique identifier) is a number that is used to uniquely identify an object in a computer system or on a network (e.g., the internet)
- a universally unique identifier is generated without requiring a centralized service or authority to administer.
- a universally unique identifier typically is an octet string of 16 octets (128 bits). Depending on the specific mechanism used to generate a universally unique identifier, the universally unique identifier either is guaranteed to be different or is at least extremely likely to be different from any other universally unique identifier.
- a universally unique identifier can be used for a variety of different purposes, including tagging temporary objects and reliably identifying persistent objects across a network.
- a universally unique identifier may be used as part of an object identifier (OID) value or in a Uniform Resource Name (URN)
- An "object” is any entity that can be identified.
- Exemplary types of objects include data files (e.g. , documents and other data structures), hosts, and application clients.
- Metadata is data that describes data.
- Exemplary types of metadata include data about data elements or attributes (e.g., name, size, and data type), data about records or data structures (e.g., length, fields, and columns), and data about data (e.g., where it is located, how it is associated, and ownership). Metadata may include descriptive information about the context, quality and condition, or characteristics of the data.
- the term “includes” means includes but not limited to, and the term “including '” means including but not limited to.
- the embodiments that are described herein provide improved systems and methods that enable generation of a universally unique "semantic" identifier of an object that has embedded application-specific information about the object that does not interfere with the use of the identifier as a universally unique identifier.
- identifiers may be generated without requiring a central service.
- the embedded information includes the storage location of the identified object, there is no need for a lookup service to provide a mapping between the identifier and the storage location; consequently, there is no risk that such mapping information might become stale because the storage location is persisted with the object identifier.
- the universally unique identifiers described herein may be used in a wide variety of different application environments. Applications with no awareness or understanding of the information embedded in these types of identifiers may use these identifiers in the same ways that they would use any other universally unique object identifiers (e.g., use a mapping service to resolve the identifier to the object)
- FIG. 1 shows an embodiment of an object management system 10 that includes an object manager 12 and a semantic identifier (ID) generator 14.
- the object manager 12 interfaces applications to objects.
- Embodiments of the object manager 12 may manage the objects in accordance with any type of object file system, including disk file systems, flash memory file systems, database file systems, transactional file systems, network file systems, and shared disk file systems.
- Among the common types of operations that the object manager 12 may perform with respect to the managed objects are create, open, edit, view, print, play, rename, move, copy, delete, attributes, properties, search/find, and permissions.
- the semantic ID generator 14 generates universally unique semantic identifiers 16 (UUSIDs) in response to requests 18 from the object manager 12.
- the object manager 12 assigns each UUSID 16 to a respective object 22, which typically are stored in a physical storage device 24
- the universally unique semantic identifier 16 typically is assigned to the object 22 at the time the object 22 is created.
- the object manager 12 may, for example, create the object 22 in response to a request 28 from an application or other entity In this process, the object manager 12 determines a storage location for the object 22 in the physical storage device 24 and requests the semantic ID generator 14 to generate a universally unique semantic identifier 16 for the object 22.
- the object manager 12 allocates storage for the object 22 in the physical storage device 24 and obtains metadata that indicates the storage location of the object 22 in the physical storage device 24.
- the process of creating the object 22 also typically involves storing other object metadata 30 that provides additional information about the object 22.
- this object metadata 30 includes one or more of the following types of data: the object's content type (e.g., document, web page, image, audio file, and video file), the object's device type (e.g., block, character, socket, and subdirectory), the size of the object, the time that the object was last modified, the object creation time, the time the object was last accessed, and the time that the object meta-data was changed, the object's owner user-ID and group-ID. and access permission settings (e.g., readonly and executable).
- the semantic ID generator 14 is configured to embed at least some of the object metadata into the universally unique semantic identifier 16.
- the embedded metadata may be extracted by the object manager 12 or other application directly from the universally unique semantic identifier 16 so that a separate table that maps the universally unique semantic identifier is not required
- the object manager 12 also manages an allocation table 20.
- the allocation table 20 contains records 22 that associate the UUSIDs 16 with attributes 26 that include mappings of the storage locations (e.g . disk addresses) of the objects 22 in the physical storage device 24
- the object metadata 30 may be stored in one or more of the attributes 26 sections of the allocation table records 22 and one or more other databases; the object metadata 30 also may be distributed across the attributes 26 sections of the allocation table records 22 and one or more other data bases.
- FIG. 2 shows an embodiment of a method by which the semantic ID generator 14 generates the universally unique semantic identifiers 16.
- the semantic ID generator 14 In accordance with the method of FIG. 2. the semantic ID generator 14 generates a universally unique identifier (FIG. 2, block 32). The semantic ID generator 14 determines object metadata providing information about an object (FIG. 2, block 34). The semantic ID generator 14 produces a universally unique semantic identifier of the object from the universally unique identifier (FIG. 2. block 36). In this process, the semantic ID generator 14 embeds the object metadata into the universally unique identifier
- the semantic ID generator 14 may generate universally unique identifiers (FIG. 2, block 34) in a variety of different ways.
- the semantic ID generator 14 generates the universally unique identifiers in accordance with the RFC 4122 standard, which defines methods of creating 128-bit universally unique identifiers that are unique across space and time without requiring use of a central registrar (see Network Working Group, ⁇ Universally Unique Identifier (UUID) URN Namespace," P. J Leach and R. Salz, July 2005, the entirety of which is incorporated herein by reference).
- Each of the universally unique identifiers has the following fields encoded into a 16 octet format with the most significant byte first, timejow, time_mid, time_hi_and_version, clock_seq_hi_and_reserved, clock_seq_low, and node.
- Each of the universally unique identifiers includes a section containing a version number (part of the timeJiigh_and_version field) that identifies a version type of the universally unique identifier, and several time fields (i.e , timejow. time_mid, and time_hi_and_version fields).
- the universally unique identifiers correspond to UUID versions 3 and 5 of the RFC 4122 standard (see ⁇ 4 3 and 4.5) These UUIDs are generated from names that are drawn from, and unique within, a namespace.
- the UUIDs that are generated in accordance with these mechanisms have the following properties:
- namespace should be different with very high probability.
- namespaces should be different with very high probability.
- the semantic ID generator 14 applies a hash function to data that includes a namespace and a unique name within the namespace to produce a hash, and creates the universally unique identifier from the hash.
- this process involves:
- the universally unique identifiers correspond to UUID version 4 of the RFC 4122 standard (see ⁇ 4.4) These UUIDs are generated from random or pseudorandom numbers.
- the two most significant bits (bits 6 and 7) of the clock_seq_hi_and_reserved are set to zero and one, respectively; the four most significant bits (bits 12 through 15) of the time_ hi_and_version field are set to the 4-bit version number; and all the other bits are set to randomly (or pseudo- randomly) chosen values.
- the semantic ID generator 14 may determine any type of object metadata to embed into the universally unique identifier (FIG. 2, block 34)
- Exemplary types of object metadata that could be embedded include one or more of the following types of data: the storage location of the object (e g .
- an address of a storage location of the object an address of a database table that includes a pointer to the object, and an address of a network node on which the object is physically stored
- the object's content type e.g., document, web page, image, audio file, and video file
- the object's device type e.g., block, character, socket, and subdirectory
- the size of the object the time that the object was last modified, the object creation time, the time the object was last accessed, and the time that the object meta-data was changed, the object's owner user-ID and group-ID, and access permission settings (e.g. , read-only and executable).
- Any other data relating to the object also may be selected as the object metadata.
- the semantic ID generator 14 embeds the object metadata into the universally unique identifier (FIG. 2, block 36).
- the object metadata may be embedded into the universally unique identifier m a variety of different ways so long as the embedded information does not prevent the resulting universally unique semantic identifier from being usable as a universally unique identifier
- the semantic ID generator 14 embeds the object metadata into the universally unique identifier by replacing a portion of the universally unique identifier with an encoding of the object metadata.
- this process involves replacing a fixed length portion of the universally unique identifier with an encoding of the object metadata that has a length equal to the fixed length
- embodiments of the semantic ID generator 14 embed the object metadata into the universally unique identifier at a location outside the section containing the version number
- the semantic ID generator 14 embeds the object metadata into at least a portion of the time field of the universally unique identifier. For example, in some embodiments, once the version 3 or 5 UUID has been generated, the semantic ID generator 14 replaces octets zero to three (which correspond to the time_low field of the UUID) with an application-specific encoding of the object metadata.
- embodiments of the semantic ID generator 14 embed the object metadata into the universally unique identifier at a location outside the section containing the version number For example, in some embodiments, once the version 4 UUID has been generated, the semantic ID generator 14 replaces octets zero to three (which correspond to the timejow field of the UUID) with an application-specific encoding of the object metadata.
- FIG. 3 shows a diagrammatic flow diagram of an embodiment of a process of producing the universally unique semantic identifier 50 from a universally unique identifier 40 and the determined metadata 42
- the universally unique identifier 40 is generated by a generator algorithm 44 that corresponds to a version number 46 that is embedded in the universally unique identifier 40.
- the universally unique identifier 40 also includes a relative ID portion 48, which corresponds to the non-version number portions of the universally unique identifier 40.
- the semantic ID generator 14 keeps the version number 46 and overwrites a portion of the relative ID portion 48 with an application-specific encoding 52 of the object metadata 42 to produce a modified relative ID portion 54.
- FIG. 4 shows an embodiment of a method by which the object management system 10 processes a service request relating to the object 22
- the object management system 10 receives a service request relating to the object 22 (FIG. 4, block 60).
- the service request includes a universally unique semantic identifier 16 of the object 22
- the universally unique semantic identifier 16 includes object metadata providing information about the object 22.
- the object management system 10 extracts the object metadata from the universally unique semantic identifier 16 (FIG. 4, block 58).
- the object management system 10 performs an operation with respect to the object 22 based on the extracted object metadata (FIG. 4. block 60).
- FIG 5 shows an exemplary use model of the object management system 10.
- the object management system 10 receives a request 62 for access to the object 22.
- the request 62 includes the universally unique semantic identifier 16 of the object 22.
- the object manager 12 parses the request 60 for the universally unique semantic identifier 16 and extracts the embedded metadata from the universally unique semantic identifier 16.
- the embedded metadata includes the storage location of the object 22 in the physical storage device.
- the object manager 12 uses the extracted storage information metadata to retrieve a copy 64 of the object 22 from the storage location m the physical storage device 24; the object manager 12 then sends the copy 64 of the object 22 to the requesting entity In this way, the object manager 12 avoids the need to have to look up the storage address in the allocation table 20. In fact, in this approach, there is no need for the object manager 12 to maintain the allocation table 20.
- Embodiments of the object management system 10 may be any object management system 10
- modules may be implemented by one or more discrete modules (or data processing components) that are not limited to any particular hardware, firmware, or software configuration.
- these modules may be implemented in any computing or data processing environment, including in digital electronic circuitry (e.g., an application-specific integrated circuit, such as a digital signal processor (DSP)) or in computer hardware, firmware, device driver, or software.
- DSP digital signal processor
- the modules are combined into a single data processing component.
- the respective functionalities of each of one or more of the modules are performed by a respective set of multiple data processing components.
- the modules of the object management system 10 may be co-located on a single apparatus or they may be distributed across multiple apparatus; if distributed across multiple apparatus, these modules and the display 24 may communicate with each other over local wired or wireless connections, or they may communicate over global network connections (e.g., communications over the Internet).
- process instructions for implementing the methods that are executed by the embodiments of the image match detection system 10, as well as the data they generate, are stored in one or more machine-readable media.
- Storage devices suitable for tangibly embodying these instructions and data include all forms of non-volatile computer-readable memory, including, for example, semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices, magnetic disks such as internal hard disks and removable hard disks, magneto-optical disks, DVD-ROM/RAM. and CD- ROM/RAM
- object management system 10 may be implemented in any one of a wide variety of electronic devices, including desktop computers, workstation computers, and server computers.
- FIG. 6 shows an embodiment of a computer system 140 that can implement any of the embodiments of the object management system 10 that are described herein.
- the computer system 140 includes a processing unit 142 (CPU), a system memory 144, and a system bus 146 that couples processing unit 142 to the various components of the computer system 140.
- the processing unit 142 typically includes one or more processors, each of which may be in the form of any one of various commercially available processors.
- the system memory 144 typically includes a read only memory (ROM) that stores a basic input/output system (BIOS) that contains start-up routines for the computer system 140 and a random access memory (RAM).
- ROM read only memory
- BIOS basic input/output system
- RAM random access memory
- the system bus 146 may be a memory bus, a peripheral bus or a local bus, and may be compatible with any of a variety of bus protocols, including PCI, VESA, MicroChannel, ISA, and EISA.
- the computer system 140 also includes a persistent storage memory 148 (e.g., a hard drive, a floppy drive, a CD ROM drive, magnetic tape drives, flash memory devices, and digital video disks) that is connected to the system bus 146 and contains one or more computer-readable media disks that provide non-volatile or persistent storage for data, data structures and computer-executable instructions
- a user may interact (e.g.. enter commands or data) with the computer 140 using one or more input devices 150 (e.g.. a keyboard, a computer mouse, a microphone, joystick, and touch pad).
- Information may be presented through a user interface that is displayed to a user on the display 151 (implemented by, e.g. , a display monitor), which is controlled by a display controller 154 (implemented by, e.g., a video graphics card).
- the computer system 140 also typically includes peripheral output devices, such as speakers and a printer.
- One or more remote computers may be connected to the computer system 140 through a network interface card (NIC) 156
- NIC network interface card
- the system memory 144 also stores the image match detection system 10, a graphics driver 158. and processing information 160 that includes input data, processing data, and output data.
- the object management system 10 interfaces with the graphics driver 158 (e g., via a DirectX® component of a Microsoft Windows® operating system) to present a user interface on the display 151 for managing and controlling the operation of the object management system 10.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
A universally unique identifier (40) is generated. Object metadata (30) providing information about an object (22) is determined. A universally unique semantic identifier (16) of the object (22) is produced from the universally unique identifier (40). In this process, the object metadata (30) is embedded into the universally unique identifier (40). When a service request (62) that includes the universally unique semantic identifier (16) of the object (22) is received, the object metadata (30) is extracted from the universally unique semantic identifier (16), and an operation is performed with respect to the object (22) based on the extracted object metadata (30).
Description
UNIVERSALLY UNIQUE SEMANTIC IDENTIFIERS
BACKGROUND
[0001] Universally unique identifiers (UUIDs) (also referred to as globally unique identifiers) are used to uniquely identify objects (e g, data files, software components, network components, and other entities) that are stored in memory devices in a wide variety of computing environments. The UUIDs that are assigned to the stored objects are used to identify the objects so that they can be retrieved from memory. Existing solutions to the problem of dereferencing UUID-based identifiers to the data that they identify typically involve a centralized registry or lookup service that caches extra information related to the identified objects that allows the objects to be retrieved. For example, in a relational database system, this may take the form of a "mapping table" that maps a UUID to information about the database table and primary key that points to the object identified by the UUID. While this kind of approach allows very efficient lookup of data based on a UUID, it requires the additional mapping information to be managed and maintained, which introduces the potential for the mapping information to become "stale"
[0002] What are needed are improved systems and methods of generating universally unique identifiers.
DESCRIPTION OF DRAWINGS
[0003] FIG. 1 is a block diagram of an embodiment of an object management system.
[0004] FIG 2 is a flow diagram of an embodiment of a method of generating a universally unique semantic identifier.
[0005] FIG. 3 is a diagrammatic view of an embodiment of a method of generating a universally unique semantic identifier.
[0006] FIG. 4 is a flow diagram of an embodiment of a method of using a universally unique semantic identifier.
[0007] FIG. 5 is a block diagram of an embodiment of the object management system of FIG 1 responding to a request for an object
[0008] FIG 6 is a block diagram of an embodiment of a computer system that incorporates an embodiment of the object management system of FIG. 1.
DETAILED DESCRIPTION
[0009] In the following description, like reference numbers are used to identify like elements. Furthermore, the drawings are intended to illustrate major features of exemplary embodiments in a diagrammatic manner. The drawings are not intended to depict every feature of actual embodiments nor relative dimensions of the depicted elements, and are not drawn to scale. Elements shown with dashed lines are optional elements in the illustrated embodiments incorporating such elements.
I. DEFINIITON OF TERMS
[0010] A " computer" is any machine, device, or apparatus that processes data according to computer-readable instructions that are stored on a computer-readable medium either temporarily or permanently. A "computer operating system" is a software component of a computer system that manages and coordinates the performance of tasks and the sharing of computing and hardware resources. A "software application" (also referred to as software, an application, computer software, a computer application, a program, and a computer program) is a set of instructions that a computer can interpret and execute to perform one or more specific tasks. A " data file" is a block of information that durably stores data for use by a software application.
[0011] A " universally unique identifier" (also referred to as a globally unique identifier) is a number that is used to uniquely identify an object in a computer system or on a network (e.g., the internet) A universally unique identifier is generated without requiring a centralized service or authority to administer. A universally unique identifier typically is an octet string of 16 octets (128 bits). Depending on the specific mechanism used to generate a universally unique identifier, the universally unique identifier either is guaranteed to be different or is at least extremely likely to be different from any other universally unique identifier. A universally unique identifier can be used for a variety of different purposes, including tagging temporary objects and reliably identifying persistent objects across a network. A universally unique identifier may be used as part of an object identifier (OID) value or in a Uniform Resource Name (URN)
[0012] An " object" is any entity that can be identified. Exemplary types of objects include data files (e.g. , documents and other data structures), hosts, and application clients.
[0013] "Metadata" is data that describes data. Exemplary types of metadata include data about data elements or attributes (e.g., name, size, and data type), data
about records or data structures (e.g., length, fields, and columns), and data about data (e.g., where it is located, how it is associated, and ownership). Metadata may include descriptive information about the context, quality and condition, or characteristics of the data.
[0014] As used herein, the term "includes" means includes but not limited to, and the term "including'" means including but not limited to. The term "based on' means based at least in part on.
II. OVERVIEW
[0015] The embodiments that are described herein provide improved systems and methods that enable generation of a universally unique "semantic" identifier of an object that has embedded application-specific information about the object that does not interfere with the use of the identifier as a universally unique identifier. Advantageously, such identifiers may be generated without requiring a central service. In addition, in embodiments in which the embedded information includes the storage location of the identified object, there is no need for a lookup service to provide a mapping between the identifier and the storage location; consequently, there is no risk that such mapping information might become stale because the storage location is persisted with the object identifier.
[0016] The universally unique identifiers described herein may be used in a wide variety of different application environments. Applications with no awareness or understanding of the information embedded in these types of identifiers may use these identifiers in the same ways that they would use any other universally unique object identifiers (e.g., use a mapping service to resolve the identifier to the object)
III AN EXEMPLARY OPERATING ENVIRONMENT
[0017] FIG. 1 shows an embodiment of an object management system 10 that includes an object manager 12 and a semantic identifier (ID) generator 14. The object manager 12 interfaces applications to objects. Embodiments of the object manager 12 may manage the objects in accordance with any type of object file system, including disk file systems, flash memory file systems, database file systems, transactional file systems, network file systems, and shared disk file systems. Among the common types of operations that the object manager 12 may perform with respect to the managed objects are create, open, edit, view, print, play, rename, move, copy, delete, attributes,
properties, search/find, and permissions. The semantic ID generator 14 generates universally unique semantic identifiers 16 (UUSIDs) in response to requests 18 from the object manager 12. The object manager 12 assigns each UUSID 16 to a respective object 22, which typically are stored in a physical storage device 24
[0018] The universally unique semantic identifier 16 typically is assigned to the object 22 at the time the object 22 is created. The object manager 12 may, for example, create the object 22 in response to a request 28 from an application or other entity In this process, the object manager 12 determines a storage location for the object 22 in the physical storage device 24 and requests the semantic ID generator 14 to generate a universally unique semantic identifier 16 for the object 22. The object manager 12 allocates storage for the object 22 in the physical storage device 24 and obtains metadata that indicates the storage location of the object 22 in the physical storage device 24. The process of creating the object 22 also typically involves storing other object metadata 30 that provides additional information about the object 22. In some embodiments, this object metadata 30 includes one or more of the following types of data: the object's content type (e.g., document, web page, image, audio file, and video file), the object's device type (e.g., block, character, socket, and subdirectory), the size of the object, the time that the object was last modified, the object creation time, the time the object was last accessed, and the time that the object meta-data was changed, the object's owner user-ID and group-ID. and access permission settings (e.g., readonly and executable). As explained in detail below, the semantic ID generator 14 is configured to embed at least some of the object metadata into the universally unique semantic identifier 16. The embedded metadata may be extracted by the object manager 12 or other application directly from the universally unique semantic identifier 16 so that a separate table that maps the universally unique semantic identifier is not required
[0019] Although a separate mapping table is not required, some embodiments of the object manager 12 also manages an allocation table 20. The allocation table 20 contains records 22 that associate the UUSIDs 16 with attributes 26 that include mappings of the storage locations (e.g . disk addresses) of the objects 22 in the physical storage device 24 In some embodiments, the object metadata 30 may be stored in one or more of the attributes 26 sections of the allocation table records 22 and one or more other databases; the object metadata 30 also may be distributed across
the attributes 26 sections of the allocation table records 22 and one or more other data bases.
IV GENERATING UNIVERSALLY UNIQUE SEMANTIC IDENTIFIERS
[0020] FIG. 2 shows an embodiment of a method by which the semantic ID generator 14 generates the universally unique semantic identifiers 16.
[0021] In accordance with the method of FIG. 2. the semantic ID generator 14 generates a universally unique identifier (FIG. 2, block 32). The semantic ID generator 14 determines object metadata providing information about an object (FIG. 2, block 34). The semantic ID generator 14 produces a universally unique semantic identifier of the object from the universally unique identifier (FIG. 2. block 36). In this process, the semantic ID generator 14 embeds the object metadata into the universally unique identifier
[0022] The semantic ID generator 14 may generate universally unique identifiers (FIG. 2, block 34) in a variety of different ways. For example, in some embodiments, the semantic ID generator 14 generates the universally unique identifiers in accordance with the RFC 4122 standard, which defines methods of creating 128-bit universally unique identifiers that are unique across space and time without requiring use of a central registrar (see Network Working Group, Ά Universally Unique Identifier (UUID) URN Namespace," P. J Leach and R. Salz, July 2005, the entirety of which is incorporated herein by reference). These universally unique identifiers have the following fields encoded into a 16 octet format with the most significant byte first, timejow, time_mid, time_hi_and_version, clock_seq_hi_and_reserved, clock_seq_low, and node. Each of the universally unique identifiers includes a section containing a version number (part of the timeJiigh_and_version field) that identifies a version type of the universally unique identifier, and several time fields (i.e , timejow. time_mid, and time_hi_and_version fields).
[0023] In some embodiments, the universally unique identifiers correspond to UUID versions 3 and 5 of the RFC 4122 standard (see §§ 4 3 and 4.5) These UUIDs are generated from names that are drawn from, and unique within, a namespace. The UUIDs that are generated in accordance with these mechanisms have the following properties:
• UUIDs that are generated at different times from the same name in the same namespace are equal
• UUIDs that are generated from two different names in the same
namespace should be different with very high probability.
• UUIDs that are generated from the same name in two different
namespaces should be different with very high probability.
• Two equal UUIDs that were generated from names must have been generated from the same name in the same namespace with very high probability.
[0024] In the process of generating universally unique identifiers that correspond to UUID versions 3 and 5 of the RFC 4122 standard, the semantic ID generator 14 applies a hash function to data that includes a namespace and a unique name within the namespace to produce a hash, and creates the universally unique identifier from the hash. In particular this process involves:
• Allocate a UUID to use as a "name space ID" for all UUIDs generated from names in that name space
• Choose a hash algorithm (e.g., MD5 [4] or SHA-1 ).
• Convert the name to a canonical sequence of octets; put the name space ID in network byte order.
• Compute the hash of the name space ID concatenated with the name.
• Set octets zero through 3 of the timejow field to octets zero through 3 of the hash.
• Set octets zero and one of the time_mid field to octets 4 and 5 of the hash.
• Set octets zero and one of the time_ hi_and_version field to octets 6 and 7 of the hash.
• Set the four most significant bits (bits 12 through 15) of the time_hi_and_version field to the appropriate 4-bit version number.
• Set the clock_seq_hi_and_reserved field to octet 8 of the hash.
• Set the two most significant bits (bits 6 and 7) of the
clock_seq_hLand_reserved to zero and one. respectively.
• Set the clock_seq_low field to octet 9 of the hash.
• Set octets zero through five of the node field to octets 10 through 15 of the hash.
• Convert the resulting UUID to local byte order
[0025] In some embodiments, the universally unique identifiers correspond to UUID version 4 of the RFC 4122 standard (see § 4.4) These UUIDs are generated from random or pseudorandom numbers. In this process, the two most significant bits
(bits 6 and 7) of the clock_seq_hi_and_reserved are set to zero and one, respectively; the four most significant bits (bits 12 through 15) of the time_ hi_and_version field are set to the 4-bit version number; and all the other bits are set to randomly (or pseudo- randomly) chosen values.
[0026] In general, the semantic ID generator 14 may determine any type of object metadata to embed into the universally unique identifier (FIG. 2, block 34) Exemplary types of object metadata that could be embedded include one or more of the following types of data: the storage location of the object (e g . an address of a storage location of the object, an address of a database table that includes a pointer to the object, and an address of a network node on which the object is physically stored); the object's content type (e.g., document, web page, image, audio file, and video file), the object's device type (e.g., block, character, socket, and subdirectory), the size of the object, the time that the object was last modified, the object creation time, the time the object was last accessed, and the time that the object meta-data was changed, the object's owner user-ID and group-ID, and access permission settings (e.g. , read-only and executable). Any other data relating to the object also may be selected as the object metadata.
[0027] After the universally unique identifier has been generated (FIG. 2. block 32) and the object metadata has been determined (FIG. 2, block 34), the semantic ID generator 14 embeds the object metadata into the universally unique identifier (FIG. 2, block 36). In general, the object metadata may be embedded into the universally unique identifier m a variety of different ways so long as the embedded information does not prevent the resulting universally unique semantic identifier from being usable as a universally unique identifier In some embodiments, the semantic ID generator 14 embeds the object metadata into the universally unique identifier by replacing a portion of the universally unique identifier with an encoding of the object metadata. Typically, this process involves replacing a fixed length portion of the universally unique identifier with an encoding of the object metadata that has a length equal to the fixed length
[0028] With respect to the RFC 4122 UUID versions 3 and 5, embodiments of the semantic ID generator 14 embed the object metadata into the universally unique identifier at a location outside the section containing the version number In some of these embodiments, the semantic ID generator 14 embeds the object metadata into at least a portion of the time field of the universally unique identifier. For example, in some
embodiments, once the version 3 or 5 UUID has been generated, the semantic ID generator 14 replaces octets zero to three (which correspond to the time_low field of the UUID) with an application-specific encoding of the object metadata.
[0029] With respect to the RFC 4122 UUID version 4, embodiments of the semantic ID generator 14 embed the object metadata into the universally unique identifier at a location outside the section containing the version number For example, in some embodiments, once the version 4 UUID has been generated, the semantic ID generator 14 replaces octets zero to three (which correspond to the timejow field of the UUID) with an application-specific encoding of the object metadata.
[0030] FIG. 3 shows a diagrammatic flow diagram of an embodiment of a process of producing the universally unique semantic identifier 50 from a universally unique identifier 40 and the determined metadata 42 In this process, the universally unique identifier 40 is generated by a generator algorithm 44 that corresponds to a version number 46 that is embedded in the universally unique identifier 40. The universally unique identifier 40 also includes a relative ID portion 48, which corresponds to the non-version number portions of the universally unique identifier 40. In the process of producing the universally unique semantic identifier, the semantic ID generator 14 keeps the version number 46 and overwrites a portion of the relative ID portion 48 with an application-specific encoding 52 of the object metadata 42 to produce a modified relative ID portion 54.
[0031] FIG. 4 shows an embodiment of a method by which the object management system 10 processes a service request relating to the object 22 In accordance with this method, the object management system 10 receives a service request relating to the object 22 (FIG. 4, block 60). The service request includes a universally unique semantic identifier 16 of the object 22 The universally unique semantic identifier 16 includes object metadata providing information about the object 22. The object management system 10 extracts the object metadata from the universally unique semantic identifier 16 (FIG. 4, block 58). The object management system 10 performs an operation with respect to the object 22 based on the extracted object metadata (FIG. 4. block 60).
[0032] FIG 5 shows an exemplary use model of the object management system 10. In this use model, the object management system 10 receives a request 62 for access to the object 22. The request 62 includes the universally unique semantic
identifier 16 of the object 22. The object manager 12 parses the request 60 for the universally unique semantic identifier 16 and extracts the embedded metadata from the universally unique semantic identifier 16. In this use model, the embedded metadata includes the storage location of the object 22 in the physical storage device. In this case, the object manager 12 uses the extracted storage information metadata to retrieve a copy 64 of the object 22 from the storage location m the physical storage device 24; the object manager 12 then sends the copy 64 of the object 22 to the requesting entity In this way, the object manager 12 avoids the need to have to look up the storage address in the allocation table 20. In fact, in this approach, there is no need for the object manager 12 to maintain the allocation table 20.
V. EXEMPLARY EMBODIMENT OF THE OBJECT MANAGEMENT SYSTEM
[0033] Embodiments of the object management system 10 may be
implemented by one or more discrete modules (or data processing components) that are not limited to any particular hardware, firmware, or software configuration. In the illustrated embodiments, these modules may be implemented in any computing or data processing environment, including in digital electronic circuitry (e.g., an application- specific integrated circuit, such as a digital signal processor (DSP)) or in computer hardware, firmware, device driver, or software. In some embodiments, the
functionalities of the modules are combined into a single data processing component. In some embodiments, the respective functionalities of each of one or more of the modules are performed by a respective set of multiple data processing components.
[0034] The modules of the object management system 10 may be co-located on a single apparatus or they may be distributed across multiple apparatus; if distributed across multiple apparatus, these modules and the display 24 may communicate with each other over local wired or wireless connections, or they may communicate over global network connections (e.g., communications over the Internet).
[0035] In some implementations, process instructions (e.g., machine-readable code, such as computer software) for implementing the methods that are executed by the embodiments of the image match detection system 10, as well as the data they generate, are stored in one or more machine-readable media. Storage devices suitable for tangibly embodying these instructions and data include all forms of non-volatile computer-readable memory, including, for example, semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices, magnetic disks such as internal
hard disks and removable hard disks, magneto-optical disks, DVD-ROM/RAM. and CD- ROM/RAM
[0036] In general embodiments of the object management system 10 may be implemented in any one of a wide variety of electronic devices, including desktop computers, workstation computers, and server computers.
[0037] FIG. 6 shows an embodiment of a computer system 140 that can implement any of the embodiments of the object management system 10 that are described herein. The computer system 140 includes a processing unit 142 (CPU), a system memory 144, and a system bus 146 that couples processing unit 142 to the various components of the computer system 140. The processing unit 142 typically includes one or more processors, each of which may be in the form of any one of various commercially available processors. The system memory 144 typically includes a read only memory (ROM) that stores a basic input/output system (BIOS) that contains start-up routines for the computer system 140 and a random access memory (RAM). The system bus 146 may be a memory bus, a peripheral bus or a local bus, and may be compatible with any of a variety of bus protocols, including PCI, VESA, MicroChannel, ISA, and EISA. The computer system 140 also includes a persistent storage memory 148 (e.g., a hard drive, a floppy drive, a CD ROM drive, magnetic tape drives, flash memory devices, and digital video disks) that is connected to the system bus 146 and contains one or more computer-readable media disks that provide non-volatile or persistent storage for data, data structures and computer-executable instructions
[0038] A user may interact (e.g.. enter commands or data) with the computer 140 using one or more input devices 150 (e.g.. a keyboard, a computer mouse, a microphone, joystick, and touch pad). Information may be presented through a user interface that is displayed to a user on the display 151 (implemented by, e.g. , a display monitor), which is controlled by a display controller 154 (implemented by, e.g., a video graphics card). The computer system 140 also typically includes peripheral output devices, such as speakers and a printer. One or more remote computers may be connected to the computer system 140 through a network interface card (NIC) 156
[0039] As shown in FIG. 6. the system memory 144 also stores the image match detection system 10, a graphics driver 158. and processing information 160 that includes input data, processing data, and output data. In some embodiments, the object management system 10 interfaces with the graphics driver 158 (e g., via a
DirectX® component of a Microsoft Windows® operating system) to present a user interface on the display 151 for managing and controlling the operation of the object management system 10.
VI CONCLUSION
[0040] The embodiments that are described herein improved systems and methods that enable generation of a universally unique "semantic" identifier of an object that has embedded application-specific information about the object that does not interfere with the use of the identifier as a universally unique identifier. Advantageously, such identifiers may be generated without requiring a central service. In addition, in embodiments in which the embedded information includes the storage location of the identified object, there is no need for a lookup service to provide a mapping between the identifier and the storage location; consequently, there is no risk that such mapping information might become stale because the storage location is persisted with the object identifier.
[004] ] Other embodiments are within the scope of the claims.
Claims
1 A method, comprising.
generating a universally unique identifier (40);
determining object (22) metadata (30) providing information about an object (22); and
producing a universally unique semantic identifier (16) of the object (22) from the universally unique identifier (40), wherein the producing comprises embedding the object metadata (30) into the universally unique identifier (40).
2. The method of claim 1 , wherein the determining comprises determining metadata (30) that comprises an address of a storage location of the object (22), and the embedding comprises embedding the address into the universally unique identifier (40)
3. The method of claim 2, wherein the metadata (30) comprises at least one of an address of a database table that comprises a pointer to the object (22), and an address of a network node on which the object (22) is physically stored.
4. The method of claim 1 , wherein the determining comprises determining metadata (30) that comprises an object type identifier identifying a type of the object
(22), and the embedding comprises embedding the object type identifier into the universally unique identifier (40)
5. The method of claim 1 , wherein the embedding comprises replacing a portion of the universally unique identifier (40) with an encoding of the object metadata
(30)
6. The method of claim 5, wherein the replacing comprises replacing a fixed length portion of the universally unique identifier (40) with an encoding of the object metadata (30) that has a length equal to the fixed length.
7. The method of claim 1 , wherein the generating comprises applying a hash function to data comprising a namespace and a unique name within the namespace to produce a hash, and creating the universally unique identifier (40) from the hash.
8. The method of claim 7, wherein the universally unique identifier (40) comprises a section containing a version number identifying a version type of the universally unique identifier (40), and the embedding comprises embedding the object metadata (30) into the universally unique identifier (40) at a location outside the section containing the version number.
9. The method of claim 8, wherein the universally unique identifier (40) comprises a time field, and the embedding comprises embedding the object metadata (30) into at least a portion of the time field of the universally unique identifier (40).
10. Apparatus, comprising
a computer-readable medium (144, 148) storing computer-readable instructions; and
a data processor (142) coupled to the computer-readable medium (144, 148), operable to execute the instructions, and based at least in part on the execution of the instructions operable to perform operations comprising
generating a universally unique identifier (40);
determining object metadata (30) providing information about an object (22); and
producing a universally unique semantic identifier (16) of the object (22) from the universally unique identifier (40), wherein the producing comprises embedding the object metadata (30) into the universally unique identifier (40).
11. The apparatus of claim 10, wherein the determining comprises
determining metadata (30) that comprises an address of a storage location of the object (22). and the embedding comprises embedding the storage location into the universally unique identifier (40).
12. At least one computer-readable medium (144, 148) having computer- readable program code embodied therein, the computer-readable program code adapted to be executed by a computer (140) to implement a method comprising.
generating a universally unique identifier (40);
determining object metadata (30) providing information about an object (22): and producing a universally unique semantic identifier (16) of the object (22) from the universally unique identifier (40), wherein the producing comprises embedding the object metadata (30) into the universally unique identifier (40).
13. The at least one computer-readable medium of claim 1 , wherein the determining comprises determining metadata (30) that comprises an address of a storage location of the object (22), and the embedding comprises embedding the storage location into the universally unique identifier (40).
14. A method, comprising by a computer performing operations comprising: receiving a service request (62) relating to an object (22); wherein the service request comprises a universally unique semantic identifier (16) of the object (22), and the universally unique semantic identifier (16) comprises object metadata (30) providing information about the object (22);
extracting the object metadata (30) from the universally unique semantic identifier (16); and
performing an operation with respect to the object (22) based on the extracted object metadata (30).
15. The method of claim 16, wherein the receiving comprises receiving a request (62) for the object (22), the object metadata (30) comprises an address of a storage location of the object (22). and the performing comprises retrieving the object (22) from the storage location based on the address.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2009/061224 WO2011049553A1 (en) | 2009-10-20 | 2009-10-20 | Universally unique semantic identifiers |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2009/061224 WO2011049553A1 (en) | 2009-10-20 | 2009-10-20 | Universally unique semantic identifiers |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2011049553A1 true WO2011049553A1 (en) | 2011-04-28 |
Family
ID=43900568
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/US2009/061224 WO2011049553A1 (en) | 2009-10-20 | 2009-10-20 | Universally unique semantic identifiers |
Country Status (1)
Country | Link |
---|---|
WO (1) | WO2011049553A1 (en) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013030447A1 (en) * | 2011-08-30 | 2013-03-07 | Nokia Corporation | Method and apparatus for providing a structured and partially regenerable identifier |
US8972952B2 (en) | 2012-02-03 | 2015-03-03 | Apple Inc. | Tracer based runtime optimization for dynamic programming languages |
WO2015102008A1 (en) | 2013-12-31 | 2015-07-09 | Intel Corporation | Capability determination for computing resource allocation |
US20170371716A1 (en) * | 2016-06-24 | 2017-12-28 | Nicira, Inc. | Identifier (id) allocation in a virtualized computing environment |
EP3392784A4 (en) * | 2016-01-14 | 2018-12-05 | Huawei Technologies Co., Ltd. | Method and system for managing resource objects |
WO2020031047A1 (en) * | 2018-08-10 | 2020-02-13 | Telefonaktiebolaget Lm Ericsson (Publ) | Alternative addressing of managed objects |
CN113163027A (en) * | 2021-04-22 | 2021-07-23 | 北京奇艺世纪科技有限公司 | Data identifier generation method, device, equipment and storage medium |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070188267A1 (en) * | 2006-02-16 | 2007-08-16 | Tdk Corporation | Noise filter and mounted structure of noise filter |
US20070203943A1 (en) * | 2006-02-28 | 2007-08-30 | Ingo Adlung | Method and apparatus for generating unique identifiers for logical partitions |
US20080288516A1 (en) * | 2007-05-17 | 2008-11-20 | Hadfield Marc C | Universal meme identification |
-
2009
- 2009-10-20 WO PCT/US2009/061224 patent/WO2011049553A1/en active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070188267A1 (en) * | 2006-02-16 | 2007-08-16 | Tdk Corporation | Noise filter and mounted structure of noise filter |
US20070203943A1 (en) * | 2006-02-28 | 2007-08-30 | Ingo Adlung | Method and apparatus for generating unique identifiers for logical partitions |
US20080288516A1 (en) * | 2007-05-17 | 2008-11-20 | Hadfield Marc C | Universal meme identification |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013030447A1 (en) * | 2011-08-30 | 2013-03-07 | Nokia Corporation | Method and apparatus for providing a structured and partially regenerable identifier |
US9246882B2 (en) | 2011-08-30 | 2016-01-26 | Nokia Technologies Oy | Method and apparatus for providing a structured and partially regenerable identifier |
US9027010B2 (en) | 2012-02-03 | 2015-05-05 | Apple Inc. | Runtime optimization using meta data for dynamic programming languages |
US9003384B2 (en) | 2012-02-03 | 2015-04-07 | Apple Inc. | Methods and apparatuses for automatic type checking via poisoned pointers |
US9128732B2 (en) | 2012-02-03 | 2015-09-08 | Apple Inc. | Selective randomization for non-deterministically compiled code |
US8972952B2 (en) | 2012-02-03 | 2015-03-03 | Apple Inc. | Tracer based runtime optimization for dynamic programming languages |
WO2015102008A1 (en) | 2013-12-31 | 2015-07-09 | Intel Corporation | Capability determination for computing resource allocation |
EP3090508A4 (en) * | 2013-12-31 | 2017-08-02 | Intel Corporation | Capability determination for computing resource allocation |
US10498604B2 (en) | 2013-12-31 | 2019-12-03 | Intel Corporation | Capability determination for computing resource allocation |
EP3392784A4 (en) * | 2016-01-14 | 2018-12-05 | Huawei Technologies Co., Ltd. | Method and system for managing resource objects |
US20170371716A1 (en) * | 2016-06-24 | 2017-12-28 | Nicira, Inc. | Identifier (id) allocation in a virtualized computing environment |
US11822970B2 (en) * | 2016-06-24 | 2023-11-21 | Nicira, Inc. | Identifier (ID) allocation in a virtualized computing environment |
WO2020031047A1 (en) * | 2018-08-10 | 2020-02-13 | Telefonaktiebolaget Lm Ericsson (Publ) | Alternative addressing of managed objects |
CN113163027A (en) * | 2021-04-22 | 2021-07-23 | 北京奇艺世纪科技有限公司 | Data identifier generation method, device, equipment and storage medium |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7664829B2 (en) | Document managing system, document managing apparatus and document managing method | |
US8255430B2 (en) | Shared namespace for storage clusters | |
US7730033B2 (en) | Mechanism for exposing shadow copies in a networked environment | |
US6549918B1 (en) | Dynamic information format conversion | |
WO2011049553A1 (en) | Universally unique semantic identifiers | |
US8095726B1 (en) | Associating an identifier with a content unit | |
JP5559140B2 (en) | Representation of computing environment | |
US6625604B2 (en) | Namespace service in a distributed file system using a database management system | |
US6643654B1 (en) | System and method for representing named data streams within an on-disk structure of a file system | |
JP4771321B2 (en) | Method and data format for exchanging data between Java system database entries and LDAP directory services | |
US7092969B2 (en) | Management of source and derivative image data | |
US8370910B2 (en) | File server for translating user identifier | |
US20120246129A1 (en) | Efficient storage and retrieval for large number of data objects | |
US8341733B2 (en) | Creating secured file views in a software partition | |
JP2011103131A (en) | Service discovery and publication | |
US20030101173A1 (en) | Method, systems, and apparatus to interface with storage object | |
US7716187B2 (en) | System and method for transparent storage reorganization | |
US7293030B2 (en) | Methods, functional data, and systems to represent a storage environment | |
US7437367B2 (en) | Pack URI scheme to identify and reference parts of a package | |
US7107272B1 (en) | Independent distributed metadata system and method | |
US9626378B2 (en) | Method for handling requests in a storage system and a storage node for a storage system | |
Mostek et al. | Porting the {SGI}{XFS} File System to Linux | |
US7293134B1 (en) | System and method for an enhanced snapshot pointer | |
US7058956B1 (en) | Directory services interface extensions with aggregatable software objects | |
CN114676096A (en) | Index storage method, file searching method, device, electronic equipment and medium |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 09850655 Country of ref document: EP Kind code of ref document: A1 |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 09850655 Country of ref document: EP Kind code of ref document: A1 |