为一个应用程序使用多个API或数据源的最佳实践

时间:2017-10-26 18:32:32

标签: json xml database schema datasource

我想构建一个使用来自多个端点的数据的应用程序。

让我说我有:

  • 获取影院数据的JSON API
  • 用于获取有关???
  • 的数据的XML导出
  • 其他JSON API
  • 一个csv文件,更多的狗屎......

在我的应用程序中,我想将所有这些数据放在一起并为它构建视图等等......

我的想法是通过为所有这些数据源创建模式来建立数据库,所以我可以做某种“导入脚本”,每当我想获取最新数据时我都可以调用它。

我想到了模式,因为我希望能够轻松地使用任何类型的模式来熟练新的API。

请告诉我那里的可能性和最佳实践(理论和实践,如果可能的话:P)

2 个答案:

答案 0 :(得分:0)

您完全正确地建立数据库。但真正的问题可能不是如何存储您的数据。它将在逻辑上和语义上如何使它融合在一起

我建议你先看看你的观点能提供什么。从每个来源获取几个样本并尽可能地分析它们。您如何知道哪些数据是新的?如何将其与现有数据和其他来源的数据进行匹配?如果现有数据发生变化或被删除,您将如何检测和处理?如果消息人士对某事不同意怎么办?如何以及何时运行同步?如果您的某个消息来源发生故障,您会怎么做?等

如果您的数据源不是,那么使数据保持一致非常困难。通常,如果来源不同,则它们不一致。因此,谚语"垃圾进入,垃​​圾输出"。我们人类在处理小的不一致性方面没有问题,但如果存在差异,算法将无法正常工作。即使一切都在纸上,人们通常会忘记数据会随着时间而变化......

至少这是我在这种情况下的经历。

答案 1 :(得分:0)

我不确定在应用程序中是否要在同一视图中显示所有数据,或者您是否要为每个源创建不同的视图。如果要在同一视图中显示数据,如网格,我建议使用继承或接口,具体取决于您的数据和需求。我建议在数据库中设置这个结构,使用不同的表来表示不同的源,并让父表与所有具有相关类型的表相关。

这是一个关于选择接口或继承的讨论的好线程。 Inheritance vs. interface in C#

以下是在数据库中表示继承的一些示例。 How can you represent inheritance in a database?