There is a standard way to generate a fixed-length unique identifier, with reasonable confidence that the same identifier is not generated elsewhere. Such a practically unique identifier is called UUID.
NAP recommends version 5 of the UUID standard. It uses a namespace name and local name as input for generating an UUID. A local name is a name unqiue within a namespace.
A namespace is the "space" from which unique local names are drawn. When you generate an UUID using the same local name from the same namespace, you will have the same UUID. When you generate using the same local name but with a different namespace, you will get a different UUID. Namespace is therefore the key to ensuring global uniqueness of the generated UUIDs.
A namespace is identified by a name called the namespace name. In generating an UUID, the namespace name is used as a prefix. Therefore, a namespace name is the namespace itself.
When a namespace name is not publicly registered, it has to be unique to avoid collision. One way is including something unique when generating a namespace name and then reuse it in the future when generating additional UUIDs for local names.
To prevent accidentally breaking the linkage between an existing UUID and the associated metadata record, it is recommended that an UUID is stored together with the record, the way a primary key is stored with a record.