postgresql – 数据库内容版本控制

前端之家收集整理的这篇文章主要介绍了postgresql – 数据库内容版本控制前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有兴趣保持在我的数据库中的某些表上发生的每个变化的运行历史,从而能够重建数据库的历史状态以进行分析.

我正在使用Postgres,而这个MVCC的东西似乎就是为了这个目的可以利用它,但我找不到任何文档来支持这个.我可以做吗?有没有更好的办法?

任何输入是赞赏!

– – – -编辑 – – – –

我已经把Denis的回应标记为答案,因为他确实回答了MVCC是否是我想要的那个问题.然而,我已经解决的策略在下面详细介绍,以防任何人觉得有用:

Postgres功能完成我所需要的:在线备份/时间恢复.

http://www.postgresql.org/docs/8.1/static/backup-online.html解释了如何使用此功能,但实质上您可以将此“写入日志”设置为归档模式,拍摄数据库的快照(例如,在生效之前),然后持续存档WAL.然后,您可以随时使用日志重放来随时调用数据库的状态,如果您选择(通过在备用服务器上不断重播新的WAL),则有一个热备份的一个好处.

也许这种方法不像其他保存历史的方法那么优雅,因为您需要为每个希望查询的时间点实际构建数据库,但是看起来非常容易设置和丢失零信息.这意味着当我有时间来改善我对历史数据的处理时,我会拥有一切,因此能够将我的笨重的系统变成一个更优雅的系统.

使这样完美的一个关键事实是,我的“有效时间”与特定应用程序的“交易时间”相同 – 如果不是这样,我只会捕获“交易时间”.

在我发现WAL之前,我正在考虑只是采取每日快照或一些东西,但是大尺寸的要求和涉及的数据丢失并不适合我.

为了在一开始就不会影响我的数据保留的快速起步和运行的方式,这似乎是完美的解决方案.

I am using Postgres,and this MVCC thing just seems like I should be able to exploit it for this purpose but I cannot find any documentation to support this. Can I do it?

不是真的.有一些工具可以看到死排,因为自动吸尘是最终可以回收的.

Is there a better way?

如果我的问题是正确的,你正在研究日志slowly changing dimensions.

你可能会发现这最近相关的线程有趣:

Temporal database design,with a twist (live vs draft rows)

猜你在找的Postgre SQL相关文章