Что такое тип данных bytea и когда я его буду использовать?

В Postgres существует тип данных bytea

Документы Postgres для него: http://www.postgresql.org/docs/9.0/static/datatype-binary.html a >

Я не могу понять, когда я когда-либо буду использовать это, и я не могу понять цель этого типа данных.

Я несколько раз сталкивался с этим термином bytea и начинал удивляться самому себе: "Кажется, они ожидают, что я пойму это... Возможно, мне нужно выяснить, что это такое".

Если кто-то может дать простое определение для него и какое-то данное обстоятельство, когда я, возможно, буду использовать его, это будет очень полезно.

Спасибо.

Ответ 1

Я думаю, что документация достаточно ясно о различиях между байтой и текстом:

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

http://www.postgresql.org/docs/9.0/static/datatype-binary.html

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

(Есть некоторые технические различия между термином "байт" и термином "октет" - потому что исторически некоторые платформы и вычислительные устройства использовали "байты" с четностью и/или стоп-битами, в то время как термин "октеты" всегда означает ровно 8 -bit; термин, который был введен для уточнения спецификаций и документации для сетевых протоколов).

Ответ 2

VARBINARY, который эквивалентен BYTEA в Postgres, может использоваться для хранения OAuth токенов доступа.

create table oauth_access_token (
  token_id VARCHAR(255),
  token BYTEA,
  .......
)