2012-04-16 53 views
0

我正在編寫一個文檔編輯Web服務,其中的文檔可以通過網站編輯,或在本地和通過git推送。我試圖決定這些文檔應該作爲單個文檔存儲在文件系統還是數據庫中。我想知道的幾點是:使用基於文件的Web服務時,我應該使用數據庫還是僅使用文件系統?

  1. 如果他們在數據庫中,有沒有辦法讓git查看文檔?
  2. 使用文件系統的開銷高出多少?我假設操作系統正在做更多的工作。我怎樣才能減輕這一些?例如,網頁編輯器自動保存,緩存保存數據的最佳方式是什麼,以最小化寫入?
  3. 其中一個比另一個好嗎?如果一切按計劃進行,這將是一項服務,包含數千個正在訪問和編輯的文檔。

回答

0
  1. 如果文件進入數據庫,混帳不能直接看到的文件。 git會看到數據庫的後備存儲文件,但沒有辦法將那裏的變化與文件的變化關聯起來。

  2. 使用數據庫的開銷高於使用文件系統,正如Carlos回答的那樣。數據庫針對事務進行了優化,他們將在內存中執行這些事務,但他們必須打開文件。除非您編寫應用程序在子文檔級別執行數據庫事務(例如:僅更改修改後的行),否則數據庫將不會改進性能。大多數現代文件系統都會進行緩存,而且您可以使用RAM的方式進行「寫入」,而不必進入備份存儲區。您需要管理應用程序中「自動保存」的粒度(每更改一次?每30秒鐘?5分鐘?),但實際上,以與數據庫相同的粒度進行操作會導致相同數量的流量支持商店。

  3. 我想你打算問「文件系統規模以及數據庫」嗎? :)如果你有一些方法來組織每個用戶的文件,並且你發現特定用戶的安全問題只能訪問/修改他們應該能夠訪問的文件(這是可行的),文件系統應該可行。

0

文件系統將總是比數據庫更快,因爲畢竟,DB的存儲數據在文件系統!

Git在github上證明是非常高效的,所以我說你堅持使用git,並且解決它。

畢竟,萊納斯應該知道的東西...;)

相關問題