Spring Boot:解析大量数据库条目的分页列表,同时删除其中一些

  • 技术:后端-Spring Boot java 8,数据库-postgres,通过Spring Data Jpa / Hibernate映射的实体
  • 我的任务是查询具有大量(百万)个不同条目的表,并为每个条目(通过REST HTTP调用)从外部系统验证某种情况。如果验证失败,则必须删除该特定条目。
  • 必须对该表的所有条目执行此任务,因此我们不能按任何内容进行过滤。它还需要更复杂的验证业务逻辑,因此我们必须使用Java而不是仅使用SQL脚本来完成
  • 由于大量不同的条目,一种想法是使用PagingAndSortingRepository
  • 因此,java任务将在专用线程中执行,如下所示:
    • 对于n个条目的每一页,对每个条目执行验证逻辑。如果对该条目的验证失败,则应将其从数据库中删除。潜在的解决方案:
      1. 直接删除条目-打开点:假设我们从第1页的总共10个条目中删除了2个条目,然后我们无法继续第2页,因为现在分页顺序已更改(最初从第2页起有2个条目会出现转至第1页)。我们可以再次处理第1页,以确保没有跳过任何条目,但是现在某些条目将被处理两次(增加了用于验证的外部系统的负载)。有没有一种方法可以修改/删除以分页方式检索的数据,以使其不会总是破坏初始分页?
      2. 将其标记为将来以某种方式删除,因此我们不修改初始分页结果-也许将条目的唯一ID添加到列表中,并且在处理完所有页面后,最后删除该列表中提到的所有条目-切入点:列表可能会变得很大,并可能导致内存问题。
      3. ??

考虑到大型数据集并考虑外部系统上每次“验证检查”的成本,最有效的解决方案是什么?

cahdj123 回答:Spring Boot:解析大量数据库条目的分页列表,同时删除其中一些

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3106413.html

大家都在问