web-dev-qa-db-ja.com

データ型byteaとは何ですか、またいつ使用しますか?

Postgresにはbyteaというデータ型があります

Postgresのドキュメントはここにあります: http://www.postgresql.org/docs/9.0/static/datatype-binary.html

これをいつ使用するのか理解できず、このデータ型の目的も本当に理解できません。

私はこの用語byteaに何度か出会って、「自分はこれを理解してくれると期待しているようです...たぶんそれが何なのかを知る必要がある」と思い始めました。

誰かがそれについて簡単な定義と、私がそれを使用する可能性のある特定の状況を与えることができれば、それは非常に役立ちます。

ありがとう。

15
Walker Farrow

ドキュメンテーションは、byteatextの違いについてかなり明確であると思います:

バイナリ文字列は、2つの方法で文字列と区別されます。まず、バイナリ文字列では、値0のオクテットと他の「印刷不可能な」オクテット(通常、32〜126の範囲外のオクテット)を保存できます。文字列は、ゼロオクテットを許可しません。また、データベースの選択された文字セットエンコーディングに従って無効な他のオクテット値およびオクテット値のシーケンスも禁止します。次に、バイナリ文字列の操作は実際のバイトを処理しますが、文字列の処理はロケール設定に依存します。要するに、バイナリ文字列は、プログラマが「生のバイト」と考えるデータの保存に適していますが、文字列はテキストの保存に適しています。

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

...コンテンツが「テキスト」であるかどうか(サーバー構成に適用したロケールと国際化設定、およびそれを実行しているOSに依存する)と「オクテット」の配列( 8ビットのバイナリ値のシーケンス---一般に「バイト」と呼ばれます)。

(「バイト」という用語と「オクテット」という用語には技術的な違いがあります-歴史的に、一部のプラットフォームおよびコンピューティングデバイスは、パリティやストップビットで「バイト」を使用していましたが、「オクテット」という用語は常に正確に8 -ビット;ネットワークプロトコルの仕様とドキュメントを明確にするために導入された用語。

17
Jim Dennis

VARBINARYは、PGのBYTEAと同等であり、OAuthアクセストークンを格納するために使用できます。

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