我正在将数据插入/更新到表中。数据库系统不提供“ Upsert”功能。因此,我将临时表用于插入,然后合并到“最终”表中,最后将截断该临时表。
这导致比赛状态。如果在合并+截断之间将新数据插入到临时表中,则该数据将丢失。
我如何确保不会发生这种情况?
我试图通过Wait / Notify对此建模,但这也不是一个干净的解决方案。可以填充“将数据放入暂存表中” PutDatabaseRecord处理器的队列,并且仍可以执行“用于插入/更新的MergeVertica” ExecuteSQL。
答案 0 :(得分:1)
我将使用阈值为60或30秒的 MonitorActivity 处理器,并使用将持续发送消息设置为“ false”的非活动输出。
SQL成功插入到您的 MonitorActivity 的临时连接中,这样,如果在最近X秒钟内未看到任何活动,他将触发一个流文件,该文件将启动您的合并过程。