Подтвердить что ты не робот

Какой тип данных SQL для хранения файла с кодировкой Base64?

nvarchar (max), varchar (max), или я должен действительно декодировать строку и поместить ее в изображение или blob или что-то еще?

Более длинная версия: (со всеми сочными деталями)

У меня есть веб-сервис .Net SOAP, который сохраняет записи в базе данных SQL 2008. Услуга будет расширена, чтобы принять изображение, которое (к лучшему или худшему) также необходимо временно войти в БД.

Чтобы все было просто, служба принимает изображение в виде кодированной строки Base 64, и ему придется вернуть его в качестве кодированной в base64 строки позже (другой метод в той же службе).

Я изначально собирался использовать nvarchar (max), и я уверен, что это сработает. Но потом я подумал, что кодировка base64 означает, что вместо этого можно использовать varchar (max) и использовать меньше места для хранения. Это правильно? Или я должен укусить пулю и декодировать текст в двоичном формате, сохранить его как blob, а затем снова закодировать его при выходе?

Наконец, загрузка и производительность загрузки вряд ли вызовут проблемы, это проект для домашних животных и будет низкой нагрузкой.

Изменить: В ответ на вопрос @howiecamp я написал, как я был URL-кодированием изображения здесь: http://www.flowerchild.org.uk/archive/2010/06/13/base-64-encoding-an-image-to-pass-across-a-web.html

4b9b3361

Ответ 1

Ну, Base64 - это кодировка ASCII, на самом деле - так определенно нет необходимости в NVARCHAR - и, поскольку это текст, я бы предложил VARCHAR(MAX)

Это чистый текст, до 2 ГБ (должно быть достаточно), и это строковый тип, поэтому вы можете использовать на нем все строковые функции. NVARCHAR действительно использует в два раза больше хранилища - всегда 2 байта на символ - и в этом случае совершенно ненужно.