假设我们有一家公交公司的数据库。

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

  • 我们正在寻找这样的东西:
  • 我们要复制生产数据库(包括结构更改,序列等)。
  • 我们想从生产数据库中删除旧数据,但是将这些语句从复制中排除,以保持归档不变。

  • 例子:
  • 如果公交旅行时间超过3个月,请从生产数据库中删除它,但将其保留在已有的归档数据库中。

  • 我们目前正在研究的是:
  • 某种主/从复制(Slony?)。
  • 针对特定表的ENABLE REPLICA RULE,其中我们使用一些时间规则(WHERE日期
    感谢您的见解。

    最佳答案

    这是逻辑复制(如Bucardo或Slony之类)真正可以提供帮助的领域,因为您只能复制所需的表并在它们周围维护自己的触发器。在这种情况下,您可以具有更新和删除触发器以存档数据的旧版本,以便您可以查看它。

    当然,您也可以使用生产数据库中的触发器来执行此操作,然后使用外部数据包装器,如注释所示。但是,如果您要走这条路线,则还可以考虑将其复制到csv和加载中,以便在最终需要时留出空隙并进行do转换。

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

  • 10-10 17:57
    查看更多