我在我的應用程序(Django/Rest Framewrok)中有這個數據模型。它主要列出並運行於項目和版本類,其中每個系統有多個實例受影響,每個實例有多個階段有不同的努力。在數據庫中是否具有預先計算的字段以避免深度連接查詢是一個壞主意?
我開發一個前端一個RESTful API,並列出所有項目爲一個發行時,我遇到了加載時間的麻煩,或者所有的活動項目。我需要進入ProjectInstancePhase以獲得Project o Release元素的全部工作。
對更新依賴對象時更新的Project或Release對象是否具有預先計算的值是一個壞主意?我知道它打破了數據庫的規範化,但它會節省很多時間。考慮列出所有相關數據的300個項目。
我想過緩存,但我需要經常使其無效,因爲需要顯示相關類的任何更改。
是否有一些ORM技巧來降低數據庫的負載?
所有的教程和示例通常都依賴於很少反映真實生活複雜項目的簡單數據模型,所以我沒有在其中找到這個主題。
非常感謝。
*Listed *Listed
+--------+ +------------+ +-----------+ +----------+
| Person +>-----<+ Participant+>----<+ Project +>-------<+ Release |
+--------+ +------------+ +-----------+ +----------+
v
^
+--------+ +-----------------+
| System +>----<+ ProjectInstance |
+--------+ +-----------------+
v
^
+----------------------+ +--------------+
| ProjectInstancePhase +>------<+ ProjectPhase |
+----------------------+ +--------------+
*Effort
Denormalisation是一個完全有效的技術,只要它是謹慎使用,正確的原因。最棘手的部分是確保在值保持同步 –
是的,我開發了一個Mixin來檢查sav之前所選字段的更改因此我可以更新相關字段。 – jmoreno