假设我们有以下通用场景:
我们需要编写一个软件解决方案:
具有以下特点:
具有以下所需限制:
问题:因为我们经常从实时源提取数据,我们如何有效地检索新添加的记录,同时考虑到上述特征/限制?如果你不得不打破其中一个限制,那将是哪一个?是否有一个术语描述了这个问题(比如数据差异或......)?我主要关心的是如何以有效的方式检索“差异”。
注意:我支持打破数据库不可知论的想法,并发挥各种RDBMS(元数据?)提供的有用机制,以从我们感兴趣的表中获取最近添加的行。我为通用而道歉,但我也期待一个通用的答案。
答案 0 :(得分:1)
首先我要说的是,我并不羡慕你必须处理这类要求。
那就是说,如果没有办法告诉上次导入后添加了什么,就必须提取所有数据并将其与目标进行比较,不是吗?
我可以想到两种方法来最小化源RDBMS上的负载:
更新结构以允许通过ID或时间戳识别新项目。
向RDBMS添加触发器,将任何INSERTS和UPDATES转发给您并维护一个没有源的缺点的镜像。
然后,其他人可能会提出更好的解决方案。可能涉及伏都教:)
祝你好运。答案 1 :(得分:1)
我主要关注的是如何做到 检索一个“差异” 高效的方式。
您如何以有用的方式识别差异?鉴于此
您可能必须依赖唯一通用的方法:存储提取的密钥,并使用它们来查找差异。 (这适用于新行,但对更新的行没有帮助。)
您是否能够有效地做到这一点很大程度上取决于您允许存储提取的密钥的位置,以及您可以在实时数据和存储的密钥之间使用哪种连接。