2016-01-23 90 views
1

我正在研究一個系統,該系統將存儲用戶的圖片以及未來的一些軟文檔。是否最好在文件系統或非RDBMS上存儲圖像和文件

  • 用戶數:4000個+
  • 成績單和每用戶其他文件:10 MB
  • 在第一年的總系統要求:40 GB
  • 附加每年遞增10%
  • 歸檔歸檔每年:10%
  • 本地保存在Ubuntu Linux系統上,沒有任何花哨的RAIDS。
  • 使用MySQL社區版進行應用。
  • 同時使用者:10至20
  • 文件僅用於歷史目的,不會經常訪問。

我一直認爲存儲在一個RDBMS由於多層訪問等是麻煩的。但是,由於我們在非RDBMS數據庫中使用鍵/值對,是否更好地將文檔存儲在文件系統或數據庫?感謝任何指針。

類似的問題被問到7年前(storing uploaded photos and documents - filesystem vs database blob)!我希望所有的NoSQL數據庫都能在技術上發生一些變化。因此,我再次問這個問題。

請糾正我,如果我應該做別的事情,而不是提出一個新的問題。

+0

有多少用戶?多少張圖片和文件?圖片和文檔的典型大小是多少?他們將如何被訪問?總數據量是多少?同時連接的數量?在什麼電腦,操作系統,硬件上? (單個VPS,臺式機工作站或數據中心)..請編輯您的問題以改進它**(否則它保持太寬) –

+0

將圖像存儲在需要編寫代碼的地方的好處是什麼只是看看他們或平衡只是得到他們的維度?把它們放在一個大的非晶體塊中,你需要備份的全部有什麼好處?對不起,我只是不購買使用數據庫來存儲圖像文件 - 我會每次都要使用文件系統。 –

+0

對於一個千字節或更小的* small *映像,文件系統磁盤空間和inode開銷可能不可接受。 –

回答

0

它確實取決於(尤其是DBMS考慮的文件系統,它是遠程還是本地,數據的總大小 - 字節數與千兆字節 - 用戶/文檔的數量等不同)。

如果數據在1Gb/s以太網上是遠程的,那麼網絡就是瓶頸。所以使用DBMS不會增加額外的額外開銷。見答案this interesting webpage部分,或STFW對於一個典型的PC各種操作粗略定時...

如果數據是本地的,不管事情更(但很少計算機有SATA磁盤1PB的)。 Linux上的大多數文件系統使用一些最小的塊大小(例如1K字節,4K字節,...)。

一個可能的方法可能是有一些閾值(通常是4或8千字節,甚至可能是64千字節,這是幾頁; YMMV)。比它小的數據可能直接是數據庫中的一個字段,數據比它可能在文件中大。該數據庫有時可能包含文件路徑。閱讀關於BLOB的數據庫。

不僅考慮RDBMS像PostGreSQL,也是NoSQL的解決方案點菜MongoDB和鍵值存儲點菜REDIS

對於本地數據的方法,考慮的不僅是純文本文件,也sqlite & GDBM等。如果您使用文件系統,請考慮避免使用非常寬的目錄,以免使用widedir/000001.jpg .... widedir/999999.jpg將其組織爲dir/subdir000/001.jpg ...dir/subdir999/999.jpg並且每個目錄的條目數不超過1000。

如果您在本地使用MySQL數據庫並且不考慮大量數據(例如少於1 TB),那麼您可以直接在數據庫中存儲任何比原始數據更小的原始數據。 64K字節,並將更大的數據存儲在單個文件中(其路徑將進入數據庫);但是你仍然應該避免使用非常寬的目錄。

當然,不要忘了定義和應用(人爲決定的)備份程序。

+0

巴西爾,我更新了我的問題。但是,既然您已經提供了相關信息,我將其標記爲已回答。如果您想在查看我的更新後添加更多內容,請隨時評論/編輯。 – SriSri

相關問題