Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RFC: Deposit REST API - WIP #22

Open
lnielsen opened this issue Mar 30, 2020 · 0 comments
Open

RFC: Deposit REST API - WIP #22

lnielsen opened this issue Mar 30, 2020 · 0 comments
Labels
Framework Invenio Framework Proposal: Accepted Accepted proposal for new RFC RDM Invenio RDM

Comments

@lnielsen
Copy link
Member

Codimd link for RFC

The current Invenio-Deposit module has several design issues:

  • All records are stored indexed twice:
    • Database: The primary record and deposit record are both stored in the
      records_metadata table.
    • Elasticsearch: Two indexes exists - 1) One for records and 2) One for
      deposits. Almost all records are indexed in both.
  • Records and deposits are mixed in the same database table.
  • Two buckets are used. One for the record, one for the draft. This is due to
    permissions, and ensuring that the preserved files are clearly separate from
    the uploaded file.
  • Unpublished deposits does not expire and stay in the system.
  • Two persistent identifiers exists - recid and depid each pointing to their
    own record.
  • Double JSONSchemas/Mappings: Because of slight differences in records and
    deposits we need two JSONSchemas, and two ES mappings and two marshmallow
    schemas.
  • The Programmatic API is very easily polluted and becomes very hard to
    maintain and extend with custom use cases

New design principles:

  • Clear "physical" separation between records and deposits. Records and
    deposits should not be mixed in the same database table. Recovery of database
    tables are significantly easier if records and deposits are not mixed.
  • Work with a single JSONSchema and single ES mapping.
  • A single persistent identifier.
  • Deposits are drafts and disappear from the system after being published.
  • Support file upload via third-party storage system like S3.
  • Think in versioning support from the beginning.
  • Decoupling workflow from submission
@lnielsen lnielsen added RDM Invenio RDM Framework Invenio Framework labels Mar 30, 2020
@lnielsen lnielsen changed the title RFC: Deposit REST API RFC: Deposit REST API - WIP Mar 30, 2020
@lnielsen lnielsen added the Proposal: Accepted Accepted proposal for new RFC label Apr 2, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Framework Invenio Framework Proposal: Accepted Accepted proposal for new RFC RDM Invenio RDM
Projects
None yet
Development

No branches or pull requests

1 participant