database - 从超过时间线的 PostgreSQL 数据库中归档记录

标签 database postgresql database-replication

假设我们有一个巴士公司的数据库。

  • 我们收集有关乘坐公交车、乘客名单、燃料等的数据。
  • 我们主要处理有关即将到来的游乐设施的数据
  • 有时我们需要查看历史记录(用于会计),但时间框架很短(最多 3 个月)。
  • 出于显而易见的原因(存储浪费、查询缓慢等),我们不想将所有记录都保留在我们的生产/开发服务器上。
  • 我们希望有一个单独的数据库来存档整个历史。
  • 在 PostgreSQL 上实现此目标的最佳方法是什么?

我们正在寻找这样的东西:

  • 我们要复制生产数据库(包括结构更改、序列等)
  • 我们想从生产数据库中删除旧数据,但从复制中排除这些语句以保持存档不受影响。

例子:

  • 当公交车行程超过 3 个月时,将其从生产数据库中删除,但将其保存在存档数据库中,因为它已经存在。

我们目前正在研究的内容:

  • 某种主/从复制(Slony?)。
  • 为特定表启用 REPLICA RULE,我们用一些时间规则修改 DELETE/UPDATE 语句(WHERE date < NOW() - interval '6 months')

感谢您的见解。

最佳答案

这是逻辑复制(如 Bucardo 或 Slony)真正有用的领域,因为您可以只复制您想要的表并围绕它们维护您自己的触发器。在这种情况下,您可以使用更新和删除触发器来存档旧版本的数据,以便您可以查看它。

当然,您也可以在生产数据库中使用触发器来执行此操作,然后按照注释建议使用外部数据包装器。但是,如果您要走那条路,您也可以考虑复制到 csv 和加载,这样您就有了气隙,并在最终需要时进行转换。

关于database - 从超过时间线的 PostgreSQL 数据库中归档记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32205034/

相关文章:

mysql - MySQL 查询转换为 PostgreSQL 的问题

PostgreSQL 套接字异常 : Operation on non-blocking socket would block. 这是什么?

c# - 合并具有相同主键的行并计算新值的平均值

mysql - MTS 复制死锁

mysql View 和复制

mysql - 针对可变深度数据的 mysql 数据库的最佳设置

mysql - 多用户数据库

database - 开发人员可以制造的最高 'mistakes' 是什么,会导致数据库服务器崩溃?

c# - 如何从数据库读取特定文本框为文本框背景颜色着色

MySQL MASTER TO MASTER 复制在数据库级别工作,但不使用 Spring/Hibernate 在应用程序级别工作