簡體   English   中英

使用.Net和SQL Server 2005保存/加載圖片的最佳方法?

[英]Best way to save/load pictures with .Net & SQL Server 2005?

在銷售產品的網頁中處理產品圖片的典型方法是什么? 假設我有一個包含書籍或計算機組件等的數據庫,所有這些都有自己的示例圖片...我應該將它們作為二進制數據保存到數據庫中,還是以某種方式在代碼隱藏中處理它們,將它們保存到一個目錄中保存到數據庫產品表中的圖片文件的相應鏈接?

我正在嘗試以銷售公司為例,雖然我能想出辦法,但我想知道編程業務中使用的典型規范是什么?

更新:存儲在另一個系統或備用數據庫上不是一種選擇,而有關未來參考的可能替代方案的信息將受到贊賞。 我只能在一台計算機上使用一個ASP.Net項目獲得Visual Studio 2008和SQL Server 2005/2008。 因此,必須將文件保存到Web頁面項目中的目錄中,或者保存到其使用的一個DB中。

將文件保存在文件系統上但在DB中
將文件保存到數據庫使其成為所有應用程序數據的單個備份點,並為您的應用程序創建較小的安全性表面,因為您不需要用於存儲文件的寫入權限文件夾。

SQL Server 2008 FILESTREAM存儲到救援

使用SQL Server 2008,Microsoft引入了一種名為FILESTREAM的新數據存儲機制,該機制將文件夾中的數據存儲為常規文件。 但您可以通過表格訪問它們(並存儲其元數據)。 您可以將文件存儲為varbinary(max),並將它們存儲在配置的文件系統中。 這些文件也將被數據庫備份程序選中。 通過這種方式,您可以在單一解決方案中獲得兩全其美

在這里閱讀它。

后festum筆記
我必須指出,問題的作者確實提到過,當有任何好處時,他們也可以使用SQL Server 2008。 這是這個答案與2008版本相關的唯一原因,因為這確實是他們問題的最佳解決方案。

請參閱: 將文件存儲在數據庫中而不是文件系統中?

如果你決定在這里存儲數據庫,我有SQL Server 2005的C#代碼: 保存和恢復文件/圖像到SQL Server數據庫

這篇由已故Jim Gray 撰寫的 MS Research論文: 對BLOB或不對BLOB:數據庫或文件系統中的大對象存儲有以下建議:

正如通常所預期的那樣,小於256K的對象最好存儲在數據庫中,而大於1M的對象最好存儲在文件系統中。 在256K和1M之間,讀取:寫入比率和對象覆蓋或替換率是重要因素。

不要通過二進制數據加載DBMS! 讓SQL Server完成其特定的工作。 當文件存儲在文件系統甚至其他計算機上時,它會更好。

我首選的解決方案是始終將它們保存到文件系統上的目錄中,並將URL /位置保存在數據庫中。 我發現這是最容易維護的,並且很容易更改數據庫,數據存儲而不會影響文件。

此方法不依賴於數據庫。

我最近有一種情況,遺留系統將圖像和文件存儲為二進制文件,這導致時間和精力檢索這些文件以升級數據庫軟件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM