PostgreSQL中是否有大型二进制数据的透明重复数据删除?

时间:2014-03-24 11:12:55

标签: database postgresql duplicates

我们有一个应用程序,它将大型二进制数据存储为PostgreSQL数据库中的大型对象,现在有一个用例,我们对这些数据进行操作,以便我们知道已经保存的数据部分将再次保存只是略有不同的组合。我们实际上将拆分一些文件并以不同的方式组合它们,但是希望将原始文件另外保存到新的组合文件中。

这听起来像是一个考虑重复数据删除的好用例。你是否知道Postgres中任何直接和透明的东西,这样我们就不需要重新发明轮子了?像Postgres一样添加存储层或插件,以便它至少为整个数据库处理它自己的重复数据删除?或者也许是一些库作为我们的应用程序可以使用的Postgres的大对象函数的包装器,包装器lib可以完成所有复制部分,可能会添加一些表用于簿记和所有这些东西?

我们知道支持重复数据删除的文件系统,一种可能是将它们用作Postgres数据存储的后端。另一种选择是将新数据保存在Postgres之外的重复数据删除文件系统中。但是现在我们更喜欢Postgres中的一些东西,这些东西可以很容易地被抛弃并且由交易等支持。

感谢任何提示!

1 个答案:

答案 0 :(得分:6)

不,没有(截至9.4,无论如何)。

PostgreSQL压缩每个项目,但不进行任何跨项目压缩或重复数据删除。

TOAST机制意味着PostgreSQL应该能够通过一些努力对TOASTable类型中的值进行重复数据删除,这只是实现它的一个问题。

欢迎补丁; - )