在 Hazelcast 中更新关系数据

Updating relational data in Hazelcast

假设我有以下对象:

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 中有没有办法更新每个实例?

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

或者我可以以某种方式在地图之间建立指针,但这会减慢读取速度...非常感谢任何解决此问题的帮助!

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

由于在 IMap 中访问对象相对便宜,您可以尝试按对象类型创建一个映射,并将键存储在依赖项而不是目标对象中。或者使用某种 "smart pointer" 自动解析此密钥。

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