【问题标题】:binary data in database, blob vs compressed base64数据库中的二进制数据,blob 与压缩的 base64
【发布时间】:2012-01-02 20:41:42
【问题描述】:

数据库中有一个名为blob的列类型,用于存储二进制数据。

但更多时候,我看到的解决方案是压缩二进制数据,然后将二进制数据转换为 base64,并将 base64 字符串作为 varchar 或文本存储在数据库中。

Python 代码示例:

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

所以有两种方法可以将二进制数据存入数据库:

  1. 作为 blob
  2. 作为压缩的 base64

我的问题是: 哪种方式更好,为什么?

【问题讨论】:

  • 我不明白为什么有人会使用方法 2。它引入了不必要的复杂性并将数据混淆了两次。但是,我不会发布这个答案,因为我没有任何确凿的证据表明没有任何情况下压缩的 base64 比 BLOB 更有利。

标签: database binary base64 blob


【解决方案1】:

看来我必须回答我自己的问题。大多数时候,将压缩的 base64 存储到数据库中并不是一个好主意。它比存储 blob 更复杂。而且大多数时候二进制小于base64字符串。

我只发现压缩 base64 有用的一种情况:您无法更改表架构,并且只有文本列,因此您必须将二进制数据存储到该表中。唯一可能的方法是将二进制转换为 base64 字符串。

【讨论】:

  • 不知道你可以回答并接受你自己的问题,但做得很好!
  • @AshfaqHussain,这是 SO(堆栈溢出)中非常受欢迎的模式。一个人可以回答他自己的问题并接受它,只要它是一个有效的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-11
  • 2012-04-12
  • 2014-12-29
  • 1970-01-01
  • 1970-01-01
  • 2014-04-15
  • 1970-01-01
相关资源
最近更新 更多