Django allows auto database routing。測試和生產可能有不同的數據庫。測試的默認值是sqlite3。將從sqlite3
遷移到couchdb
將花費超過10分鐘的單元測試任何顯着的時間改進。跑步?用django測試優化代替默認的sqlite與couchdb數據庫
還有什麼其他的測試數據庫優化可以做?
Django allows auto database routing。測試和生產可能有不同的數據庫。測試的默認值是sqlite3。將從sqlite3
遷移到couchdb
將花費超過10分鐘的單元測試任何顯着的時間改進。跑步?用django測試優化代替默認的sqlite與couchdb數據庫
還有什麼其他的測試數據庫優化可以做?
不確定您是否可以成功將SQLite替換爲CouchDB並保存所有功能,除非您的SQLite使用非常基本。知道sqlite可以做多少事情,這並不容易。
如果只使用相當簡單的SQL查詢或者對查詢結果進行復雜計算,CouchDB可以加速測試。由於CouchDB通過按需更新請求語義存儲隨時可用的結果,因此可以爲您節省一些CPU時間。
但是,您是否嘗試過使用:memory:存儲?或者在tmpfs上使用test db?還要注意,使用CouchDB測試可能會受到網絡延遲的影響 - HTTP請求並不像通過驅動程序調用函數那麼便宜(sqlite只是數據庫驅動程序,而不是完整的RDBMS)。
P.S.請注意,我不是從Django ORM或其他人的角度談論的,因爲他們通常不能提供像本地庫一樣的有效性。例如,SQLite允許自定義SELECT
查詢,而views
很少使用,而CouchDB更適合預定義views
而不是自定義查詢(temporary views
)。
我建議使用完全不同的設置來開發/測試而不是路由器。
如果數據庫是測試運行這麼久的主要原因,那麼通常是因爲在每次測試之前使用裝載測試的裝置 - 使用https://github.com/dnerdy/factory_boy或類似的解決方案可能會非常有幫助。
這裏似乎沒有足夠的信息。你是否僅僅爲了提高你的測試性能而切換?您的測試需要10分鐘才能運行:您是否考慮優化測試的性能?我認爲從SQL切換到NoSQL db需要很多返工:這裏是這種情況嗎? – Chris