двоичные данные в базе данных, blob против сжатых base64 - PullRequest
14 голосов
/ 21 ноября 2011

В базе данных есть тип столбца с именем blob, и он используется для хранения двоичных данных.

Но чаще всего я вижу решения, которые сжимают двоичные данные, затем преобразуют двоичные данные в base64 и сохраняют строку base64 в виде varchar или текста в базе данных.

Пример кода Python:

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

Таким образом, существует два способа хранения двоичных данных в базе данных:

  1. как блоб
  2. как сжатый base64

Мои вопросы: Какой способ лучше и почему?

1 Ответ

16 голосов
/ 23 ноября 2011

Кажется, я должен ответить на свой вопрос.Большую часть времени хранить сжатые base64 в базе данных не очень хорошая идея.Это сложнее, чем хранить блоб.И в большинстве случаев бинарный файл меньше строки base64.

Я нахожу только один случай, когда сжатый base64 полезен: вы не можете изменить схему таблицы, и есть только текстовые столбцы, вы должны сохранитьдвоичные данные в эту таблицу.Единственный возможный способ - преобразовать двоичный файл в строку base64.

...