在添加到缓存系统之前或在读取之后转换数据

时间:2017-10-31 14:18:19

标签: performance caching architecture mapping transform

我有这种情况,我不知道哪种情况更合适。

我有解决方案,我搜索足球运动员,我只有他们的名字和团队,但当用户到我的网站和点击播放器我将使用来自各种外部提供商的播放器详细信息(通常以国家/地区为基础)。< / p>

我知道在呼叫完成时要使用哪个外部提供商,每次我抓取数据时我都会向外部提供商付款,所以为了减轻这种情况,我会尝试尽可能少的时间,所以我抓住一次用户点击播放器信息,下次如果它在我的数据库缓存中,我将显示我的缓存信息。 10天后,我将再次抓住外部提供商的特定播放器,因为我希望信息以某种方式更新。

我需要转换不同的提供者数据,这些数据通常在我自己的结构中作为JSON,所以我可以正确的方式处理,我有我自己的对象结构,所以来自外部提供者的字段在我的代码中下降/映射/转换始终具有相同的命名和结构..

所以,我的问题是决定何时映射/转换来自提供商的数据

  1. 我从提供商那里获取数据,我将其转换为我的JSON结构并将其记录/保存在数据库缓存系统中使用我的主要结构,在我的解决方案代码中,我需要的是,每次用户点击我从数据库缓存此JSON字段获得的足球运动员详细信息并将其直接转换为我知道如何使用的对象。
  2. 我从提供商处获取数据保持原样在我的数据库缓存系统中,并在我的解决方案代码每次有人点击时获取足球运动员详细信息我从我的数据库缓存中获取JSON记录,我将其转换为以获取我的命名和结构,并将其转换为对象
  3. 注意: - 这是一个缓存数据库,记录不会被永久保存,如果在通话中我看到记录有超过10天我会从适当的外部提供商那里获得新数据

1 个答案:

答案 0 :(得分:0)

确定要缓存数据的图层是一种艺术形式。缓存数据的层越高,其性能就越高(需要的再处理次数越少),但重用潜力越低(应用程序的不同部分可能使用相同的缓存,如果没有,则找到值)变得过多了。)

你的另一个例子就是这个。如果您在提供商提供它时存储它,并且您需要更改它的转换方式,您将不必付费重新检索它。另一方面,如果您现在需要存储它,如果您决定更改转换方法,则可能必须将其全部丢弃。

与所有建筑设计决策一样,所有这些都是权衡利弊。你必须决定什么对你和你的申请更重要。