"A very unique identifier."
The Ubigia identifier is not based on random values but on a hierarchical structure, composed of both spatial (Storage/Account/Space) and temporal (Era/Period/Moment) components. The reasoning is that we want to be able to uniquely identifier each and every unique change a person or system will ever need to make. For this, the spatial (Storage, Account, Space) component provides a distinction per-user and use-case, and the temporal component (Era, Period, Moment) provides uniqueness within a user's storage.
Storage | Account | Space | Era | Period | Moment |
---|---|---|---|---|---|
GUID |
GUID |
GUID |
ULONG |
ULONG |
ULONG |
The storage from which the targeted information originated. |
The account from which the targeted information originated. |
The space from which the targeted information originated. |
An incremental number. In its current form it resembles the years. |
An incremental number. In its current form it resembles the days of a year. |
An incremental number. In its current form it resembles a day divided in ULONG fragments. |
The benefits from this identification scheme are that:
-
Information can be duplicated on different storage systems without creating conflicts.
Even different storage systems can persist information that originated from other storages, users or spaces.
This reduces the complexity of synchronization and caching drastically. -
Information persistence can be made very simple and 'polyglot'.
In theory any modern storage technology that facilitates parent/child relations should be usable as a backing store for Ubigia data.
Examples of this are currently a (NTFS) filesystem implementation and an in-memory store. More implementations are pending.
- There is probably room for improvement by downscaling the Era and Period
ULONG
into something better fitting. - ...