工作中遇到问题分析记录,先直接抛问题。
现有三层业务 A, B, C
原始数据 A 层,存储着 基础数据对象 Map => a... size 不小于 1000, 随机抛出 一个 数据对象( a1)
底层数据 B 层, 捕获数据A层 抛出的对象 a1 后, 经过一系列 db 查询, 深度算法 计算 等处理, 生成 a1 对应的结果 b1。B层将数据抛出
业务 C 层, 捕获B 层 数据,进行业务处理。
那么,问题就来了。如果A层, 在一段时间内多次 抛出 对象 a1 。 B 层 每次将要 消耗大量的资源处理 来 产出 b1。 为了解决这个问题, 鄙人想到三种方案, 分析并记录。 秘籍就是根据优缺点按实际情况选择(鄙人不推荐第三种)~
1. 每次按正常流程 走 A -> B -> C
优点: 无需多余的存储开销,整体流程 清晰 简单。数据更新及时
缺点: 计算,查询 开销大,结果产生速度,依赖于网络 以及 计算难易度
2. 在B 层 中维护一个 Map {a1_key => b1}
优点: 结构清晰,计算,查询开销小,结果产生速度 较快。无数据污染。
缺点: 需要多维护一个 Map,对于最新的 db 数据 更新不及时。
3. 将B 层中的结果 挂载至 对象 a1 上
优点: 计算,查询开销小,产出快。存取极其方便。
缺点: 存在对A 层数据污染,不易维护。
数据对象存储优劣
原文:http://www.cnblogs.com/fengpan/p/6003025.html