Java 如何有效地跟踪数据库中未处理的记录?
我在数据库中有一个表,该表不断填充新记录,这些记录只需发送到Elasticsearch即可 每15分钟,该表将累积约15000条记录。我的任务是创建一个Java 如何有效地跟踪数据库中未处理的记录?,java,database,spring,hibernate,bigdata,Java,Database,Spring,Hibernate,Bigdata,我在数据库中有一个表,该表不断填充新记录,这些记录只需发送到Elasticsearch即可 每15分钟,该表将累积约15000条记录。我的任务是创建一个@Scheduled作业,每15分钟收集一次未处理的记录并将其发布到Elasticsearch 我的问题是什么是最有效的方法?如何有效地跟踪未处理的记录 我的建议是使用此表中已有的列INSERTED\u DATE,每次将上次处理的INSERTED\u DATE保留在辅助表中。然而,可能同时插入两个或多个记录,但只处理其中一个?当然,肯定还有其他的
@Scheduled
作业,每15分钟收集一次未处理的记录并将其发布到Elasticsearch
我的问题是什么是最有效的方法?如何有效地跟踪未处理的记录
我的建议是使用此表中已有的列INSERTED\u DATE
,每次将上次处理的INSERTED\u DATE
保留在辅助表中。然而,可能同时插入两个或多个记录,但只处理其中一个?当然,肯定还有其他的角落案例抛弃了我的方法
你能分享一下你的想法吗?对我来说,这似乎是数据密集型应用程序的典型问题,但这是我在现实生活中第一次面对它。如果插入的日期<当前日期-5秒,则可以处理数据。这样,在选择数据的同时插入的数据就不会有问题,因为数据复制是可能的。Elasticsearch将阻止它,但如果工作流中引入任何其他内容,数据将不再一致。什么会不一致?想象一下,除了Elasticsearch,我还将记录发送到一个无法防止数据重复的系统。这将导致Elasticsearch和该系统中不同数量的记录。我不明白你的意思。您所说的“可能同时插入两个或多个记录,但仅处理其中一个记录”是什么意思?问题是什么?