如何从数据库中安全删除行?

时间:2009-03-11 22:03:09

标签: sql postgresql

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

我们使用的数据库是postgres 8.x,

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

值得庆幸的是,我们的备份将由其他人保留,并且允许他们保留已删除的信息。

6 个答案:

答案 0 :(得分:2)

“不可恢复的删除”比听起来更难,并且超出了您的数据库。例如,您是否计划在磁带/备份上返回所有以前的数据库实例,此行也存在,并在那里删除它?

考虑您之前提到的定期删除和定期VACUUMing。

答案 1 :(得分:1)

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

那是因为安全隐患吗?在这种情况下,我会更改行中的数据,然后删除该行。

答案 2 :(得分:1)

也许我正在切断,但你真的想要删除这样的用户吗?大多数身份&访问管理方法建议保持用户身边但处于被删除标记状态,以免失去审计能力(此用户在过去五年中做了什么)?

出于完整性合规性原因或恶意黑帽目的,可能需要删除用户信息。在任何一种情况下都没有删除方法,可以保证用户不存在任何痕迹,如其他帖子中所述。

也许你应该详细说明为什么这种不可撤销的删除是可取的......?

答案 3 :(得分:1)

要在ACID中完成“D”,关系数据库使用事务日志类型系统来更改数据库。删除时,删除数据的内存副本(缓冲区缓存),然后以同步模式写入事务日志文件。如果数据库崩溃,将重放事务日志以使系统恢复到正确状态。因此,删除存在于必须删除的多个位置。仅在稍后的某个时间,记录从磁盘上的实际数据文件(以及任何索引)中“删除”。这段时间取决于数据库。

答案 4 :(得分:0)

这不是你可以在软件方面做的事情。真正删除它的硬件问题是你需要物理破坏驱动器。

答案 5 :(得分:0)

如何用随机字符/日期/数字等覆盖记录?