对于我正在编写的应用程序,我需要能够识别何时将新数据插入数据库的几个表中。
问题是双重的,这些数据每分钟会被插入很多次,有时非常大的数据库(我需要对需求/数据库轮询问题敏感),我无法控制创建这些数据的应用程序(据我所知,我不能使用postgres中可用的notify/listen功能来完成这种任务*)。
任何关于好的策略的建议都将不胜感激。
*我相信控制这些数据的应用程序本身正在使用notify/listen功能,但我不知道如何(如果可能的话)知道它在外部使用什么"通道",以及它是否能够锁定到那个
一般情况下,您需要在表中使用一些东西来确定新情况,这里有几种方法。
时间戳列可以让您使用日期,但是您仍然会遇到将日期存储在数据库之外的应用程序问题,并且不在数据库中的数据意味着要管理另一个数据领域。恶心。
以每个表为基础存储上次更新/插入时间戳的跟踪表可以满足您的需求。您可能希望使用触发器来维护最后一个dml时间戳。
您不希望使用的解决方案是来自nextval的串行(整数)id,用于惟一性以外的任何目的。标准/常见的错误是假定串行键是连续的(它们不是)或单调的(它们不是)。