我正在寫一個模擬,需要一個後備數據庫來存儲結果。該模擬會寫入大量的數據。出於明顯的性能原因,我選擇嘗試一個NoSQL數據庫,特別是MongoDB。但是,我對我的數據模型有點困惑。MongoDB模式設計 - 參考VS嵌入
在關係世界中,模式將轉變到這一點:
- 模擬仿真持有配置,狀態等
- 情景描述特定的模擬情況。
- 實現組TestResults。
模擬工作如下。首先我們創建配置(映射到模擬表),並指定場景以及要計算的實際數量。然後我們開始模擬。模擬在場景中創建實現(並行,實現了許多實現並同時進行計算並插入到模擬當前正在處理的場景中)。
但是,在NoSQL中,特別是MongoDB,關係很糟糕,所以我應該儘可能地使用嵌入式文檔。所以,我想出了這個:
這種模式應該給我最好的性能首先計算所有的實現時,然後將其保存到數據庫作爲單個插入(情景)。
但是,出於性能方面的原因,我希望在計算後立即在場景中插入實現。每次實現完成時都需要更新場景。這是一個壞主意嗎 ?它在MongoDB參考上說,當向父文檔添加嵌入文檔時,父文檔會更新,但無論如何都會有性能損失。
將實現嵌入到方案中會更快嗎,但引用它?稍後閱讀和彙總數據時會損失多少性能?任何其他陷阱我應該知道?
謝謝。