...
The Blockstore proposals are fairly long, so this doc tries to summarize some of the principle differences.
Table of Contents |
---|
Collections
- All proposals center ownership, permissions, and licensing around the concept of a Collection.
- Each piece of content belongs to exactly one Collection.
- Examples:
- single course (possibly multiple runs)
- problem bank
- library of videos created by a video team
Differences: Collection Versioning
Original and Database Proposals
- Collections point to versioned content, and are also versioned as a whole.
File Proposal
- Collections point to versioned content, but the Collection itself is not versioned.
Content Primitives
- Identified by UUID.
- Versioned numerically (1, 2, 3, etc.)
- Tagging metadata is stored outside of the core Blockstore.
Content Primitives
- Identified by UUID.
- Versioned numerically (1, 2, 3, etc.)
- Tagging metadata is stored outside of the core Blockstore.
Differences: Granularity and Versioning
Original Proposal and Database Proposal
- Files/Assets are tracked individually.
- Units are tracked individually.
Original Proposal
- In addition to per-Unit and per-File tracking, ContentSets (a group of Links) are also versioned.
File Proposal
- ContentBundles are versioned as a whole, not individual assets inside them.
- Depending on the intended usage, a ContentBundle could be a single video, a Unit, or an entire Sequence.
Differences: OLX vs. Assets
...
- All content is stored in Content Bundles, which is like a small directory of files.
- The OLX for a Unit would go into an XML file in a ContentBundle.
- All Bundle content is stored in an S3-like object store.
- Metadata about what content constitutes a particular version is in the object store, not the database.
- Assets used by the Unit would go into the same ContentBundle.
- Advantages
- Units are more self contained.
- Easier to adapt for use cases outside of Open edX, since ContentBundles don't assume an OLX/Assets divide.
- Easier to associate bundles of related Assets, like a Video's various encodings, subtitles, thumbnails, etc.
- Cheaper storage.
Differences:
...
Original Proposal and Database Proposal
- Files/Assets are tracked individually.
- Units are tracked individually.
Original Proposal
- In addition to per-Unit and per-File tracking, ContentSets (a group of Links) are also versioned.
File Proposal
- ContentBundles are versioned as a whole, not individual assets inside them.
- Depending on the intended usage, a ContentBundle could be a single video, a Unit, or an entire Sequence.
Differences: Modeling Sequences and Courses
...
None of the proposals really addresses this, but all of them assume that there will be an external system (either a plugin or separate service) that uses ElasticSearch as a backend.
Collections
- All proposals center ownership, permissions, and licensing around the concept of a Collection.
- Each piece of content belongs to exactly one Collection.
- Examples:
- single course (possibly multiple runs)
- problem bank
- library of videos created by a video team
Differences: Collection Versioning
Original and Database Proposals
- Collections point to versioned content, and are also versioned as a whole.
File Proposal
- Collections point to versioned content, but the Collection itself is not versioned.
Neither of these stances is fundamental to the designs.
Questions for Discussion
- What are the use cases for Collection-level versioning?
- Licensing version ranges for the Collection.