2011-03-09 80 views
4

我想知道什麼是最好的方式來存儲.pdf將是。可以將它們作爲blob存儲在SQL中嗎?還是將它們存儲在數據磁盤上並將路徑存儲在表中會更好?在SQL或路徑中存儲.pdf?

謝謝

+0

什麼大小的PDF文件?你使用的是什麼RDBMS?例如,SQL Server 2008具有'Filestream',它將它們存儲在數據庫文件之外,但是以一種集成的方式[(但仍然是關於是使用此還是blob的建議取決於文件大小)](http://research.microsoft。 com/research/pubs/view.aspx?msr_tr_id = MSR-TR-2006-45) – 2011-03-09 19:31:40

+2

此問題已被多次詢問。搜索「在數據庫vs文件系統中存儲文件」 – 2011-03-09 19:32:16

+0

請參閱我的答案是這樣的:http://stackoverflow.com/questions/2467774/working-with-images-in-wcf - 微軟研究院有一個很棒的白皮書[去Blob或不去Blob](http://research.microsoft。 com/apps/pubs/default.aspx?id = 64525)這個問題的答案很詳細 – 2011-03-09 19:45:48

回答

4

這裏沒有一個正確的答案,但一個考慮因素是數據量是否會成爲問題。如果它不是太大,我更喜歡將它們保留在數據庫中,這是出於同樣的原因,我希望擁有一個具有備份,數據一致性和可恢復性的數據庫。如果您使用文件系統,甚至是文件流,在備份數據庫時不備份PDF,並且如果您還原到另一臺服務器或回滾到以前的時間點,則可能會導致您的PDF和數據處於不一致的狀態。當然,它會表現得更好,你應該牢記這一點,但如果性能不是問題,那麼確實很高興能夠將數據庫恢復到另一臺服務器,即使在開發或測試中也知道你擁有所有數據,並非所有的數據除了你的pdf。

更新:馬丁是正確的,文件流數據備份與您的常規備份,您可以使用WITH MOVE選項時恢復如果需要恢復到不同的位置的數據。因此,爲了澄清一下,如果您將普通舊指針用於磁盤上某處的文件,則在備份數據庫時不會備份您的PDF,但如果使用文件流,則會出現這種情況。您仍然需要小心,因爲數據庫不再能夠保證記錄的完整性,例如用戶可以將文件從文件流指向的文件系統中刪除,或者防病毒可以如果文件配置不正確,則隔離該文件。有一點規劃文件流看起來像很多情況下的一個很好的選擇。

+0

[「您可以將所有備份和恢復模型與FILESTREAM數據一起使用,並將FILESTREAM數據與數據庫中的結構化數據一起備份」(http://technet.microsoft.com/zh-cn/library/bb933993)。 ASPX) – 2011-03-09 22:03:32

0

如果你打算你的數據庫會很大,那麼最好存儲。由於性能問題,數據磁盤上(和僅數據庫路徑)上的pdf文件。但是,如果你的數據庫不會很大 - 在DB中保存.pdf文件是可以的。

+0

好的,我懷疑這個數據庫,即使pdf存儲將超過30GB。我想我會把它們作爲斑點存儲起來。謝謝! – korrowan 2011-03-09 19:41:04

0

如果您只在DB中存儲路徑,請確保您考慮歸檔。 PDF文件會永久保存在磁盤上嗎?如果空間不足會發生什麼?在這些情況下數據庫將如何更新?

不是反對存儲在磁盤上的論據,只是需要記住一些事情。

0

如果將它們存儲在數據庫中,您的性能將下降,並且您將無法使用第三方工具查看數據。

0

如果文件大小小於1Mb和/或文件很少編輯,則應該將文件存儲在SQL Server中,因爲性能。如果文件將被大量編輯和/或大於1Mb,則應將文件存儲到文件系統中。

有關更多信息,請參見該問題:Save documents as BLOB in SQL or on file system