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

标签 mysql sql web-services

我目前正在做一个新系统的项目。 该系统将使用多种不同的网络服务来生成复合数据。

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

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

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

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

我可能会生成一个表 service_mappings,其中包含任意长度的列,例如 service_id(我自己的特定服务标识符)、ref_id (网络服务提供的数据),model(我在我的系统中将其映射到什么数据),key(这个 [service_id, ref_id] 对应于我的 model)。

另一方面,我可能会为每个单独的模型选择一个映射表之类的东西,它将包含更少的键(从上一个表中获取 model,因为它将由表名定义)。这可能更适合与某种 ORM 一起使用。

那么,我的问题如下:什么是正确方法,什么是最有效,也许有一些完全不同的技术?

缓存提示
回应近期answer by Alexey . 我们可能会使用一些缓存技术(例如 memcache),尽管对于主要数据源我们希望依赖 MySQL 因为我们有方法来创建和恢复备份,我们将不得不考虑如何实现它们。

此外,MySQL 似乎抑制了一些更快访问的方法,并且根据 research by DeNA实际上,在主键/唯一键查找方面,它可能比 noSQL 替代方案更快。

最佳答案

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

关于mysql - 自己数据库中的外部数据(键)映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7871636/

相关文章:

php - 如何对右表中的特定行进行左连接?

java - 带有空对象的 JPA 查询

java - 使用 jdbc 连接到数据库的安全问题

c# - 将存储库模式、缓存和 Web 服务链接在一起

c# - C#.Net Web服务错误处理

mysql - 使用 MySQL 语法根据唯一列进行选择?

Mysql "near"只重复一个模式

php - 上传到 mySQL 并使用 SimpleImage PHP?

javascript - 在页面加载之前加载数据 AngularJS 和 NodeJS

c++ - 从 C++ 返回 JSON 对象到 HTTP POST REST 调用