0

可以说我有以下对象:

Bar bar = new Bar();
bar.setX(3);
Foo foo = new Foo();
foo.setY(4);
foo.setBar(bar);

hzFooMap.put(1, foo);
hzBarMap.put(1, bar);

使用上面的代码,Hazelcast 将松散 foo 和 bar 之间的关系。如,如果我更新 bar,那么 foo 也不会像这样更新:

Bar sameBar = hzBarMap.get(1);
sameBar.setX(20);
hzBarMap.put(1, sameBar);
Foo sameFoo = hzFooMap.get(1);

在上面的示例中,sameFoo.bar.x 从未使用新值 20 进行更新。Hazelcast 中有没有办法更新每个实例?

我可以编写自己的引擎来记住所有内容的存储位置并更新我找到的每个对象的每个实例,但这会使写入过于昂贵。

或者我可以以某种方式在地图之间建立指针,但这会减慢读取速度......对于解决这个问题的任何帮助将不胜感激!

4

1 回答 1

0

Hazelcast 不是关系数据库。您必须重新考虑使用数据的方式。

由于在 IMap 中访问对象相对便宜,因此您可以尝试按对象类型拥有一个映射,并将键存储在依赖项中而不是目标对象中。或者使用某种“智能指针”来自动解析这个键。

但是 afaik Hazelcast 没有任何东西来管理对象之间的关系。如果你真的依赖这种属性,那么可能 Hazelcast 不适合你。

于 2016-03-08T18:47:22.757 回答