MarkLogic - 使用 MLCP 的增量加载

MarkLogic - Incremental load using MLCP

MarkLogic 版本:9.0-6.2

我们正在尝试使用 mlcp 将客户数据的每日更改加载到 data-hub-STAGING 中,然后使用协调流将更改导入到 data-hub-FINAL 中。

据我了解,'collector.sjs'用于return需要协调的uris。在第 1 天满载后,收集器是否可以识别前一天的变化并仅协调那些行?

我有几个设计

  1. 每 运行 保存批次 运行 时间,并在收集器中使用具有更高批次 运行 时间的 return uris 的逻辑(每份文件批量保存运行次)

  2. 将每个文档保存到两个集合(客户和 customer_currentDate),然后从 customer_currentDate 集合中收集 return 个文档。但是,如果在不同的日子

  3. 摄取和协调运行,这将有问题
  4. 将每个文档保存到两个集合(customer 和 customer_batchDateTime),然后创建一个标记(类似于 PROCESS 集合中的一行,PROCESS_IND 为 'N').然后收集器将扫描 PROCESS 集合并从 customer_batchDateTime 集合中查找 PROCESS_IND 作为 'N' 和 return 文档的文档。最后,writer.sjs 会把 PROCESS_IND 变成 'Y'

在继续上述任何选项之前,我只想检查在摄取或协调过程中是否有任何内置功能可以轻松识别 delta/change 记录,这样我就不会过度-设计流程。

我认为 "built-in" 能力是将选项传递给收集器模块的能力。这允许您选择最佳方法来限制收集器 returns.

对于您的用例,听起来 best/simplest 方法是每天将所有文档插入名为例如"input-(current date)",然后将其作为选项提供给收集器模块,以便它可以应用收集查询。

作为替代方案,您可以考虑通过添加名为 processed 的集合来触及 Staging 中的文档。您可以在作者 运行 之后从协调脚本中的主脚本执行此操作。收集器可以简单地抑制已处理的文档,并且只对未处理的文档 运行。可能比使用更具体的集合名称更简单、更可靠。

HTH!