Я бачу, що ці два абревіатури кинуті навколо, і мені було цікаво, чи є якісь відмінності між GUID та UUID?
Я бачу, що ці два абревіатури кинуті навколо, і мені було цікаво, чи є якісь відмінності між GUID та UUID?
Відповіді:
Проста відповідь є: ніякої різниці , вони не одне і те ж. Трактуйте їх як 16-байтне (128 біт) значення, яке використовується як унікальне значення. У Microsoft-говорять їх називають GUID, але називають їх UUID, коли вони не використовують Microsoft-говорять.
Навіть автори специфікації UUID та Microsoft стверджують, що вони є синонімами:
З вступу до IETF RFC 4122 " Універсально унікальний ідентифікатор (UUID) URN Іменний простір ": "Уніфікований простір назв імен ресурсів для UUID (Універсально унікальний ідентифікатор), також відомий як GUID (глобально унікальний ідентифікатор)."
З Рекомендації МСЕ-Т X.667, міжнародного стандарту ISO / IEC 9834-8: 2004 : "UUID також відомі як глобально унікальні ідентифікатори (GUID), але цей термін не використовується в цій Рекомендації."
Microsoft навіть стверджує, що GUID визначається UUID RFC: "У програмуванні Microsoft Windows та в операційних системах Windows глобально унікальний ідентифікатор (GUID), визначений в [RFC4122], є ... Термін універсальний унікальний ідентифікатор (UUID) ) іноді використовується в специфікаціях протоколу Windows як синонім GUID. "
Але правильна відповідь залежить від того, що означає питання, коли на ньому написано "UUID" ...
Перша частина залежить від того, що думає запитувач, коли вони говорять "UUID".
Претензія Microsoft передбачає, що всі UUID - це GUID. Але чи всі GUIDs справжні UUID? Тобто, чи є набір усіх UUID лише належним підмножиною набору всіх GUID, чи це точно такий самий набір?
Переглядаючи деталі RFC 4122, є чотири різні "варіанти" UUID. Це в основному тому, що такі 16-байтні ідентифікатори використовувались до об'єднання цих специфікацій при створенні специфікації UUID. З розділу 4.1.1 RFC 4122 чотири варіанти UUID:
Відповідно до RFC 4122, всі варіанти UUID є "справжніми UUID", тоді всі GUID - справжні UUID. На буквальне запитання "чи є якась різниця між GUID та UUID", відповідь для RFC 4122 UUID, безумовно, не відповідає: різниці немає (але залежно від другої частини нижче).
Але не всі ідентифікатори GUID є варіант 2 UUID , (наприклад , Microsoft COM має GUIDs які варіант 3 UUID , ). Якщо питання було "чи є різниця між GUID та варіантом 2 UUID", то відповідь буде так - вони можуть бути різними. Хтось, хто задає питання, напевно, не знає про варіанти, і він може думати лише про варіант 2 UUID, коли вони говорять слово "UUID" (наприклад, вони смутно знають MAC-адресу + час та форми алгоритмів випадкових чисел UUID, які обидва варіанти з варіанту 2). У такому випадку відповідь - це різна .
Тож відповідь частково залежить від того, про що думає людина, яка запитує, коли вони говорять слово "UUID". Чи мають на увазі вони варіант 2 UUID (адже це єдиний варіант, про який вони знають) або всі UUID?
Друга частина залежить від того, яка специфікація використовується як визначення UUID.
Якщо ви вважаєте, що це заплутано, прочитайте ITU-T X.667 ISO / IEC 9834-8: 2004, який повинен бути вирівняний і повністю технічно сумісний з RFC 4122 . У пункті 11.2 додаткового речення написано: "Усі UUID, що відповідають цій Рекомендації | Міжнародний стандарт, повинні мати біти варіантів з бітом 7 октету 7, встановленим на 1, і бітом 6 октету 7, встановленим на 0". Що означає, що лише варіант 2 UUID відповідає цьому стандарту (ці два бітові значення означають варіант 2). Якщо це правда, то не всі GUID відповідають стандартам ITU-T / ISO / IEC UUID, оскільки відповідні МСЕ-T / ISO / IEC UUID можуть мати значення лише 2 варіанту .
Тому реальна відповідь також залежить від того, про яку специфікацію UUID задається питання. Якщо припустити, що ми чітко говоримо про всі UUID, а не лише про UUID другого варіанту: немає різниці між GUID та IETF, але різниця між GUID та відповідними UUID МСЕ-T / ISO / IEC!
Двійкові кодування можуть відрізнятися
Якщо кодується у двійковій формі (на відміну від читаного для людини текстового формату), GUID може зберігатися у структурі з чотирма різними полями наступним чином. Цей формат відрізняється від стандарту UUID лише порядком байтів перших 3 полів.
Bits Bytes Name Endianness Endianness
(GUID) RFC 4122
32 4 Data1 Native Big
16 2 Data2 Native Big
16 2 Data3 Native Big
64 8 Data4 Big Big
GUID - це реалізація стандартом UUID Microsoft.
За Вікіпедією :
Термін GUID зазвичай відноситься до впровадження Microsoft Універсально унікального ідентифікатора (UUID) стандарту.
Оновлена цитата з тієї ж статті Вікіпедії:
RFC 4122 сам заявляє, що UUID "також відомі як GUID". Все це говорить про те, що "GUID", спочатку посилаючись на варіант UUID, використовуваний Microsoft, став просто альтернативною назвою UUID ...
The term "GUID" typically refers to various implementations of the universally unique identifier (UUID) standard.
Не зовсім. GUID більш орієнтований на Microsoft, тоді як UUID використовується ширше (наприклад, як у урні: uuid: схема URN та в CORBA).
GUID має давнє використання в областях, де це не обов'язково 128-бітове значення так само, як UUID. Наприклад, специфікація RSS визначає GUID як будь-який рядок на ваш вибір, якщо він унікальний, з атрибутом "isPermalink", щоб вказати, що використовуване вами значення є лише постійною посиланням на предмет, який синдикується.
GUID
Текстове представлення Microsoft може бути у формі UUID, оточене двома фігурними дужками {}
.
Однією з різниць між GUID у SQL Server та UUID у PostgreSQL є регістр букв; SQL Server виводить верхній, а PostgreSQL - нижній.
Шістнадцяткові значення "a" - "f" виводяться як малі регістри та не вразливі до регістру. - rfc4122 # розділ-3