2013-07-20 62 views
2

我有一個待辦事項列表應用程序(使用Django 1.5和MySQL),其中任務可以與另一個用戶共享。因此,用戶可以擁有個人任務和共享任務。共享任務將是一個分數(我猜大約佔用戶總任務的30%)登錄到文件與登錄到數據庫

對於共享任務,我想保留一個日誌,以便連接到任務的用戶可以知道誰已經完成了哪些更改。 爲此,我正在考慮爲每個共享任務保留一個日誌文件。每當有用戶進行更改時,它都會附加到該文件中。

我的問題是 - 我應該通過文件存儲,還是應該將其保存在數據庫中?

請注意以下幾點 -

  • 日誌不會被頻繁訪問(一個文件的日誌可以被讀5-10次最多在一小時內)
  • 一個小時,有可能是全部> 500寫入(但是對於不同的文件,因此對於一個文件,在一個小時內可能有10-50個最大寫入,因此併發不是主要問題)。
  • 無論如何,我不需要搜索或修改數據閱讀它。

在此先感謝!

回答

0

文件系統也可以被認爲是一個數據庫,但是在這裏您主要是比較文件系統與關係數據庫MySQL。我會在關係數據庫中這樣做,原因如下:

  • 第一個原因是爲了簡化。您已經在使用數據庫。我也不會介紹使用文件的複雜性。只需添加一個新表並完成它。
  • 數據庫權限和文件系統權限通常不同,您需要擔心這兩者。
  • 由於您不需要移動文件數據庫,因此可以輕鬆遷移您的應用程序。
  • 您還沒有預見到任何過濾功能,但您的客戶很可能會在未來請求它。
  • 在數據庫中,您可以更好地控制性能。你不能真正索引文件系統。大多數文件系統將文件列表存儲在每次必須掃描的文件中。
  • 數據庫中的分片比文件系統中的分片更加透明。在不改變訪問方式的情況下,很難將文件分發到多個存儲位置。

如果您已經設置了關係數據庫,我認爲在文件系統上存儲沒有任何好處。

2

,使連接到任務的用戶可以知道誰做了哪些改變

這改變了數據在從問題的系統級記錄到應用程序可見的數據。因此,它可能屬於應用程序的數據庫。這也會使日誌數據過濾變得容易很多。例如,如果要顯示Item X的所有歷史事件,則可以輕鬆查詢與Items表具有外鍵關係的數據庫表。從文件中讀取數據並手動進行過濾將不必要地困難。注意:「審計數據」或者「歷史數據」可能是一個更好的術語,以便將它與系統日誌記錄(如錯誤日誌)區分開來。

+0

感謝您解釋我需要和日誌之間的區別。關於過濾,我不需要過濾日誌或讀取它的部分。我只需要直接在客戶端顯示它。所以,這不是一個問題。 –