不再进行软删除

https://blueprints.launchpad.net/nova/+spec/no-more-soft-delete

在 YVR 会议上,大家普遍同意不再进行任何形式的软删除。为了将此达成共识,我们应该从 NovaBase 中移除 SoftDeleteMixin。

问题描述

对行进行软删除会带来后续删除或归档这些行的管理开销。事实证明,它也没有最初设想的那么必要。我们更希望不再添加额外的软删除功能,因此从 NovaBase 继承时,自动继承 SoftDeleteMixin 已经没有意义了。

用例

作为运维人员,添加新的软删除功能意味着我需要扩展我的手动清理工作以覆盖这些功能。如果我不这样做,这些表将会变得非常慢。

作为开发者,我不想诱使运维人员直接读取软删除的行。这有将数据库模式变成非官方 API 的风险。

作为开发者/DBA,在未进行软删除的表上提供 deleteddeleted_at 列会让人困惑。也可以说,对那些从未读取删除行的表进行软删除是令人困惑的。

提议的变更

本规范建议从 NovaBase 中移除 SoftDeleteMixin,并将其重新添加到所有当前从 NovaBase 继承的表中。对于那些不需要它的表,移除 SoftDeleteMixin 将留作后续工作。

备选方案

我们无法这样做。这意味着我们需要在新表上添加额外的两列,并且会稍微容易一些开始对新表进行软删除。

数据模型影响

无。

REST API 影响

无。

安全影响

无。

通知影响

无。

其他最终用户影响

无。

性能影响

无。

其他部署者影响

无。

开发人员影响

无。

实现

负责人

主要负责人

alexisl

其他贡献者

工作项

  • 从 NovaBase 中移除 SoftDeleteMixin

  • 将其添加到所有从 NovaBase 继承的模型中。

依赖项

无。

测试

无。

文档影响

无。

参考资料

无。

历史

修订版

发布名称

描述

Liberty

引入

Mitaka

简化并重新提出