Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Fragment table includes dataspace_id and anchor_id columns. Anchor table also has dataspace_id column. Since an Anchor belongs to only one Dataspace, and a Fragment belongs to only one Anchor, the dataspace_id column in Fragment is redundant (since the fragment's dataspace_id is a duplicate of the anchor's dataspace_id). It is at best redundant to have the same data duplicated in multiple database tables, and at worst could lead to inconsistencies.This task is to remove dataspace_id column from the Fragment table.

In addition to wasting space on duplicate data, the Fragment table also includes an index for dataspace_id, a foreign key constraint, and dataspace_id is included in the uniqueness constraint for Fragment. Removing all these may improve write performance (albeit a small improvement). There are no negative performance impacts expected, as the only functionality relying on dataspace_id is query-across-anchors (relevant SQL queries can be changed to use an inexpensive table JOIN on Anchor table).

This task is to remove dataspace_id column from the Fragment table.

Implementation Proposal

It is proposed to remove the dataspace_id column from the Fragment table in the Liquibase changelog. This also involves removing associated indexes and constraints.

...

Fragment table before update, after update, and after rollback

Before update
idxpathattributesanchor_idparent_iddataspace_idschema_node_id
1/cps-ran-schema{}1null1null
2/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]{"idNearRTRIC": "11"}111null
137/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBDUFunction[@idGNBDUFunction="6"]/NRCellDU[@idNRCellDU="15549"]/attributes{"nRPCI": 12, "nRTAC": 310, "cellLocalId": 15549}11361null
139/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBDUFunction[@idGNBDUFunction="6"]/NRCellDU[@idNRCellDU="15360"]/attributes{"nRPCI": 12, "nRTAC": 310, "cellLocalId": 15360}11381null
141/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBDUFunction[@idGNBDUFunction="6"]/NRCellDU[@idNRCellDU="15361"]/attributes{"nRPCI": 12, "nRTAC": 310, "cellLocalId": 15361}11401null
144/dmi-registry{}2null2null
145/dmi-registry/cm-handles[@id='336a9e2779b64a1cac04fee3208a1c76']{"id": "336a9e2779b64a1cac04fee3208a1c76", "dmi-service-name": "http://ncmp-dmi-plugin-stub:8080", "dmi-data-service-name": "", "dmi-model-service-name": ""}21442null
After update
idxpathattributesanchor_idparent_idschema_node_id
1/cps-ran-schema{}1nullnull
2/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]{"idNearRTRIC": "11"}11null
137/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBDUFunction[@idGNBDUFunction="6"]/NRCellDU[@idNRCellDU="15549"]/attributes{"nRPCI": 12, "nRTAC": 310, "cellLocalId": 15549}1136null
139/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBDUFunction[@idGNBDUFunction="6"]/NRCellDU[@idNRCellDU="15360"]/attributes{"nRPCI": 12, "nRTAC": 310, "cellLocalId": 15360}1138null
141/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBDUFunction[@idGNBDUFunction="6"]/NRCellDU[@idNRCellDU="15361"]/attributes{"nRPCI": 12, "nRTAC": 310, "cellLocalId": 15361}1140null
144/dmi-registry{}2nullnull
145/dmi-registry/cm-handles[@id='48d42e05942b457dafdfa24195fdb092']{"id": "48d42e05942b457dafdfa24195fdb092", "dmi-service-name": "http://ncmp-dmi-plugin-stub:8080", "dmi-data-service-name": "", "dmi-model-service-name": ""}2144null
After rollback
idxpathattributesanchor_idparent_idschema_node_iddataspace_id
1/cps-ran-schema{}1nullnull1
2/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]{"idNearRTRIC": "11"}11null1
137/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBDUFunction[@idGNBDUFunction="6"]/NRCellDU[@idNRCellDU="15549"]/attributes{"nRPCI": 12, "nRTAC": 310, "cellLocalId": 15549}1136null1
139/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBDUFunction[@idGNBDUFunction="6"]/NRCellDU[@idNRCellDU="15360"]/attributes{"nRPCI": 12, "nRTAC": 310, "cellLocalId": 15360}1138null1
141/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBDUFunction[@idGNBDUFunction="6"]/NRCellDU[@idNRCellDU="15361"]/attributes{"nRPCI": 12, "nRTAC": 310, "cellLocalId": 15361}1140null1
144/dmi-registry{}2nullnull2
145/dmi-registry/cm-handles[@id='48d42e05942b457dafdfa24195fdb092']{"id": "48d42e05942b457dafdfa24195fdb092", "dmi-service-name": "http://ncmp-dmi-plugin-stub:8080", "dmi-data-service-name": "", "dmi-model-service-name": ""}2144null2

As can be seen, the same data is restored after update and rollback (though the ordering of the columns has changed - testing has shown this to have no impact on functionality).

...