Fedora4 Beta Phase Sprint Eight: Performance, Search and Large Files++
Submitted by on Tue, 2013-12-10 15:46
Winchester, MA The Fedora team has concluded the eighth sprint within the "Beta Phase" of Fedora4 development. The work of this and each sprint is planned and completed thanks to the contributions of Fedora stakeholder institutions which allocate developer time. If you would like to be involved with Fedora4 development, please send an email to Andrew Woods firstname.lastname@example.org, or the Fedora Steering Committee email@example.com. If you have comments on the work from this sprint, please also send an email or comment directly on the wiki.
Read the the Sprint B8 summary:
About Sprint 6, Beta Phase
Benjamin Armintor - Columbia University
frank asseg - FIZ Karlsruhe
Chris Beer - Stanford University
Esme Cowles - University of California, San Diego
Osman Din - Yale University
Michael Durbin - University of Virginia
Eric James - Yale University
Greg Jansen - University of North Carolina, Chapel Hill (scrum master)
Scott Prater - University of Wisconsin
A. Soroka - University of Virginia
A primary focus of Sprint B8 was performance benchmarking and improvement. This effort consisted of several approaches:
- Establishing performance test scenarios  which define the intersection of varying platform , repository , setup , and workflow  profiles
- Running and analyzing select test scenarios with CPU and memory profiling enabled
- Running ingest scenarios with a production collection  of 16,000+ objects, 65,000+ items, totaling 250+ GB of content
This work surfaced potential bottlenecks relating to versioning configurations and the messaging framework as well as limitations of different backend persistence choices.
This sprint represents an early and significant step towards painting a clear picture of how Fedora 4 compares with Fedora 3 across a variety of usage scenarios.
Fedora 4 is designed to support two search services:
- External search (i.e. standalone Solr populated by repository event listener)
- Administrative search (i.e. advanced legacy field-search)
This sprint established the administrative search service. If a user-facing, full-featured search service is required of your repository, the external search is ideal. However, if a repository administrator-facing search is needed in support of queries over resource properties, then the new administrative search may suffice. Administrative search exposes both a text search over resource properties as well as a SPARQL endpoint over repository subjects.
For more details on the administrative search and its usage, see the wiki .
3) Large Files
One of the long-standing requirements of Fedora is support for the management and serving of large files. Given the recent software contributions made to the upstream project, ModeShape , it appears that earlier identified bottlenecks seen when projecting over large files on the filesystem have now been addressed.
Exploring large file support from the HTTP interface, this sprint determined that 300-GB content  could be both ingested and read from the local machine via the Fedora 4 REST API . Tests for the actual hard limits imposed by the repository or REST API are still being explored.
4) Content Modeling
In an effort to clarify how a Fedora 4 repository manager might define content models, an example set of configurations  where constructed that represent an initial set of Fedora 3 content models translated into Fedora 4 node-types. The Fedora 4 means of defining content models is via Compact Node Definitions (CNDs)  which can be written as configuration files (as in the mentioned examples) or updated via the Fedora REST API .
This sprint improved the basic versioning capability by adding support for common user needs. Firstly, the initial versioning feature was turned-on for repository resource modification actions, period. The obvious incremental improvement introduced in this sprint is the ability to define which node types (if any) are subject to versioning .
Additionally, support was added to return and view previous versions of a resource via the REST API and HTML interfaces.
A significant portion of the energy of this and most sprints was dedicated to refactoring, refining, and pruning the codebase. Without trying to enumerate all such enhancements, some notable updates include:
- Delete action on workspaces endpoint 
- Content upload API support for inclusion of user-provided checksum 
- JAX-RS Provider support for RDF iteration
- Clean-up of HTML user interface