Add NOT NULL for sharding key on ml_candidate_metadata
What does this MR do and why?
Add NOT NULL constraint to ml_candidate_metadata.project_id column.
- One of the migration query has a 288.03ms timing, exceeding the 100ms guideline. However, this doesn't seem to be too significant to warrant async NOT NULL validation.
- No presence: truecheck is added in the model because we're also populating the column with a "BEFORE INSERT OR UPDATE" trigger.- Objects created in rails are allowed to have a project_id=nil, the trigger would populate it before being committed.
 
- Backfill has been finalized
The sharding key will be used to determine what Organization the row belongs to.
References
- Organization Isolation and Sharding Keys: https://handbook.gitlab.com/handbook/engineering/architecture/design-documents/organization/isolation/
- Sharding Key (Cells) Development Guide: https://docs.gitlab.com/ee/development/cells/#defining-a-sharding-key-for-all-cell-local-tables
- Related to #493768 (closed)
MR acceptance checklist
Please evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.
Screenshots or screen recordings
N/A
How to set up and validate locally
N/A
Edited  by Shane Maglangit