Design
- Driving principles:
- Minimizing change to the user via the API
- OCFL-isms not bleeding into Fedora API
- Rebuildability
- Compliance with OCFL
- Retain URLs of migrated Fedora resources
- Performance
- Reducing complexity of implementation
Fixity service
Transaction service
Query endpoint
Versioning
- Support for both:
- version an object on-demand (manual versioning)
- version an object on-change (auto-versioning)
- Support for toggling auto-versioning on/off
- Note: Actively edited objects not captured in an OCFL version directory
Bulk ingest
To flavors of pointing a Fedora instance at an OCFL backend.
- via OCFL
- via Fedora OCFL
https://docs.google.com/document/d/15QwmyNFMopJW4MHxQNTiOGh_WXsOPr9-yzctGLCgT5k/edit
Import / Export (Migration)
https://docs.google.com/document/d/1nvUDar1DbexdU3oTRGxzcZGG3qxsD2HWQbGyyRJIgDE/edit#
Mapping between LDP and OCFL
Opt-in model
Fedora resources may be created with an optional "archive" interaction model provided via headers.
New resources created via POST or PUT to the archive will be LDP contained by the archive and will be stored within the OCFL object representing that archive.
If a resource is created without the "archive" model, new resources created via POST or PUT will be LDP contained by the archive, but will be stored as separate OCFL objects.
Notes/Implications
- At creation time, you establish what you want and then stay in that model. Changing the model would require additional migration tooling.
- Requires 3 interaction approaches: atom (implicit), archive, part (implicit)
Architecture
- Retaining HTTP layer of existing Fedora codebase
- Replacing ModeShape persistence with OCFL storage
- Optimizing reads/lookups with an internal database
- proposed database model: https://docs.google.com/document/d/1MsMfhae3thmNdoFtnTUnII3mr_-OkllRs9PvgnY1fDY/edit
Scaling
- stateless Fedora instances
- database can be clustered and scaled
- file system -> cloud object store
Performance
- Many members: performance should improve significantly since list of members will be supplied by a database index (which should support a degree of in-memory caching). No loading of modeshape nodes required.
- Ingest speeds:
ModeShape replacement
OCFL persistence
- Support for both OCFL objects:
- created by Fedora
- pre-existing, created by another application
Fedora-specific details
- /content/.fcrepo directory
- Hashing (SHA256) on LDP path of resource