簡體   English   中英

Base64字符串和圖像

[英]Base64 string and Image

當我將圖像數據庫用於asp.net Web應用程序時,發現了兩種方法! 第一種方法是使用“ Image”數據類型,第二種方法是將圖像轉換為base64字符串並存儲在“ byte”數據類型中。

我想知道哪種方法更好,為什么?

Image類型已棄用,因此不是一種選擇。 SQL Server中沒有byte類型,有一個名為tinyint的類型等效於byte類型,但是我敢肯定這不是您要的。

因此,這是您的實際問題,已糾正了錯誤的術語:

當我將圖像數據庫用於asp.net Web應用程序時,發現了兩種方法! 第一種方法是使用VARBINARY(max)數據類型,第二種方法是將圖像轉換為base64字符串並存儲在VARCHAR(max)數據類型中。

Base64編碼增加了二進制數據的大小,將3個八位位組轉換為4個八位位組,因此增加了33%的開銷。 那就是您的存儲(數據庫或文件)消耗的房地產。

但是 ,Web應用程序將絕大多數將媒體文件作為base64編碼的響應來提供。 將文件編碼到存儲器中可以節省Web服務器上的CPU,因為它可以直接傳輸存儲內容,而無需經過base64編碼。 如果使用流語義正確完成 ,則base64編碼並不昂貴(非常便宜且對緩存非常友好)。

因此,選擇您的毒葯:保存二進制內容以減少磁盤空間使用量,或者減少33%的空間以提高響應寫入速度並減少Web層上的CPU。

有關從數據庫正確存儲和提供媒體文件的示例,請參閱從aSP.Net下載和上傳圖像。

至於關於數據庫或文件系統的存儲的永無休止的討論,我將您引向“指向BLOB”或“不指向BLOB:數據庫或文件系統中的大對象存儲?”。 及其結論:

研究表明,如果對象平均大於1兆字節,則NTFS明顯優於SQL Server。 如果對象小於256 KB,則數據庫具有明顯的優勢。 在此范圍內,這取決於工作負載的寫入強度。

這項研究並沒有考慮數據庫存儲不足的管理問題(一致的備份-還原,故障轉移),但是這類問題僅在產品v2中進行了討論。

暫無
暫無

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

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