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. blueprint no-more-soft-delete Change-Id: If9200823f472fd3e9c32a8e61f235539ec7de8a5
This commit is contained in:
141
specs/mitaka/approved/no-more-soft-delete.rst
Normal file
141
specs/mitaka/approved/no-more-soft-delete.rst
Normal file
@@ -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
|
||||
Reference in New Issue
Block a user