倉儲裡面的快取多對多關係怎麼設計
我在仿照領域驅動設計重構了系統,當我在新增快取功能的時候發現有點難度,希望老師指點.
我舉一個例子:使用者--角色 多對多關係
使用者和角色都屬於聚合根,因此應該都同時對應的repository,同樣具有對應的快取集合.
當從資料庫中載入使用者和角色的時候,該怎麼維護其中間關聯資訊呢?
我想了兩種方案,感覺都不行,
第一種:互相存放id
User
{
String[] roleIds;
}
Role
{
String[] userIds;
}
這樣我在獲取user後需要展示其角色列表,根據其id陣列就可以直接透過id去獲取角色列表,同樣對角色也是.
但是現在有個問題,就是我在user裡面刪除角色的時候,角色快取卻沒有通知到,這樣就會出現髒資料.如果這時候通知一下角色的話,使用者其他關聯資訊可能很多,是否其他的都要通知一遍?
於是我想到另一種:
就是隻在使用者裡面存放roleIds,需要展示角色中的使用者列表時,就透過反向查詢user表,
這樣當我刪除關聯資訊的話都透過user來處理,但是這樣效率很低.感覺還是不行
經驗不多,碰到這樣問題很頭疼,是否建模出了問題,還是其他問題,希望指點.
我舉一個例子:使用者--角色 多對多關係
使用者和角色都屬於聚合根,因此應該都同時對應的repository,同樣具有對應的快取集合.
當從資料庫中載入使用者和角色的時候,該怎麼維護其中間關聯資訊呢?
我想了兩種方案,感覺都不行,
第一種:互相存放id
User
{
String[] roleIds;
}
Role
{
String[] userIds;
}
這樣我在獲取user後需要展示其角色列表,根據其id陣列就可以直接透過id去獲取角色列表,同樣對角色也是.
但是現在有個問題,就是我在user裡面刪除角色的時候,角色快取卻沒有通知到,這樣就會出現髒資料.如果這時候通知一下角色的話,使用者其他關聯資訊可能很多,是否其他的都要通知一遍?
於是我想到另一種:
就是隻在使用者裡面存放roleIds,需要展示角色中的使用者列表時,就透過反向查詢user表,
這樣當我刪除關聯資訊的話都透過user來處理,但是這樣效率很低.感覺還是不行
經驗不多,碰到這樣問題很頭疼,是否建模出了問題,還是其他問題,希望指點.
相關文章
- 資料庫表中一對多關係怎麼設計?資料庫
- HIBERNATE裡面怎麼繼承一對多的關係呢繼承
- 多對多關係<EntityFramework6.0>Framework
- JPA(3) 表關聯關係(多對一、一對多、多對多、一對一)
- gorm 關係一對一,一對多,多對多查詢GoORM
- 資料儲存在多張表,快取維度如何設計?快取
- 在EFCore中多對多關係的設計資料插入與查詢
- Laravel 中的多對多關係詳解Laravel
- 6.Hibernate多對多關係建立
- 域名和ip是多對多的關係
- mORMot2 定義多對多關係ORM
- hibernate(四) 雙向多對多對映關係
- MyBatis加強(1)~myBatis物件關係對映(多對一關係、一對多關係)、延遲/懶載入MyBatis物件
- Spring Data JPA 之 一對一,一對多,多對多 關係對映Spring
- hibernate中多對多關係的維護
- 關於Hibernate多層1對多關係查詢
- Laravel 之多對多的關係模型Laravel模型
- Spring Boot 入門系列(二十八) JPA 的實體對映關係,一對一,一對多,多對多關係對映!Spring Boot
- hibernate(三) 一對多對映關係
- 【高併發】ReadWriteLock怎麼和快取扯上關係了?!快取
- Java中的多級快取設計與實現Java快取
- JPA中對映關係詳細說明(一對多,多對一,一對一、多對多)、@JoinColumn、mappedBy說明APP
- orm2 中文文件 4.2 hasMany(多對多關係)ORMASM
- 資料庫多對多表關係資料資料庫
- 多對一(主鍵)關係,create問題
- MyBatis表關聯 一對多 多對一 多對多MyBatis
- Hibernate對映檔案一對多關係薦
- 巧妙設計多級快取,為資料庫減負快取資料庫
- 專案中多級快取設計實踐總結快取
- 【Evil 域】SQL函式——將一對多關係轉換成一對一關係SQL函式
- 關於資料倉儲的設計!
- 多對多關係自行維護單項關聯數量,加快分頁查詢
- 多對多關聯的時候,怎麼返回中間表的資料集合
- AIX中怎麼看hdisk和儲存中LUN的對應關係AI
- 爬取多個頁面的資料
- Laravel多對多模型關聯Laravel模型
- 給資料庫減負刻不容緩:多級快取設計資料庫快取
- 對於快取大家是怎麼做的?快取