What's Akubra About?
- standard interface for reading/writing files
at a different level of abstraction than a
filesystem
- transactional
- exploring web-based exposure
- From the Akubra wiki: Requirements and Goals
Note: Akubra wiki is at topazproject.org/akubra
Anyone is welcome to sign up to the dev and user mailing lists.
Filesystem vs. BlobStore
A normal filesystem:
- has directories
- allows partial reads/writes of files
An Akubra BlobStore:
- has a collection of URI-addressable bitstreams
- may allow partial reads (InputStreams can skip()...)
- ...but does not allow partial writes
Java API
Blob (A finite, readable bitstream)
BlobStore (For getting connections)
BlobStoreConnection (For CRUD operations)
Transactions
Level of support varies per-implementation (some can "fake it")
Why: To execute a mixed set of CRUD operations as one atomic unit of work.
Observation: We can build a transactional blob store on top of a non-transactional one
...with the help of a DB.
Example non-transactional BlobStore: FSBlobStore (see FSBlobStoreConnection)
Higher-level BlobStore TBD:
- Uses FSBlobStore to persist data
- Uses database to support transactions (via id mapping)
Other possible storage Plug-Ins:
- S3 (anything based on current LLStore should be easy to port over)
- ZFS (already transactional, does not need layering)
- Centera (content-addressible)
- Sam/QFS (hierarchical storage implies graceful handling of delays..)
Web-based exposure?
- Opens up use of akubra-java impls to other (remotely-running) programs
- Allows an akubra impl that's a client to remote akubra instance
(lots of interesting possibilities!)