...
- a different kind of object model that allows (and, even encourages) hierarchy
- "native" RDF expressions of object of object properties
- a RESTful RESTful HTTP API that is consistent and follow-your-nose
- integrated support for low-level fixity checks
- asynchronous, event-driven points of extensibility
...
ModeShape is a distributed, hierarchical, transactional, and consistent data store with support for queries, full-text search, events, versioning, references, and flexible and dynamic schemas. It is very fast, highly available, extremely scalable, and it is 100% open source and written in Java.
...
Modeshape stores object metadata in an Infinispan cache. Binary content MAY be stored in Infinispan, or in an alternative BinaryStore. Binary values are de-duplicated based on the SHA-1 hash of their content at the BinaryStore layer (meaning if you add 2 datastreams with identical content, it'll only store that 1 time in the storage system).
Modeshape provides additional points of extensibility (e.g. Sequencers), and support for widely implemented APIs like CMIS, WebDAV, etc.
Modeshape also provides a "federation" feature, where:
Clients (edeg: such as Fedora 4) can access internal data (owned by ModeShape) and external data (owned by an external system) in exactly the same way, using the JCR API. ModeShape might cache this external data (for performance reasons), but it would never store any of this external data.
Fedora uses this feature to provide "instant ingest", where you can stage content on a filesystem, initiate an ingest into Fedora, and while that process occurs, Fedora can still serve up the content directly from the filesystem. (or something like that.)
See also:
N Things to know about Modeshape (and JCR, and Infinispan)
Infinispan
Infinispan is the storage subsystem used by Modeshape for storing object structure, and (optionally) binary content. It supports cluster-based scale out and high availability, data persistence into a variety of CacheStore architectures (filesystem, JDBC database, Amazon S3), and distributed execution (including but not limited to e.g. Map/Reduce).
Fedora 4 ships with a handful of example Infinispan configurations to get up and running quickly.
basicfile | no-frills, FileCacheStore backed |
bdb | BerkeleyDB backed metadata store |
chained | example of storing redundant copies |
clustered | a trivial, cluster-ready example; replicates metadata, distributes 2 copies of content |
leveldb-default | a leveldb backed metadata store (that's really fast) |
leveldb | a leveldb backed metadata store, with separate caches for resource, properties, and binaries |
ram | an in-RAM-only cache store for testing |
See also:
Introduction
...
How to Define a Storage Policy
How to Project over Directory of BagIt Bags
...