Есть ли веская причина для вставки hex как bytea в postgresql?

Я нашел это из документации:

... binary strings specifically allow storing octets of value zero and ... octets outside the range 32 to 126 ...

Для меня это звучит так, будто нет причин использовать BYTEA для хранения значения HEX? Тем не менее, многие люди, кажется, используют BYTEA для чего-то. нравиться это:

013d7d16d7ad4fefb61bd95b765c8ceb
007687fc64b746569616414b78c81ef1

Есть ли для этого веская причина?

Я думаю, что другой вопрос совершенно ясен в том, почему это может быть правильным поступком: при хранении как BYTEA 013d сохраняется в виде двух байтов, при сохранении в виде строки то же значение будет сохранено как четыре символа 0, 1, 2 и 3. То есть, более компактный, а также, если это на самом деле необработанные байты, не нужно будет применять никаких бесполезных преобразований, поэтому в конечном итоге это, вероятно, более эффективно. Или я упустил вашу точку зрения?

fvu 13.09.2018 20:04

Нет, нет, спасибо. Просто у меня это заняло немного больше времени.

user1602492 13.09.2018 20:31
1
2
692
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

На то есть три веские причины:

  1. Это потребует меньше места для хранения, поскольку две шестнадцатеричные цифры хранятся как один байт.

  2. Он автоматически проверит значение на правильность:

    SELECT decode('0102ABCDNONSENSE', 'hex');
    ERROR:  invalid hexadecimal digit: "N"
    
  3. вы можете хранить и извлекать двоичные данные без преобразования их из и в текст, если ваш API поддерживает это.

Другие вопросы по теме