How identifiers work in the storage service
Last updated
Last updated
Bags in the storage service have a three-part identifier:
Space: the broad category of a bag. Examples: digitised
, born-digital
.
External identifier: the identifier of a bag within a space. This is typically an identifier from another system, which matches this bag to that record. Examples: b31497652
, PP/CRI/A/2
.
Version: an auto-incrementing numeric value. This tracks distinct versions of a (space, external identifier) pair. Examples: v1
, v2
, v3
.
The space and external identifier are supplied by the user; the version is automatically generated by the storage service.
These three parts can be combined into a single string, which uniquely identifies a bag; for example digitised/b31497652/v2
. This identifier is also the path to .
Why did we choose this approach?
We want identifiers that are human-readable and understandable. (As opposed to, say, .)
We match bags to records in systems outside the storage service (for example, the library catalogue). This approach allows us to use the same identifier as the external system, rather than .
This structure allows us to group related content by space within the underlying storage, in a way that is human-readable:
The human-readable storage layout means our files are not tied to the specific software implementation of the storage service.