Есть ли существенный недостаток в сохранении base64 в базе данных SQL Server по сравнению с хранением тех же данных, что и в шестнадцатеричном формате? - PullRequest
0 голосов
/ 25 октября 2019

Большинство данных, имеющих характер хеш-значений * (см. Примечание ниже), хранятся в реляционной базе данных, такой как SQL Server, либо в BINARY типе данных, либо в CHAR тип данных.

При хранении в CHAR, как практика , а не как реализация базы данных, они в основном хранятся как шестнадцатеричные числа. То есть они хранятся пользователем базы данных или автором кода, который использует базу данных в шестнадцатеричных , а не всама база данных .

Итак, мой вопрос: почему? Зачем хранить его только в шестнадцатеричном виде? Я хотел бы сохранить что-то подобное в поле CHAR как base64.

Это также заняло бы намного меньше места.

Хранится как обычный текст ASCII

Например, для хранения текста «Hello» в простом ASCII внутри столбца типа CHAR, предполагая, что строка является единственной строкой, которую я хотел сохранить, и поэтому я взял столбец фиксированной длины, потребуется CHAR(6) (считая один CHAR для нулевого символа).

Хранится в шестнадцатеричном формате

Сохранение этого же в шестнадцатеричном формате займет CHAR(11), т.е. 10 шестнадцатеричных символов плюс 1 для нулевого символа.

Хранится в нотации base64

Сохранение этого же в base64 займет всего CHAR(8), то есть 5 символов +1 нулевой символ, занимающий в общей сложности 6 байтов в кодировке ASCII, что равняется 48 битам, которые при преобразовании в base64 потребуют только (48/6 = 8) 8 символов для выражения, включая нулевой символ.

Итак, есть ли причина, по которой гексадесимал обозначения предпочтительнее? Что еще более важно, есть ли какой-то недостаток, который я мог бы упускать из виду при хранении данных в нотации base64?


* Данные аналогичного характера:

Данныеприрода имеет значения, дайджесты сообщений, контрольные суммы или соли (для хеш-функций или функций получения ключей на основе пароля или для ключей для алгоритмов шифрования) и т. д.

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