3

MarkLogic 版本:9.0-6.2

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

据我了解,“collector.sjs”用于返回需要协调的 uri。在第 1 天满载后,收集器是否有办法识别前一天的变化并仅协调这些行?

我有几个设计

  1. 每次运行都保存批处理运行时间,并在收集器中有逻辑返回具有较高批处理运行时间的 uri(每个文档都与批处理运行时间一起保存)

  2. 将每个文档保存到两个集合(customer 和 customer_currentDate),然后让收集器从 customer_currentDate 集合中返回文档。但是,如果摄取和协调在不同的日期运行,这将有问题

  3. 将每个文档保存到两个集合(customer 和 customer_batchDateTime),然后创建一个标记(类似于 PROCESS 集合中的一行,PROCESS_IND 为“N”)。然后收集器将扫描 PROCESS 集合并查找 PROCESS_IND 为“N”的文档并从 customer_batchDateTime 集合中返回文档。最后,writer.sjs 会将 PROCESS_IND 变为 'Y'

在继续进行上述任何选项之前,我只想检查是否有任何内置功能在摄取或协调流程中以轻松识别增量/更改记录,以免我过度设计流程。

4

2 回答 2

1

我认为“内置”功能是将选项传递给收集器模块的能力。这使您可以选择最佳方法来限制收集器返回的内容。

对于您的用例,听起来最好/最简单的方法是每天将所有文档插入一个名为“input-(当前日期)”的集合中,然后将其作为选项输入到收集器模块中,以便它可以应用集合查询。

于 2019-02-03T16:45:59.507 回答
0

processed作为替代方案,您可以考虑通过添加一个名为instance的集合来处理 Staging 中的文档。您可以在编写器运行后从协调脚本中的主脚本执行此操作。收集器不仅可以简单地抑制已处理的文档,而且只能在未处理的文档上运行。可能比使用更具体的集合名称更简单、更健壮。

于 2019-02-06T11:47:24.533 回答