2015-12-28 48 views
6

W PostgreSQL jest typ danych o nazwie byteaCo to jest bajt datatype i kiedy powinienem go użyć?

Postgres'a docs są tutaj dla niego: http://www.postgresql.org/docs/9.0/static/datatype-binary.html

Nie mogę zrozumieć, kiedy bym nigdy tego użyć - nie mogę naprawdę zrozumieć cel tego typu danych.

Kilka razy spotkałem się z tym pojęciem bytea i zaczynałem się zastanawiać: "Wygląda na to, że oczekują, że to zrozumiem ... Może powinienem się dowiedzieć, co to jest".

Jeśli ktokolwiek może podać prostą definicję tego i pewną okoliczność, w której mógłbym go użyć, byłoby to bardzo pomocne.

Dzięki.

Odpowiedz

7

Myślę, że dokumentacja jest dość jasne, na różnice między bytea i tekstu:

binarne ciągi są odróżniane od ciągów znaków na dwa sposoby. Po pierwsze, łańcuchy binarne w szczególności umożliwiają przechowywanie oktetów o wartości zero i innych "nie drukowalnych" oktetów (zwykle oktety poza zakresem od 32 do 126). Łańcuchy znaków blokują zero oktetów, a także blokują wszelkie inne wartości oktetów i ciągi wartości oktetów, które są nieprawidłowe zgodnie z kodowaniem wybranego zestawu znaków bazy danych. Po drugie, operacje na ciągach binarnych przetwarzają rzeczywiste bajty, podczas gdy przetwarzanie ciągów znaków zależy od ustawień regionalnych. W skrócie, ciągi binarne są odpowiednie do przechowywania danych, które programista uważa za "surowe bajty", podczas gdy ciągi znaków są odpowiednie do przechowywania tekstu.

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

... że ma do czynienia z tym, czy zawartość jest „tekst” (w zależności od lokalnych ustawień i internationalizations już stosowanych do konfiguracji serwera i systemu operacyjnego, na którym jesteś uruchomieniu go) vs. tablice "oktetów" (sekwencje 8-bitowych wartości binarnych --- zwykle określane jako "bajty").

(Istnieją pewne techniczne rozróżnienia między terminem "bajt" a terminem "oktet" - ponieważ historycznie niektóre platformy i urządzenia obliczeniowe używały "bajtów" z parzystością i/lub stopami bitowymi, podczas gdy termin "oktety" zawsze oznacza dokładnie 8 bitów, termin wprowadzony w celu wyjaśnienia specyfikacji i dokumentacji dla protokołów sieciowych).