我正在計劃從實體框架4.0端口到MongoDb。什麼是可以最大限度地減少影響的最佳實踐,因爲項目具有社交網絡功能,因此維護了複雜的關係數據庫。因此,如果我們使用關係數據庫,性能應該是一個問題。端口從實體框架到MongoDB
我們已經在項目中使用了領域層(使用POCO),存儲庫模式和DTO Mapping。此外, 決策的優缺點是什麼?同時,它對我的域的實現有何影響?
我正在計劃從實體框架4.0端口到MongoDb。什麼是可以最大限度地減少影響的最佳實踐,因爲項目具有社交網絡功能,因此維護了複雜的關係數據庫。因此,如果我們使用關係數據庫,性能應該是一個問題。端口從實體框架到MongoDB
我們已經在項目中使用了領域層(使用POCO),存儲庫模式和DTO Mapping。此外, 決策的優缺點是什麼?同時,它對我的域的實現有何影響?
如果你想'儘量減少影響'你會想在MongoDB中創建一個你在SQL中的數據庫。由於數據庫中沒有連接,因此您需要執行多次讀取才能完成查詢。本身並不算太壞,因爲MongoDB速度很快,但顯然它還有其他問題(併發等)。
但是,如果您想完全轉向使用NOSQL做事的方式,您可能無法'儘量減少影響',那麼您需要對存儲方式進行重大更改內容,訪問方式以及更新方式。
存儲:您可能會在您的數據庫中創建非規範化文檔,並且比'模型'更接近'ViewModels'。例如,您可以將父記錄中的子記錄計數存儲起來,以便您可以顯示它而不必加載它們或對它們進行計數。
訪問:您最終可能會使用Map-Reduce對數據庫進行一些查詢,這是與傳統查詢完全不同的思維方式。
更新:爲了充分利用許多細粒度的MongoDB更新功能(如$inc
),很可能您的更新方法會有所不同。除了回發一些大型視圖模型,然後將其應用到您的模型,然後更新數據庫,您可以提供更細緻的Ajax回調來更新單個值。看看CQRS瞭解更多關於如何考慮更新與查詢模型的想法。
很好的解釋!謝謝 – marvelTracker