Хранение файлов в базе данных - PullRequest
2 голосов
/ 28 августа 2010

Мне нужно сохранить файл в любом формате (XLS, PDF, DOC, JPG ....) в базе данных, используя Java. по моему опыту, я бы сделал это, сохранив двоичные данные файла в поле типа BLOB, кто-то сказал мне, что альтернативой является кодирование двоичных данных как текста с использованием BASE64 и сохранение строки в поле типа TEXT. Какой из них является лучшим вариантом для выполнения этой задачи?.

Спасибо.

Пол Манджаррес

Ответы [ 4 ]

8 голосов
/ 28 августа 2010

BLOB будет лучше, просто потому что вы можете использовать тип данных byte [], и вам не нужно кодировать / декодировать из BASE64.Нет причин использовать BASE64 для простого хранения.

1 голос
/ 28 августа 2010

Аргумент за использование BLOB заключается в том, что он требует меньше циклов ЦП, меньше дискового и сетевого ввода-вывода, меньше кода и уменьшает вероятность ошибок:

  1. Как говорит Уилл Хартунг, используя BLOBпозволяет пропустить этапы кодирования / декодирования, что уменьшит циклы ЦП.Более того, существует множество библиотек Java для кодирования и декодирования Base64, и в реализации есть нюансы (например, переносы строк PEM).Это означает, что для безопасности необходимо использовать одну и ту же библиотеку для кодирования и декодирования.Это создает ненужную связь между приложением, которое создает запись, и приложением, которое читает запись.
  2. Кодированный вывод будет больше, чем необработанные байты, что означает, что он займет больше места на диске (и сетьввод / вывод).
0 голосов
/ 28 апреля 2018
  • FILE to BLOB = DB не будет запрашивать содержимое и обрабатывать его как ... ну ... бессмысленный двоичный BLOB независимо от его содержимого.DB знает, что это поле может иметь размер 1 КБ или 1 ГБ и соответственно распределяет ресурсы.
  • FILE to TEXT = DB может запросить эту вещь.Строки могут быть найдены заменены изменены в файле.Но на этот раз СУБД потратит больше ресурсов, чтобы заставить эту вещь работать.Внутри поля может быть текст длиной 100 символов, в котором может храниться текст длиной в 1 миллион символов.Файлы могут иметь любой вид кодировки текста, и недопустимые символы могут быть потеряны из-за настроек кодирования таблицы / БД. Не нужно использовать это, если содержимое файлов не будет использоваться в запросах SQL.
  • BASE64 = Конвертирует любыесодержание к прекрасному супер действительному тексту.Обойти, чтобы обойти каждую проблему совместимости.Храните в любом месте, распечатайте, передайте по телеграфу, напишите на бумаге, превратите ваше любимое селфи в закрытый ключ.Вывод будет бессмысленным и больше, но это будет обычный текст.
0 голосов
/ 28 августа 2010

Используйте BLOB, чтобы поместить их в базу данных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...