MarkLogic中CORB任务的文档选取逻辑及断点续跑配置咨询
MarkLogic CORB 相关问题解答
1. CORB任务如何选取文档?
CORB选取文档的核心逻辑围绕URI模块展开:
- 首先执行指定的URI模块(支持XQuery或JavaScript),该模块负责从MarkLogic数据库中筛选出符合业务条件的文档URI列表;
- 默认情况下,CORB会一次性拉取所有符合条件的URI,也可通过
BATCH-SIZE参数配置分批拉取,减少内存占用; - 后续的处理模块(PROCESS-MODULE)会基于这些URI,逐个或批量处理对应的文档。
2. 未配置分批逻辑时,中断后重跑会处理重复记录还是剩余记录?
如果没有设置任何跟踪已处理记录的逻辑,重新运行CORB任务时:
- 会再次执行URI模块,获取全部5M条符合条件的URI;
- 任务会从头开始处理,也就是重复处理之前完成的2M条记录,不会自动跳过直接处理剩余的3M条。
这是因为CORB默认不具备自动跟踪已处理记录的能力,必须手动配置状态跟踪机制。
3. 如何配置手动运行时选取下一批记录?CORB默认支持吗?
CORB默认不会自动选取下一批记录,需要通过以下方式配置实现:
- 基于文件的范围控制:第一次运行时,通过
URIS-FILE参数将URI模块输出的所有URI写入文件;后续每次运行,使用START和END参数指定本次处理的URI范围(例如第一次START=1, END=2000000,第二次START=2000001, END=5000000)。 - 基于数据库集合的状态跟踪:维护一个存储已处理URI的集合,修改URI模块,让它查询时排除该集合中的文档,每次运行仅返回未处理的URI。
- CORB内置状态跟踪:配置
STATE-COLLECTION参数,CORB会自动将已处理的URI存入指定集合;后续运行时,URI模块可基于该集合过滤掉已处理的记录。
内容的提问来源于stack exchange,提问作者Anuj Gupta
相关产品推荐
相关产品推荐

