The Fedora platform is built atop mature products in the content repository space to allow us to rapidly iterate to build a robust, scalable, and durable system.
Fedora has a number of key features:
- a different kind of The Fedora object model that allows (and, even encourages) hierarchy
- "native" RDF expressions of object properties
- a RESTful RESTful HTTP API that is consistent and follow-your-nose
- integrated support for Durability
- asynchronous, event-driven Event-driven APIs
We expose our underpinning technologies (at the Java API level, at least) for developers, so it is also helpful (and sometimes even necessary) to be familiar with the features and functions those technologies offer:
ModeShape is a distributed, hierarchical, transactional, and consistent data store with support for events, versioning, references, and flexible schemas. It is very fast, highly available, extremely scalable, and it is 100% open source and written in Java.
ModeShape is perfect for data that is organized in a tree-like hierarchical structure where related data is stored close together, where navigation to related content is just as common and important as fast key-based lookups or queries. The hierarchical organization is similar to a file system, making ModeShape a natural for storing files annotated with metadata. ModeShape can even automatically extract the structured information within the files so that clients can navigate or use typed queries to find files satisfying complex, structurally-oriented criteria. ModeShape is an excellent store for data with a complex schema, since the schema can vary over the database and evolve over time. ModeShape is the perfect distributed data store for all kinds of applications, including repositories, content management systems, historical data services, provisioning and governance systems, and metadata management systems.
Binary content MAY be stored on disk 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).
It should be noted that Fedora is in the process of reducing its dependency on Modeshape as part of an ongoing effort to completely remove it from the Fedora codebase. Keeping that in mind, it is advisable to avoid creating new dependencies on Modeshape or even the JCR API unless it is absolutely necessary.