Explain base:


Resources and Storage

Let Resources be the description where to get Units, and Storage describe how to store them. Most protocols will overlap: for instance, you may get Units via resource HTTP, but also store Units over HTTP. There is overlap, but there are also big differences.


Resources are usually only defined in the Namespace which describes the top-level of a server. They explain how to get to Units which are defined in the namespaces.

The selection of the optimal Resource for a Namespace can depend on various factors (selected via expressions)

  • the name of the Unit (name-based sharding);
  • the supported transport protocols (ftp, http);
  • the supported transport packaging (separate items, bulk only);
  • the required access (upload, download, search, feed);
  • the Collection maintainers preferences;
  • the completeness and freshness of the Collections; and
  • the performance;

The client decides which Resource to contact. Its decision is based on information it finds in the Namespace Unit, the needs of the application which the client serves, real-time statistics, and available plug-ins for transport protocols and packaging.


Storage Units are defined in the Collection which the server is using for its internal configuration. Storage Units are strongly related to specific Resources: the resource is some external view of the internal set-up. The Storage is (usually) the hidden counter-part for one or more Resources.

Various ways of storage MAY get implemented:

  • map of Unit-ids onto a file-system;
  • Units in object storage (S3, Hadoop);
  • Units in (tar or zip) archives which are on some other Storage;
  • Units in archives which are stored externally; or
  • Units in a (local) database.

Special care must be taken to the encodings of the unit-ids. Characters permitted in unit-ids are limited to ASCII 0x20-0x7E, but that might be too flexible for your storage system. For instance, not all file-systems like a filename which contains a slash ('/'), but it may appear in a Unit-id.

mark@overmeer.net      Web-pages generated on 2023-12-19