我目前正在开发一个新系统的项目。 该系统将使用几种不同的Web服务来生成复合数据。
有些数据是复合的,我使用关系SQL表(特别是服务器,是MySQL)来组合数据以供进一步使用。
我的问题是我必须实现一些数据映射。
以国家为例。 在我们的系统中,国家/地区是2的键控(基于CHAR ISO 3166-1 alpha-2 ascii列的主键)。 一个Web服务以相同的格式提供数据。而其他几个都有自己唯一的整数类型标识符。
当我即将实现代码内映射时,我希望能够动态更新映射表,而无需更改代码。 因此,我正在考虑映射表。
我可以生成一个表service_mappings
,它包含任意长度的列,例如service_id
(我自己的特定服务标识符),ref_id
(由web-service提供的数据), model
(我将此数据映射到我的系统中的数据),key
([service_id
,ref_id
]对应的关键字model
)
另一方面,我可以为每个单独的模型选择一个映射表,它包含更少的键(从前一个表中取model
,因为它将由表名定义)。与某种ORM一起使用可能更为可行。
所以,我的问题如下:什么是正确方法,什么是效率,并且可能有一些完全不同的技术?
缓存提示
回应最近的answer by Alexey。
我们可能会使用一些缓存技术(例如 memcache ),但对于主数据源,我们希望依赖 MySQL ,因为我们有适当的方法来创建和恢复备份,我们必须考虑如何实施它们。
此外,MySQL似乎禁止某些方法来加快访问速度,根据research by DeNA,它实际上可能比主要密钥/唯一密钥查找上的noSQL替代方案更快。
答案 0 :(得分:0)
在你的情况下,我会在映射表中保留模型而不是创建单独的表,因为找到适当的映射会更容易。如果您想要更高效,可以使用一些nosql存储来进行此映射(例如Redis或memcachedb),这通常更快更可靠。