微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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)

原文地址:https://www.jb51.cc/postgresql/192514.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐