外部数据(键)映射在自己的数据库中

时间:2011-10-24 05:36:55

标签: mysql sql web-services

我目前正在开发一个新系统的项目。 该系统将使用几种不同的Web服务来生成复合数据。

有些数据是复合的,我使用关系SQL表(特别是服务器,是MySQL)来组合数据以供进一步使用。

我的问题是我必须实现一些数据映射。

以国家为例。 在我们的系统中,国家/地区是2的键控(基于CHAR ISO 3166-1 alpha-2 ascii列的主键)。 一个Web服务以相同的格式提供数据。而其他几个都有自己唯一的整数类型标识符。

当我即将实现代码内映射时,我希望能够动态更新映射表,而无需更改代码。 因此,我正在考虑映射表。

我可以生成一个表service_mappings,它包含任意长度的列,例如service_id(我自己的特定服务标识符),ref_id(由web-service提供的数据), model(我将此数据映射到我的系统中的数据),key([service_idref_id]对应的关键字model

另一方面,我可以为每个单独的模型选择一个映射表,它包含更少的键(从前一个表中取model,因为它将由表名定义)。与某种ORM一起使用可能更为可行。

所以,我的问题如下:什么是正确方法,什么是效率,并且可能有一些完全不同的技术?

缓存提示
回应最近的answer by Alexey。 我们可能会使用一些缓存技术(例如 memcache ),但对于主数据源,我们希望依赖 MySQL ,因为我们有适当的方法来创建和恢复备份,我们必须考虑如何实施它们。

此外,MySQL似乎禁止某些方法来加快访问速度,根据research by DeNA,它实际上可能比主要密钥/唯一密钥查找上的noSQL替代方案更快。

1 个答案:

答案 0 :(得分:0)

在你的情况下,我会在映射表中保留模型而不是创建单独的表,因为找到适当的映射会更容易。如果您想要更高效,可以使用一些nosql存储来进行此映射(例如Redis或memcachedb),这通常更快更可靠。