F.60. uuid-ossp
ÐодÑÐ»Ñ uuid-ossp пÑедоÑÑавлÑÐµÑ ÑÑнкÑии Ð´Ð»Ñ Ð³ÐµÐ½ÐµÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑнивеÑÑалÑнÑÑ
ÑникалÑнÑÑ
иденÑиÑикаÑоÑов (UUID) по Ð¾Ð´Ð½Ð¾Ð¼Ñ Ð¸Ð· неÑколÑкиÑ
ÑÑандаÑÑнÑÑ
алгоÑиÑмов. РнÑм Ñакже еÑÑÑ ÑÑнкÑии, вÑдаÑÑие ÑпеÑиалÑнÑе UUID-конÑÑанÑÑ.
F.60.1. ФÑнкÑии uuid-ossp
РТаблиÑе F.35 Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½Ñ ÑÑнкÑии, пÑедназнаÑеннÑе Ð´Ð»Ñ Ð³ÐµÐ½ÐµÑаÑии UUID. ЧеÑÑÑе алгоÑиÑма Ð´Ð»Ñ Ð³ÐµÐ½ÐµÑаÑии UUID, обознаÑаемÑе номеÑами веÑÑий 1, 3, 4 и 5, опиÑÐ°Ð½Ñ Ð² ÑÑандаÑÑÐ°Ñ ITU-T Rec. X.667, ISO/IEC 9834-8:2005 и RFC 4122. (ÐлгоÑиÑма веÑÑии 2 неÑ.) ÐаждÑй из ÑÑÐ¸Ñ Ð°Ð»Ð³Ð¾ÑиÑмов пÑедназнаÑен Ð´Ð»Ñ ÑазлиÑнÑÑ ÑÑÐµÑ Ð¿ÑименениÑ.
ТаблиÑа F.35. ФÑнкÑии Ð´Ð»Ñ Ð³ÐµÐ½ÐµÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ UUID
| ФÑнкÑÐ¸Ñ | ÐпиÑание |
|---|---|
uuid_generate_v1() | ÐÑа ÑÑнкÑÐ¸Ñ Ð³ÐµÐ½ÐµÑиÑÑÐµÑ UUID веÑÑии 1. Такой UUID вклÑÑÐ°ÐµÑ Ð² ÑÐµÐ±Ñ MAC-адÑÐµÑ ÐºÐ¾Ð¼Ð¿ÑÑÑеÑа и ÑекÑÑее вÑемÑ. ÐамеÑÑÑе, ÑÑо UUID Ñакого Ñипа ÑаÑкÑÑваÑÑ Â«Ð»Ð¸ÑноÑÑÑ» компÑÑÑеÑа, ÑоздавÑего иденÑиÑикаÑоÑ, и вÑÐµÐ¼Ñ ÑÑой опеÑаÑии, ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½ÐµÐ¿ÑиемлемÑм Ð´Ð»Ñ Ð¾Ð¿ÑеделÑннÑÑ Ð¿Ñиложений, где важна конÑиденÑиалÑноÑÑÑ. |
uuid_generate_v1mc() | ÐÑа ÑÑнкÑÐ¸Ñ Ð³ÐµÐ½ÐµÑиÑÑÐµÑ UUID веÑÑии 1, но вмеÑÑо ÑеалÑного MAC-адÑеÑа компÑÑÑеÑа иÑполÑзÑеÑÑÑ ÑлÑÑайнÑй гÑÑпповой MAC-адÑеÑ. |
uuid_generate_v3(namespace uuid, name text) | ÐÑа ÑÑнкÑÐ¸Ñ Ð³ÐµÐ½ÐµÑиÑÑÐµÑ UUID веÑÑии 3 Ð´Ð»Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ пÑоÑÑÑанÑÑва имÑн UUID и Ñказанного имени. ÐÑоÑÑÑанÑÑво имÑн должно задаваÑÑÑÑ Ð¾Ð´Ð½Ð¾Ð¹ из ÑпеÑиалÑнÑÑ
конÑÑанÑ, коÑоÑÑе вÑдаÑÑÑÑ ÑÑнкÑиÑми ÐапÑимеÑ: SELECT uuid_generate_v3(uuid_ns_url(), 'http://www.postgresql.org'); Ðз паÑамеÑÑа name бÑÐ´ÐµÑ Ð¿Ð¾Ð»ÑÑен MD5-Ñ ÐµÑ, Ñак ÑÑо из ÑгенеÑиÑованного UUID нелÑÐ·Ñ Ð±ÑÐ´ÐµÑ Ð²Ð¾ÑÑÑановиÑÑ Ð¸Ð¼Ñ. РгенеÑиÑÑемÑÑ Ñаким алгоÑиÑмом UUID Ð½ÐµÑ ÑлеменÑа ÑлÑÑайноÑÑи или завиÑимоÑÑи Ð¾Ñ Ð¾ÐºÑÑжениÑ, Ñак ÑÑо они могÑÑ Ð±ÑÑÑ Ð²Ð¾ÑпÑоизведенÑ. |
uuid_generate_v4() | ÐÑа ÑÑнкÑÐ¸Ñ Ð³ÐµÐ½ÐµÑиÑÑÐµÑ UUID веÑÑии 4, коÑоÑÑй вÑеÑело опÑеделÑеÑÑÑ ÑлÑÑайнÑми ÑиÑлами. |
uuid_generate_v5(namespace uuid, name text) | ÐÑа ÑÑнкÑÐ¸Ñ Ð³ÐµÐ½ÐµÑиÑÑÐµÑ UUID веÑÑии 5, коÑоÑÑй Ð¿Ð¾Ñ Ð¾Ð¶ на веÑÑÐ¸Ñ 3, но Ñ ÐµÑ ÑаÑÑÑиÑÑваеÑÑÑ Ð¿Ð¾ алгоÑиÑÐ¼Ñ SHA-1. ÐеÑÑÐ¸Ñ 5 пÑедпоÑÑиÑелÑнее веÑÑии 3, Ñак как SHA-1 ÑÑиÑаеÑÑÑ Ð±Ð¾Ð»ÐµÐµ безопаÑнÑм, Ñем MD5. |
ТаблиÑа F.36. ФÑнкÑии, возвÑаÑаÑÑие UUID-конÑÑанÑÑ
uuid_nil() | «ÐÑлевой» UUID, коÑоÑÑй не ÑÑиÑаеÑÑÑ Ð´ÐµÐ¹ÑÑвиÑелÑнÑм UUID. |
uuid_ns_dns() | ÐонÑÑанÑа, обознаÑаÑÑÐ°Ñ Ð¿ÑоÑÑÑанÑÑво имÑн DNS Ð´Ð»Ñ UUID. |
uuid_ns_url() | ÐонÑÑанÑа, обознаÑаÑÑÐ°Ñ Ð¿ÑоÑÑÑанÑÑво имÑн URL Ð´Ð»Ñ UUID. |
uuid_ns_oid() | ÐонÑÑанÑа, обознаÑаÑÑÐ°Ñ Ð¿ÑоÑÑÑанÑÑво имÑн иденÑиÑикаÑоÑов обÑекÑов ISO (OID, ISO Object Identifier) Ð´Ð»Ñ UUID. (ÐдеÑÑ Ð¸Ð¼ÐµÑÑÑÑ Ð² Ð²Ð¸Ð´Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑÑ Ð¾Ð±ÑекÑов ASN.1, коÑоÑÑе никак не ÑвÑÐ·Ð°Ð½Ñ Ñ OID, пÑименÑемÑми в Postgres Pro.) |
uuid_ns_x500() | ÐонÑÑанÑа, обознаÑаÑÑÐ°Ñ Ð¿ÑоÑÑÑанÑÑво имÑн Ñ ÑникалÑнÑми именами X.500 Ð´Ð»Ñ UUID. |
F.60.2. СбоÑка uuid-ossp
РпÑоÑлом ÑÑÐ¾Ñ Ð¼Ð¾Ð´ÑÐ»Ñ Ð·Ð°Ð²Ð¸Ñел Ð¾Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñеки OSSP UUID, ÑÑо оÑÑазилоÑÑ Ð² его имени. ХоÑÑ Ð±Ð¸Ð±Ð»Ð¸Ð¾ÑÐµÐºÑ OSSP UUID вÑÑ ÐµÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ найÑи по адÑеÑÑ http://www.ossp.org/pkg/lib/uuid/, она плоÑ
о поддеÑживаеÑÑÑ Ð¸ ÐµÑ ÑÑановиÑÑÑ Ð²ÑÑ Ñложнее поÑÑиÑоваÑÑ Ð½Ð° новÑе плаÑÑоÑмÑ. ÐоÑÑÐ¾Ð¼Ñ Ð¼Ð¾Ð´ÑÐ»Ñ uuid-ossp ÑепеÑÑ Ð½Ð° некоÑоÑÑÑ
плаÑÑоÑмаÑ
можно ÑобиÑаÑÑ Ð±ÐµÐ· библиоÑеки OSSP. Ðо FreeBSD, NetBSD и некоÑоÑÑÑ
дÑÑгиÑ
ÐС на базе BSD подÑ
одÑÑие ÑÑнкÑии ÑоÑмиÑÐ¾Ð²Ð°Ð½Ð¸Ñ UUID вклÑÑÐµÐ½Ñ Ð² ÑиÑÑемнÑÑ Ð±Ð¸Ð±Ð»Ð¸Ð¾ÑÐµÐºÑ libc. Ð Linux, OS X и некоÑоÑÑÑ
дÑÑгиÑ
плаÑÑоÑмаÑ
подÑ
одÑÑие ÑÑнкÑии пÑедоÑÑавлÑÑÑÑÑ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñекой libuuid, коÑоÑÐ°Ñ Ð¸Ð·Ð½Ð°ÑалÑно пÑиÑла из пÑоекÑа e2fsprogs (Ñ
оÑÑ Ð² ÑовÑеменнÑÑ
диÑÑÑибÑÑиваÑ
Linux она ÑвлÑеÑÑÑ ÑаÑÑÑÑ Ð¿Ð°ÐºÐµÑа util-linux-ng). ÐÑзÑÐ²Ð°Ñ configure, пеÑедайÑе клÑÑ --with-uuid=bsd, ÑÑÐ¾Ð±Ñ Ð¸ÑполÑзоваÑÑ ÑÑнкÑии BSD, либо --with-uuid=e2fs, ÑÑÐ¾Ð±Ñ Ð¸ÑполÑзоваÑÑ libuuid из e2fsprogs, либо клÑÑ --with-uuid=ossp, ÑÑÐ¾Ð±Ñ Ð¸ÑполÑзоваÑÑ Ð±Ð¸Ð±Ð»Ð¸Ð¾ÑÐµÐºÑ OSSP UUID. РконкÑеÑной ÑиÑÑеме Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑÑÑановлено ÑÑÐ°Ð·Ñ Ð½ÐµÑколÑко библиоÑек, поÑÑÐ¾Ð¼Ñ configure не вÑбиÑÐ°ÐµÑ Ð±Ð¸Ð±Ð»Ð¸Ð¾ÑÐµÐºÑ Ð°Ð²ÑомаÑиÑеÑки.
ÐÑимеÑание
ÐÑли вам нÑÐ¶Ð½Ñ ÑолÑко ÑлÑÑайнÑе UUID (веÑÑии 4), в каÑеÑÑве алÑÑеÑнаÑÐ¸Ð²Ñ Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе иÑполÑзоваÑÑ ÑÑнкÑÐ¸Ñ gen_random_uuid() из модÑÐ»Ñ pgcrypto.
F.60.3. ÐвÑоÑ
ÐиÑÐµÑ ÐйзенÑÑаÑÑ <[email protected]>