MLCP可用于从文件系统向ML DB导出和导入文档。
然而,进口和出口任何东西都是无效的。只有三角洲变化可以同步。怎么做?
第一个问题是如何检测来自ML和文件系统的增量更改(新的、修改的或删除的)。
我可以使用文件校验和(如果时间戳不可接受)来检测文件系统上的更改。但是如何在ML DB中做到这一点呢?我是否需要使用一些元数据属性,如上次更改时间或校验和来检测?
接下来的问题是如何设置业务流程同步。我应该探索Apache吗?(假设是每天大约设置一次双向同步。)不需要实时同步。)
我该用什么工具?我相信我需要使用MLCP,因为它更有效地处理大宗文件进出口。
发布于 2022-03-29 20:08:56
您可能没有意识到这一点,但是您正在描述事件驱动体系结构,或者更具体地描述事件来源。
本质上,您可以改变思维,将文件系统或MarkLogic文档上的每个更改视为“事件”。您需要一种方法来捕捉这些事件发生时的情况,需要一种日志来按照事件发生的顺序维护事件,并最终处理已经发生的事件并对其作出反应。
在这种情况下,您需要一些东西来捕获对MarkLogic文档(事件)的更改,需要一些东西来存储这些事件,需要一些东西来修改文件系统以同步到事件。您还需要一些东西来捕获文件系统更改(事件)、存储这些事件的记录以及修改MarkLogic以同步到捕获的事件。
当文件系统和MarkLogic同时对同一文档进行不同的更改时,您需要计划如何处理。你需要确保在一个系统中改变数据以与另一个系统同步不会产生一个无限循环,其中一个变化在这些系统之间来回跳动。
充其量,MarkLogic可以用类似于扳机、transform或API之类的东西来捕获更改日志,以便在修改文档时做出反应,并编写一个记录更改的文档。但是,您将找到您需要的其他组件。
NiFi可以让您更进一步,但是NiFi更倾向于基于批处理而不是实时,这可能会在您的场景中导致更改的冲突,并且您可以决定它的插件是否能够完全满足您的需要,因为它们通常不是非常可定制的。维护独立发生的更改的顺序也将是非常具有挑战性的。在我的经验中,NiFi也不是很可扩展,但是YMMV。
相反,我建议您考虑在用例中采用消息队列。特别是,我建议看看卡夫卡。消息队列将允许您在中心位置捕获事件并立即处理它们(降低发生更改冲突的可能性)或在您方便的时候进行处理。卡夫卡生态系统使它成为最成熟的消息队列之一,也是最简单的集成方式之一。它已经捕获了有 连接器来捕获文件系统的更改和创建数据管道的能力。
https://stackoverflow.com/questions/71654761
复制相似问题