MarkLogic版本:9.0-6.2
我们正试图使用mlcp将客户数据的日常更改加载到数据中心STAGING中,然后使用协调流将更改引入数据中心FINAL。
据我所知,collector.sjs用于返回需要协调的uri。在第1天满负荷后,收集器是否有办法识别前一天的更改并仅协调这些行?
我有几个设计
-
每次运行都保存批处理运行时间,并在收集器中设置逻辑,以返回批处理运行时长较高的uri(每个文档都保存批运行时长)
-
将每个文档保存到两个集合(customer和customer_currentDate)中,然后让收集器返回customer_currentDate集合中的文档。然而,如果摄取和协调在不同的日子运行,这将有问题
-
将每个文档保存到两个集合(customer和customer_batchDateTime),然后创建一个标记(类似于PROCESS集合中PROCESS_IND为'N'的行)。然后,收集器将遍历PROCESS集合,查找PROCESS_IND为"N"的文档,并从customer_batchDateTime集合返回文档。最后,writer.sjs将PROCESS_IND转换为'Y'
在继续上述任何选项之前,我只想检查摄入或协调过程中是否有任何内置功能,以轻松识别增量/更改记录,这样我就不会过度设计该过程。
我认为"内置"功能是将选项传递给收集器模块的能力。这允许您选择限制收集器返回内容的最佳方法。
对于您的用例,听起来最好/最简单的方法是每天将所有文档插入一个名为"input-(当前日期)"的集合中,然后将其作为选项输入收集器模块,以便它可以应用集合查询。
作为一种替代方案,您可以考虑通过添加一个名为processed
的集合来接触Staging中的文档。你可以在作者运行后从和声脚本中的主脚本中完成这一操作。收集器可以简单地抑制已处理的文档,并且只在未处理的文档上运行。可能比使用更具体的集合名称更简单、更健壮。
啊!