diff --git a/specs/mitaka/approved/no-more-soft-delete.rst b/specs/mitaka/approved/no-more-soft-delete.rst new file mode 100644 index 000000000..d3dc5b498 --- /dev/null +++ b/specs/mitaka/approved/no-more-soft-delete.rst @@ -0,0 +1,141 @@ +.. + This work is licensed under a Creative Commons Attribution 3.0 Unported + License. + + http://creativecommons.org/licenses/by/3.0/legalcode + +=================== +No more soft delete +=================== + +https://blueprints.launchpad.net/nova/+spec/no-more-soft-delete + +There was widespread agreement at the YVR summit not to soft-delete any more +things. To codify this, we should remove the SoftDeleteMixin from NovaBase. + +Problem description +=================== + +Soft deletion of rows imposes a management overhead to later delete or archive +those rows. It has also proved less necessary than initially imagined. We would +prefer additional soft-deletes were not added and so it does not make sense to +automatically inherit the `SoftDeleteMixin` when inheriting from NovaBase. + +Use Cases +--------- + +As an operator, adding new soft deleted things means I need to extend my +manual cleanup to cover those things. If I don't, those tables will become +very slow to query. + +As a developer, I don't want to tempt operators to read soft-deleted rows +directly. That risks turning the DB schema into an unofficial API. + +As a developer/DBA, providing `deleted` and `deleted_at` columns on tables +which are not soft-deleted is confusing. One might also say it's confusing to +soft-delete from tables where deleted rows are never read. + +Proposed change +=============== + +This spec proposes removing the `SoftDeleteMixin` from NovaBase and re-adding +it to all tables which currently inherit from NovaBase. The removal of +SoftDeleteMixin from those tables which don't need it will be left for future +work. + +Alternatives +------------ + +We could not do this. This means we need an extra two columns on new tables +and it makes it slightly easier to start soft-deleting new tables. + +Data model impact +----------------- + +None. + +REST API impact +--------------- + +None. + +Security impact +--------------- + +None. + +Notifications impact +-------------------- + +None. + +Other end user impact +--------------------- + +None. + +Performance Impact +------------------ + +None. + +Other deployer impact +--------------------- + +None. + +Developer impact +---------------- + +None. + +Implementation +============== + +Assignee(s) +----------- + +Primary assignee: + alexisl + +Other contributors: + None + +Work Items +---------- + +* Remove `SoftDeleteMixin` from NovaBase. +* Add it to all models which inherited from NovaBase. + +Dependencies +============ + +None. + +Testing +======= + +None. + +Documentation Impact +==================== + +None. + +References +========== + +None. + +History +======= + +.. list-table:: Revisions + :header-rows: 1 + + * - Release Name + - Description + * - Liberty + - Introduced + * - Mitaka + - Simplified and re-proposed