在数据集成系统中检测重复项



我正在寻找在通过HTTP和SFTP传输时避免传输重复文件的方法。每次向外部缓存执行传输时,我的系统都会存储传输的状态。

每次传输之前,我都会查找外部缓存,如果当前文件有一个状态为SUCCESS的条目,则会跳过该文件。只要我的系统能够在每次传输时将状态存储在缓存中,这就可以很好地工作。但是,在传输完成后,在写入传输状态之前,服务会终止,服务对传输没有任何线索,下次出现相同的文件时,我会重新传输该文件。

改进这一点的一种方法是在传输完成前后更新缓存,这样我就可以对文件有所了解。但是,还有其他方法可以避免这种情况吗?因为一旦文件被传输到外部系统,当状态写入失败时,就无法撤消它。有什么想法吗?

我经常同步外部数据,并编写了足够的掌握过程来谈论这个主题。您要求的物流解决方案甚至没有提及数据的上下文及其交付到另一个地点的目的。

您是否试图将文件的主副本镜像到另一个位置?如果是这样的话,那么您只需要附上一个唯一的交付编号来交付文件,这样收件人就可以独立地同步两个数据集,并处理文件中检测到的任何差异。如果你强行代表收件人做这项工作,你可能正在销毁数据。我一贯建议收件人根据需要自己提取数据,并自己同步/掌握数据,而不是推送数据。这样,这些业务规则就会组织在应该组织的地方。推送过程很糟糕。

你是否试图允许用户用自己的副本覆盖主文件,询问如何协调上传,以免覆盖文件?如果是这样,您需要取消他们的直接控制来覆盖该文件。您需要根据用户定义的流程分别同步每个文件,因为每个文件都可以有自己的业务规则。

当你说"查找外部缓存,如果当前文件有一个状态为SUCCESS的条目,该文件将被跳过"时,你给了传递者太多的责任。我是这么说的,但你怎么知道的?在制造业中,没有一个送货员会承担更多的责任。消费者有责任分配该空间。如果消费者真的需要文件,让它决定订购并处理接收,而不是让交付者处理这些决定。

最新更新