-
Notifications
You must be signed in to change notification settings - Fork 26
Document store requirements gathering
-
Must be able to host at least 100,000 mutable objects ranging in size up to 50MB (currently about 2600, we know of about 8000 studies out there. current largest is ~24MB -- they could grow considerably with annotations... Automatic annotating could cause very rapid file size increase on large trees. Not sure what this implies as far as an upper limit, but something to think about.)
-
Among these objects (perhaps exclusively?) are study-objects (currently represented as NexSON files = Badgerfish applied to NeXML).
-
Study-object format should be documented and extensible, and should retain backward compatibility
-
Must have basic version control features: past versions of each object (indefinitely or limited to a maximum age?); commits (change sets) and commit messages; committer identification and timestamps; commit tags.
-
Three modes of access:
- 'raw' mode which allows access to the backend datastore via the Git protocol
- 'visitor' mode allows people to view/download the raw data via HTTP/HTTPS
- 'developer' mode : a web API at api.opentreeoflife.org which speaks JSON
-
Deploying api.opentreeoflife.org should be straightforward - decoupled from other services
-
Should be attractive to developers
- Familiar technologies
- Automated test suites
- Low-overhead testing
- Survivability: Objects must be accessible in 'raw' mode even when there are no opentree-managed servers running. (That is, everyone on the opentree project can disappear or become delinquent or broke, and the wider world will still be able to access or fork the content; and also change the content (as hosted), if there is a cooperating party with sufficient privileges. People will always be able to access the raw JSON data via raw.github.com
- 'Raw' mode should have high availability, high bandwidth, low latency
- Plan needs to be in place for contingency of destitution (e.g., 'raw' service could be no-cost)
- Plan needs to be in place in case of problem with hosting service: if it ends operation, changes incompatibly, changes price so that service becomes unaffordable, or quality degrades to an unacceptable level
- Authentication - how will users/curators identify themselves? ** Will we always allow anonymous read access? Anonymous full-database scraping is effectively a DDoS, so we will need policies to bandwidth and api-call throttle greedy folks. ** For write access, how will we manage the creation, storage and expiration of API tokens?
- How does the datastore integrate with the OTOL backup strategy?
- How will updates to the production system be deployed?