English 中文(简体)
我该如何安全地从数据库中删除一行数据?
原标题:
  • 时间:2009-03-11 22:03:09
  •  标签:

出于合规性考虑,在我目前的项目中,当我从数据库中删除用户的个人信息时,相关的行需要真正不可恢复地删除。

我们使用的数据库是Postgres 8.x。

除了定期运行COMPACT / VACUUM外,我还能做些什么吗?

Thankfully, our backups will be held by others, and they are allowed to keep the deleted information.

最佳回答

“不可恢复的删除”比听起来要难,而且不止限于您的数据库。例如,您是否打算回到备份磁带中此行也存在的所有以前的数据库实例,并在那里删除它?

请考虑定期删除和您之前提到的定期清理。

问题回答

为完成ACID中的“D”,关系型数据库使用事务日志类型的系统来处理对数据库的更改。当进行删除操作时,该删除操作会被执行到数据的内存副本(缓存缓存)中,然后以同步模式写入事务日志文件。如果数据库崩溃,事务日志将被重新播放以将系统恢复到正确状态。因此,删除存在于多个位置,需要进行删除。仅在稍后的时间内,记录才会从磁盘上的实际数据文件(以及任何索引)中“删除”。这个时间的长短取决于数据库。

你备份你的数据库了吗?- 如果是,请确保你也从备份中删除了它。

那是因为安全风险吗?如果是的话,我会更改行中的数据,然后删除行。

也许我离题了,但你真的想像那样删除用户吗?大多数身份和访问管理方法建议保留用户,但以删除标记的状态,以免失去审计能力(这个用户在过去五年里都干了什么?)

删除用户信息可能是为了遵守诚信合规要求,或出于恶意黑帽目的。在两种情况下,都没有一种删除方法可以保证不留下用户存在的痕迹,正如其他帖子所指出的那样。

也许您应该详细说明为什么需要这样一个不可撤销的删除操作...?

这不是你可以在软件方面处理的事情。这是硬件问题,如果要真正删除它,你需要物理上摧毁驱动器。

用随机字符/日期/数字等覆盖记录怎么样?





相关问题
热门标签