gpt4 book ai didi

java - 在 Hazelcast 中存储 map 的有效方法?

转载 作者:行者123 更新时间:2023-12-03 00:03:01 26 4
gpt4 key购买 nike

我目前正在使用 Hazelcast 通过网络分发我的数据。该实现使用我想要存储的对象的 IMap。然而,这些对象本质上只是一个 HashMap,所以我一直想知道是否有一种更有效的方法来使用 Hazelcast 分发“ map 的 map ”。

我已阅读 this long-forgotten issue他们的错误跟踪器上,但在实现该功能方面尚未取得任何进展。

在缺乏 Hazelcast 核心功能的情况下,除了我当前的“IMap<String, HashMap<String, String>>”方法之外,还有其他更有效的方法来管理这种数据结构吗?

最佳答案

Hazelcast 不支持键、值的映射。但一种可能的解决方案是使用复合键:

String employeeId = "1234"
String attribute = "name"
map.put(employeeId+"#"+attribute, "peter")

但是,请注意。如果您需要访问许多值,因为每次访问都需要一个往返。另一个缺点是很难获取 key1 的所有 key2/values(例如查找员工 1234 的所有属性)。

另一种防止进行不必要的序列化/反序列化的方法是将映射作为值与通过 EntryProcessor 的所有访问结合起来。这样,您就可以非常精细地控制发送/返回的数据+使用 EntryProcessor,您无需担心数据争用,因为这是由 EntryProcessor 开箱即用提供的。 API 可能不是那么漂亮,但它可能会以非常有效的方式实现这一目的。在这种情况下,我建议使用内存格式的对象。这种方法的另一个优点是很容易获取所有值,因为它们被分组在 HashMap 值中。但是,如果列数“无限”,则可能会导致问题,因为 HashMap 值不是分布式的。这不是复合键方法的问题。

所以这在某种程度上取决于您想要的用例。

关于java - 在 Hazelcast 中存储 map 的有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31241169/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com