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

Tho*_*ing 2 database postgresql duplicates

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

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

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

谢谢你的任何提示!

Cra*_*ger 6

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

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

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

欢迎补丁;-)