我是否应该删除(SQL 和 DB)任何内容?

我是否应该删除(SQL 和 DB)任何内容?

我很好奇,我是否应该删除任何东西?现在我正在建立一个网站(为自己),它允许您订阅用户,然后每次用户上传内容时您都会收到一条消息。

或者评论,如果有一个帖子,有人直接评论了你的评论,你会收到一条消息。我应该删除这些评论还是只是简单地隐藏它?

每个订阅都有三个(64 位)整数。id、commentId、recipientId。您可以通过 commentId 查看评论表,找出谁给您写了评论。如果我不使用删除,它将有第四个整数表示状态(显示、隐藏/删除)。

我应该保留它们还是删除它们?如果我应该删除它们,那为什么?我知道也许当有个人用户时你必须根据要求删除它们,但除此之外我还应该删除它们吗?

我不知道我将使用哪个 SQL DB。

-编辑-

谢谢大家。现在我不会删除任何内容,除了我可以生成的内容。比如关于订阅的内容。

答案1

我工作的公司为某些受监管行业的人们提供软件,因此我通常有“永不删除任何事物“态度,因为如果您删除任何内容,您就失去了审计跟踪的完整性。相反,将信息标记为已删除(或将其移动到表的存档版本)并记录谁“删除”了它以及何时删除的。

真正删除内容的唯一原因是

  • 如果你的空间不够了(但现在磁盘很便宜)
  • 为了提高效率(但如果你的数据结构索引良好,并且碎片化程度不高,那么差别就不大)
  • 出于法律原因(如果有人要求您删除某人的详细信息,您很可能必须遵守,具体取决于当地的数据保护法,或者内容本身是否侵犯了某些法律)

如果您的用户不小心删除了一些有用的内容,而您又能将其恢复,他们可能会庆幸没有被真正删除。如果某个之前曾向网站提供过有价值信息的用户勃然大怒,出于报复删除了所有帖子,您可以轻松撤回删除的内容。

另外非常重要的一点:你应该在服务条款中明确说明,当用户无法再看到信息时,信息可能不会被真正删除,并提供一个途径(如果只有“电子邮件[电子邮件保护]并要求删除”),才能真正删除他们有权根据相关法律要求删除的数据。

答案2

通常情况下,当今的现代磁盘大小和 IO 性能意味着你不需要删除记录以节省空间或保持性能。通常,记录上的“记录已删除”字段可以将记录标记为已删除(或其他状态),并带有审计跟踪。

出于监管原因,某些行业要求您永远不要删除“交易”数据。您应该已经知道是否需要这样做。如果有任何付款信息,您通常需要将数据保留(或提供数据)7 年(英国会计法)。

出于其他目的,实际上有充分的理由物理删除数据。

如果它不存在,就无法被发现。

《信息自由法》(英国)规定,只要数据可被发现,就属于任何搜索范围。这包括“软删除”记录和历史备份。

对于某些系统,我们确保在“这么多”个月后清除旧记录并重新使用/销毁旧备份磁带/文件,以确保它不适用于 FOI 请求。(处理几年前的 FOI 请求并需要从存档备份中恢复数百个旧邮箱的成本非常高)。

这与操作备份不同。我们保留备份,以便在发生灾难时可以恢复。我们还为必须保留的纸质和电子媒体设立了“记录存储”,我们将电子邮件等复制到该存储中。

答案3

我的直觉是永远不要删除任何东西。你永远不知道什么时候会需要它。如果我因为某种原因必须从工作表中删除数据,我倾向于将其移动到存档表。

话虽如此,如果这些数据是供您自己使用的,那么这可能有点过分,而且很难想象有任何合法理由要求查看旧数据。您没有过多谈论您的应用程序,但一个用户是否可以以另一种用途诽谤他们为由要求查看旧数据?

JR

答案4

您必须决定您的数据是否值得永远保存!每个人都说磁盘很便宜,但事实并非如此。这取决于您的存储解决方案和环境。

如果您在 SAN 上使用光纤通道磁盘并且磁盘空间不足,那么当由于阵列空间不足而需要添加另一个磁盘阵列时,它就不再便宜了。

在您的情况下,您似乎不会存储大量数据,并且磁盘空间可能不是问题,但 10 年后您的数据有多大相关性?

另一件需要考虑的事情是整体性能,而不仅仅是磁盘空间。我认为将历史数据存储在另一个表甚至另一个数据库中是个好主意。这样我的维护工作就会减少。我知道还有其他解决方案可以存档历史数据,比如分区,但如果这些数据不经常使用,为什么要实现更多的复杂性?

过去 6 年我一直在大型数据库中工作,当您拥有一个包含 5 亿条记录的表时,索引策略至关重要。:) 如果您的查询使用索引查找,但索引不包含您需要的所有数据,则将对您在索引中找到的每条记录使用聚集索引查找。假设您获得表的 10%,您将最终得到 50 000 000 次聚集索引查找,这根本不便宜。它不会花费您的钱,但会降低您的性能。

/哈坎·温瑟

相关内容