RFC-1111: Change Felis YAML format and data model to use column and table names instead of IDs

Hello,

I would like to bring attention to RFC-1111, a proposal related to the Felis YAML format Rubin uses to manage its Science Data Model schemas. These schemas are managed in the sdm_schemas GitHub repository and define logical database schemas and their metadata, such as column names, data types, units, etc. These schemas are used to manage databases for alert production, data release processing, etc.

The proposed change to the format has to do with how objects are internally referenced within these schemas. There are several types of objects, such as indexes and foreign keys, which need to uniquely reference other objects within the schema. For instance, an instance needs to specify its column names. Currently, these references typically look like #{table_name}.{column_name}, e.g., #DiaObject.validityStart for the validityStart column in the DiaObject table.

Instead of using these IDs, it is proposed that references would use object names where possible, so #DiaObject.validityStart would change into validityStart. More details and examples are included in the linked RFC, which should be publicly accessible. Affected types would include Index, Constraint (in particular ForeignKeyConstraint), ColumnGroup, and the primaryKey attribute on columns.

Since this is a major change to the data format, we are proposing a deprecation period of approximately six months where both the old and new referencing features would be active in Felis. After this time, it is planned to remove the old scheme entirely, and sometime in the future, the IDs themselves may be retired as a feature of the data model.

Any questions or comments on this proposal from the community can be discussed here. Rubin staff may comment directly on the RFC. Additional effort will be made to contact external users of the Felis YAML format who may not be members of the forum.

Thank you for your attention!