2011-11-21 106 views
9

數據庫中有一個名爲blob的列類型,它用於存儲二進制數據。數據庫中的二進制數據,blob與壓縮的base64

但我通常看到的解決方案是壓縮二進制數據,然後將二進制數據轉換爲base64,並將base64字符串存儲爲數據庫中的varchar或text。

的Python代碼示例:

import zlib, base64 
base64_str = base64.b64encode(zlib.compress(binary_data, 9)) 

所以有二進制數據存儲到數據庫中的兩個方法:

  1. 爲BLOB
  2. 作爲壓縮的base64

我的問題是: 哪種方式更好,爲什麼?

+4

我不明白爲什麼有人會使用方法2.它引入了不必要的複雜性並將數據混淆了兩次。不過,我不會發表這個答案,因爲我沒有任何確鑿的證據表明沒有壓縮base64比BLOB更有利的情況。 – Polynomial

回答

12

看來我必須回答我自己的問題。大多數情況下,將壓縮的base64存儲到數據庫中並不是一個好主意。它比存儲blob複雜。大多數情況下,二進制比base64字符串小。

我只發現壓縮base64有用的一種情況:不能改變表模式,只有文本列,必須將二進制數據存儲到該表中。唯一可能的方法是將二進制轉換爲base64字符串。

+3

不知道你可以回答並接受你自己的問題,但做得好! –