2013-08-18 93 views
1

在數據庫中存儲大文件(大約100 GB)是一個好主意嗎?
目前我們考慮使用NBT格式或使用mysql/postgresql數據庫將數據保存在文件夾中。在數據庫中存儲非常大的文件

+1

幾乎同樣的問題:http://stackoverflow.com/q/3748/983992 –

+1

*** ***什麼數據庫?這高度依賴於您正在使用的具體數據庫系統。但總的來說,大小不小於1 MB的文件(單個文件)應該放在數據庫之外。但是,再次說明:這是一個非常普遍的陳述 - 它**取決於您的實際數據庫和您想要存儲的文件種類。** –

回答

1

將大文件存儲在數據庫中將是一個非常糟糕的主意,即使您可以使用可以

只需將文件名存儲在數據庫中 - 將文件保留在磁盤上。

的主要原因是對GBE數據庫不攪動大文件是數據庫備份時間變得可笑,並沒有什麼可以得到的,而你失去了存儲在分佈式存儲的內容的能力。

如果數據庫損壞並且需要從備份重建,恢復時間也會變得很大。


你可以做任何事情,但這並不意味着你應該。

+0

因此,您不會在磁盤上備份文件?從技術上講,備份空間的數量並沒有真正的差異。當您執行增量備份時,兩種方案都需要幾乎相同的空間。當然,當涉及到100GB的數據文件大小時,我也會推薦你的解決方案。 – alzaimar

+2

@alzaimar可能大小相同,但所花費的時間會更長。有些數據庫必須處於只讀模式才能進行備份(如mysql),因此您離線時間更長。即使是適度的數據庫大小也需要很長時間才能備份 - 我正在講話時間。請注意,我所談論的是*數據庫*實用程序備份,而不是磁盤存儲備份。 – Bohemian

+0

我只是在談論大小,技術上沒有什麼區別。 – alzaimar

1

數據庫旨在對大量小塊數據進行排序,過濾和執行計算。如果您只想要一個文件系統(例如,對彙總按上載日期分組的文件總數有限的支持),例如只需使用文件系統

0

使用文件系統。

使用數據庫來存儲文件的位置和名稱

你也可以(在Unix系統立足)使用像剪切,粘貼公用事業和加入(example
在文件級別上的文件。

2

我個人的經驗是數據庫不適合大數據塊(除非它們支持文件系統感知存儲,例如SQL Server FILESTREAM和Oracle BFILE)。

大多數云爲Blob提供單獨的存儲是有原因的。大數據文件的生命週期比典型的日常數據......不同的生命週期,不同的方式來服務內容,不同的緩存策略,不同的備份計劃等不同等

在看看:

我就跟着他們走,要麼拿出無線「File system aware」存儲系統(例如,將數據庫中的文件系統路徑存儲)或使用單獨的存儲機制。

每次我不得不處理數據庫中存儲blob的應用程序(圖像,pdf等)時,我已經花費了更多的時間處理表空間,備份和性能問題,比我設置備份/靜態文件服務/緩存文件系統感知解決方案的策略。

相關問題