为键范围定义Hazelcast MapStore

时间:2015-05-28 10:57:41

标签: hazelcast

当我们想要实现MapStore接口时,我们只有方法loadAll来初始化地图。因此,您必须提供一组加载到地图中的键。当您将日期/时间作为主键时,如何处理这种情况。直观地,可以定义关键范围where tst between a and b。但由于我们只能提供一个Set,我们必须预先获取所有可能的日期时间值(通过SQL或其他)。下一次IMap将开始锤击数据库逐个获取每个密钥。这是最好的方法吗?难道没有更方便的方法吗?

1 个答案:

答案 0 :(得分:3)

我的建议是停止考虑地图,就好像它们是关系数据库中的表一样。尝试用符合Map语义的术语进行思考(如果你使用的是Map,那么Hazelcast中还有其他分布式集合)。例如,您必须记住,您只能对内存中可用的对象进行查询,因为查询的语义仅适用于将Hazelcast用作数据网格而不是缓存的情况。如果语义是使用缓存,则应该按键限制访问,就像在Java中继续使用传统映射一样。

例如,当涉及到数据网格时,您必须认为通常只会响应灾难恢复方案才能访问数据库。因此,从磁盘到内存的初始数据加载可能会严重影响数据库,但这只会在恢复的情况下发生,因此它不是一个主要的障碍。在使用缓存的情况下,是的,在规划持久性策略时非常有效,因为访问数据库会更频繁。

如果您提供有关您的特定用例的更多信息,特别是关于驱逐政策,我可能会帮助您。

希望这有帮助。