倉儲裡面的快取多對多關係怎麼設計

txbhcml發表於2011-04-18
我在仿照領域驅動設計重構了系統,當我在新增快取功能的時候發現有點難度,希望老師指點.
我舉一個例子:使用者--角色 多對多關係
使用者和角色都屬於聚合根,因此應該都同時對應的repository,同樣具有對應的快取集合.
當從資料庫中載入使用者和角色的時候,該怎麼維護其中間關聯資訊呢?
我想了兩種方案,感覺都不行,
第一種:互相存放id
User
{
String[] roleIds;
}
Role
{
String[] userIds;
}
這樣我在獲取user後需要展示其角色列表,根據其id陣列就可以直接透過id去獲取角色列表,同樣對角色也是.
但是現在有個問題,就是我在user裡面刪除角色的時候,角色快取卻沒有通知到,這樣就會出現髒資料.如果這時候通知一下角色的話,使用者其他關聯資訊可能很多,是否其他的都要通知一遍?

於是我想到另一種:
就是隻在使用者裡面存放roleIds,需要展示角色中的使用者列表時,就透過反向查詢user表,
這樣當我刪除關聯資訊的話都透過user來處理,但是這樣效率很低.感覺還是不行

經驗不多,碰到這樣問題很頭疼,是否建模出了問題,還是其他問題,希望指點.

相關文章