2011-11-21 160 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

不知道你可以回答并接受你自己的问题,但做得好! –