在 PostgreSQL 中存档具有外键约束的表

Archiving tables with foreign key constraints in PostgreSQL

提问人:Vamsi Krishna 提问时间:11/17/2023 最后编辑:philipxyVamsi Krishna 更新时间:11/18/2023 访问量:22

问:

我正在从一组具有外键约束的表中存档数据。每晚运行一个作业,将超过 6 个月的数据存档到不同的存档数据库服务器,并从实时数据库表中清除数据。

booking: ID (UUID), created_date_time, updated_date_time, transaction_id (UUID)
transaction: ID (UUID), created_date_time, updated_date_time, booking_id (UUID)
transaction_event: ID (UUID), created_date_time, updated_date_time, transaction_id(UUID)

记录计数:预订 (25,65,881)、交易 (92,21,261)、transaction_event(2,27,65,114)。

Booking.transaction_id references Transaction.ID
Transaction.booking_id references Booking.ID
Transaction_Event.transaction_id references Transaction.ID
Booking Table (transaction_id) references Transaction Table (ID)
Transaction Table (booking_id) references Booking Table (ID)
Transaction_Event Table (transaction_id) references Transaction Table (ID)

3 个参考表中的记录的 created_date 和 updated_date 不同。因此,存档超过 6 个月的数据是很困难的。 清除数据不是问题,因为 ON DELETE CASCADE 的约束。

过程将超过 6 个月的记录从 Live DB 复制到存档 DB。内部过程检查表中大于剩余时间的相关记录。

有时我在重新创建外键时会遇到问题。这需要很多时间才能完成。

PostgreSQL 外键 存档 清除

评论

1赞 JGH 11/18/2023
选择主表中的记录,然后使用找到的 ID 获取其他表中的相关记录,无论其日期如何。
0赞 Vamsi Krishna 11/20/2023
非常感谢JGH的建议及其效果。

答: 暂无答案