Please visit Project Hail for similar projects.
This HTTP REST-based service is a very simple PUT/GET/DELETE data storage service. It is intended to be used as a low-level piece of large-scale data storage infrastructure.
The HTTP REST-based protocol is obviously ASCII-based. This is useful during development, but will be converted to a binary protocol once the API has stabilized.
The service provides operations on stored data ("objects"), and the containers used for organizing objects ("volumes").
A volume, sometimes also known as a cluster or partition, is an independent object namespace. Two objects stored on separate volumes may have the same [volume-] unique identifier, and have same or different contents.
An object is simply an anonymous blob of any length. When you PUT (upload) an object, you receive in return two items:
From this basic interface (ancillary operations excluded):
you can build cluster-wide redundant storage services, exporting data storage capability from any device supported by your OS: directory full o' files (current storage backend implemented), one-big-file, NFS file, block device, SCSI OSD, ... all via a single, standard, easy to use, device-agnostic interface.
Status: early beta, all basic interfaces work; single-threaded; only
one storage backend implemented
Git repo: link (browse)