2016-03-08 100 views
0

更新關係數據可以說我有下列對象:在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之間的關係。如,如果我更新欄,然後foo將不會被更新,像這樣:

Bar sameBar = hzBarMap.get(1); 
sameBar.setX(20); 
hzBarMap.put(1, sameBar); 
Foo sameFoo = hzFooMap.get(1); 
在上面的例子中

,sameFoo.bar.x從未更新與20的新的價值是否有辦法在Hazelcast中更新每個實例?

我可以寫我自己的引擎,記住這裏的一切存儲和更新的每一個對象,我覺得每一個實例,但這樣會使寫太貴了。

或者我可以以某種方式使地圖之間的指針,但是這會減慢讀取......解決這個問題的任何幫助,將不勝感激!

回答

0

Hazelcast是不是一個關係數據庫。您必須重新考慮您使用數據的方式。

作爲一個IMAP的訪問對象是相對便宜的,你可以嘗試有一個地圖的對象類型,並存儲在依賴關係,而不是目標對象的關鍵。或者使用某種自動解析該鍵的「智能指針」。

但據我所知Hazelcast沒有什麼管理對象之間的關係。如果你真的依賴這種屬性,那麼也許Hazelcast不適合你。

+0

是否HZ允許遞歸調用map.get()?例如,如果我試圖做某種超級指針,那麼在我從map.get(...)返回之前,需要將對象重新拼回到一起。我曾嘗試過,因爲一個線程嘗試訪問多個分區而導致threadstateexcepton錯誤 – user972276