### 陷阱
使用cache API时,一个最重要的问题就是潜在的数据加载。因为IMDG提供的分布式集合也都是实现的JDK的Map、Set等接口,以JDK的Map为例,它接口规定put和remove返回被替换的对象或删除掉的对象,所以这会导致我们操作缓存时导致与后端存储的通信。所以我们要调用其它版本的API,例如GridGain提供了putx等接口,其返回值是一个布尔值而非旧的对象。
### 问题
现今的IMDG虽然已经比较成熟,但仍有一些问题需要解决:
Ø 冷启动问题:即便是能够并行还原,从后端数据库还原数TB的数据依然需要很久,这段时间是会导致数据库的过载,可能无法为其他应用提供服务。
Ø 缺少CDC能力:还没有一款IMDG产品提供CDC(Change Data Capture)能力,即数据库数据的变化如何反映到IMDG中。现在一般都需要触发器或第三方产品来实现CDC,例如Hazelcast通过第三方Speedment能够监控数据库中的数据变化。
Ø 分布式计算容错:像Impala分布式计算平台直接不提供容错。
### 参考资料
1 [Hazelcast's MapLoader Pitfalls](http://java.dzone.com/articles/hazelcasts-maploader-pitfalls)
2 [Jags Ramnarayan on In-Memory Data Grids](http://www.infoq.com/articles/in-memory-data-grids)