与体系结构匹配的类似数据源

Similar data sources matching architecture

提问人:Lukas 提问时间:5/5/2022 更新时间:5/5/2022 访问量:65

问:

问题:

我正在开发一个系统,它需要自动组合 3 个不同的数据源。

因此,假设我们有 3 种类型的对象:
对象 A(来自源 A):

int Id
string Name
int ObjectB_Id

对象 B(来自源 B):

int Id
string Name
int ObjectC_Id

对象 C(来自源 C):

int Id
string Name

这些对象中的每一个都由它们自己独特的来源提供,这些来源可能随时发送新数据。

所有这些都保存在它们自己的本地数据集(A、B 和 C)中。

目标:我需要有一个组合数据集,如下所示:

int Id
int? ObjectA_Id
int? ObjectB_Id
int? ObjectC_Id

它填充了来自所有对象的 ID。如果源 A、B 或 C 发送任何新数据,则需要使用新的或更新的匹配项自动更新此数据集。 对象可以通过通用名称字段进行匹配,或者如果对象具有外部对象 ID,也可以使用此字段(在本例中为 ObjectB_Id、ObjectC_Id)。


我的第一个想法是这样的,随之而来的是一个问题:

我的解决方案的常见情况:

  • 源 C 发送一个新的对象 C。它与数据集 A 中的对象 A(按名称)匹配,但无法与任何对象 B 匹配,并且它是 放置在组合数据集中,尽管数据不完整。
  • 源 B 发送新的对象 B。它与数据集 C 中的对象 C 匹配(按 ObjectC_Id),但无法与任何对象 A 匹配(假设名称略有不同)。然后,将其与组合数据集中的任何项目进行比较,并发现它可以通过公共ObjectC_Id属性与上一个条目建立连接。这 2 个条目将合并到数据集中。

此解决方案的问题:

  • 来自每个 source 需要其他数据集可用于匹配 - 所以如果 源 C 发送新的更新,然后尝试与两个数据集匹配 A 和 B 要求从数据库中获取它们。(所有 这些可能包含 ~200k 记录)。这是非常缓慢的。
C# 算法 体系结构 匹配

评论

0赞 ali.turan 5/7/2022
您是否正在尝试创建第 4 个数据集,它是其他 3 个数据集的组合?或者尝试将所有数据集相互同步?另一个问题是,如果你想创建不同的数据集,你到底为什么需要它?我之所以问这个问题,是因为除了组合之外,可能还有其他方法。
0赞 Lukas 5/8/2022
@ali.turan 我的主要目标是将它们同步在一起 - 我需要能够通过一个 id 从所有 3 个数据集中获取数据。数据集 4 只是将它们映射在一起。

答: 暂无答案