Note: This is currently a verbatim copy of the RequirementsAndGoals wiki page originally hosted at Topaz, and reflects the developers' thinking as of 9/16/08.
Here's a brief summary of what requirements Akubra must fulfill and some of the design decisions made.
| Feature | Support | Notes |
|---|---|---|
| Embeddable | Yes | This is the primary use case |
| Server | As an add-on | |
| Transactional | Yes (JTA) | Some implementations may cheat and not be truly transactional |
| Hierarchical | No | App may use hierarchical ids, but Akubra has no notion of or support for containers |
| Metadata storage | No (size only) | Blob size is only metadata stored because it's widely supported without requiring extra storage; but it too is optional (though strongly recommended) |
| Support app-supplied blob-ids | Yes | |
| Support storage-generated blob-ids | Yes | |
| Allow blobs to be deleted | Yes | |
| Allow blobs to be overwritten | Yes | |
| Allow partial updates of blobs | No | |
| Enumeration of stored blobs | Yes | Necessary for rebuilds |
| Pluggable storage back-ends | Yes | |
| Allow local temp storage | Yes | E.g. for caching or temporary bookkeeping |
| Allow permanent local storage | No | See http://lists.topazproject.org/pipermail/akubra-dev/2008-August/000074.html |