2016-02-06 23 views
3

我正在開發一個Postgres支持的系統,其中會存儲許多二進制文件。如何決定是否將二進制數據存儲在Postgres或文件中?

我至少有2種選擇:

  1. 存儲他們的Postgres。
  2. 將它們存儲爲文件。

我需要考慮什麼標準才能做出最佳決策?

+0

如果需要將它們存儲爲事務性數據,則應將它們存儲在數據庫中。或者,如果應該以與其餘數據相同的權限管理對它們的訪問權限。如果外部工具(圖像調整器,Web服務器等)必須訪問它們大於1GB的文件,則可以將它們存儲在文件系統中。 –

+0

這些文件是歌曲。歌曲上傳一次,可以多次收聽(但不下載)。 –

+0

讓我們假設一旦上傳,歌曲將永遠留在數據庫中。 –

回答

6

我會考慮以下幾點:

  • 性能。在文件系統中存儲二進制文件通常會更好,無論是讀取還是寫入。
  • 安全。訪問文件系統中的文件由操作系統控制,但是如果將文件存儲在數據庫中,則應用PostgreSQL訪問規則。
  • 備份一致性。如果單獨存儲數據(文件系統和數據庫)非常難以獲得一致的備份。文件系統備份和數據庫備份很可能不同步。
  • 交易屬性。文件系統不是事務性的,但顯然PostgreSQL是。
+0

將文件存儲在文件系統中並不一定更快。見例如這裏是:http://research.microsoft.com/apps/pubs/default.aspx?id=64525(它適用於SQL Server,但如果其他DBMS也有類似的情況,我也不會感到驚訝) –

+0

可擴展性?如果你有很多文件需要存儲,最好是什麼? –

+0

@a_horse_with_no_name。我真的懷疑SQL Server比二進制文件的文件系統更好。 –

相關問題