Content - external store data restructuring
Introduction:
This wiki explains the current structure of external store data for content and the proposed changes in the structure to bring consistency.
Background & Problem statement:
Content-Type | Identifier in Neo4J | Identifier in Cassandra | Version 0 | Version 1..10 | Data |
|---|---|---|---|---|---|
ECML | do_123 | do_123 | Draft, Live | Live | Draft and Live version object have the same format for the data. |
do_123.img | do_123.img |
| Draft | ||
Collection | do_123 | do_123.img | Draft |
| Draft version will not have the root-object metadata. |
do_123 | do_123 | Live | Live | ||
do_123.img | do_123.img |
| Draft |
Design:
Option 1:
Content-Type | Identifier in Neo4J | Identifier in Cassandra | Version 0 | Version 1..10 | Data |
|---|---|---|---|---|---|
ECML | do_123 | do_123 | Draft, Live | Live | Draft and Live version object have the same format for the data. |
do_123.img | do_123.img |
| Draft |
| |
Collection | do_123 | do_123 | Draft, Live | Live | A draft version will not have the root-object metadata. |
do_123.img | do_123.img |
| Draft |
|
Implementation Changes
Get hierarchy API for Live version(without mode=edit) should validate status in Cassandra data and throw resource not found if status is not part of hierarchy data
In publish pipeline, read data from neo4j and based on identifier from neo4j, fetch hierarchy data from Cassandra
Migrate hierarchy data of draft collection content which does not contain pkgVersion in it.
Option 2:
Content-Type | Identifier in Neo4J | Identifier in Cassandra | Version 0 | Version 1..10 | Data |
|---|---|---|---|---|---|
ECML | do_123 | do_123 | Live | Live | Draft and Live version object have the same format for the data. |
| do_123.img | do_123.img | Draft | Draft | |
Collection | do_123 | do_123 | Live | Live | A draft version will not have the root-object metadata. |
do_123.img | do_123.img | Draft | Draft |
Implementation Changes
Changes required to store draft version in external store for create, update and read contents
Publish pipeline changes to read ECML draft only from do_id.img
Migrating all draft ECML content with do_id.img