您如何映射或合并来自多个来源/ Feed的不同数据?

时间:2011-08-31 19:57:35

标签: php sql ruby database coding-style

我已经为我们的网络应用程序分配了一个任务,我需要从各种来源(Facebook Opengraph,XML Feeds等)中获取不同名称(恐怖,喜剧等)的类型并减少数据下至“主”表。

这方面的一个例子是我们有一个名为“Action”的流派,我们的一个Feed有一个被称为“动作/冒险”的流派。相反,我宁愿将“动作/冒险”电影分配为“动作”主流类型。

我在考虑编写一个硬编码的哈希映射。我们在语言中使用这样的东西:

languages = { "en_US" => "English", "en_GB" => "English" }

有谁知道更好的方法?也许我应该依赖数据库中的查找表? 干杯!

2 个答案:

答案 0 :(得分:2)

我认为这里的技巧是确保保留原始名称以及源标识符。然后,您可以在源指定和目标首选指定之间创建一个映射,最后决定是静态转换一次,还是动态地在查询/视图中转换。

答案 1 :(得分:2)

我认为这取决于您使用什么来提取所有这些数据。 Randy是正确的,你应该以某种方式保存原始数据,虽然它不必在你的生产数据库中 - 它可能是一些临时形式,可能是文本文件或另一个临时数据库。

冒着偏离主题的风险......

通常当我从多个来源执行复杂的ETL时,我使用两步过程。第一步是将所有输入合并为一种格式。这可能是CSV或XML文件,也可能是登台数据库。

从那里我有第二个进程将数据加载到生产数据库或主数据库中。这里的优点是,一旦你的导入(或“加载”)代码完成,所有可能复杂的业务逻辑等,你很少再次触摸它(并可能打破它)。如果新数据源联机,您只需编写一些新代码即可将其转换为通用格式。一旦采用该格式,您就知道导入过程将正确处理它。

同样,您翻译(或“转换”)数据的方式取决于您在ETL系统中使用的繁重工作。如果您正在使用临时数据库,那么将它放入表中是有意义的。从原始数据转换为通用格式时,您通常希望进行此转换。

相关问题