Bu 2 kısaltmanın atıldığını görüyorum ve bir GUID ile UUID arasında herhangi bir fark olup olmadığını merak ediyordum?
Bu 2 kısaltmanın atıldığını görüyorum ve bir GUID ile UUID arasında herhangi bir fark olup olmadığını merak ediyordum?
Yanıtlar:
Basit bir cevabı olduğunu: hiçbir fark , ikisi de aynı şeydir. Onları benzersiz bir değer olarak kullanılan 16 bayt (128 bit) değer olarak kabul edin. Microsoft-konuşmada bunlara GUID'ler denir, ancak Microsoft-konuşma kullanmadığında onlara UUID'ler deyin.
UUID belirtimi ve Microsoft'un yazarları bile eş anlamlı olduklarını iddia ediyorlar:
IETF RFC 4122 girişinden " Evrensel Benzersiz Kimlik Tanımlayıcı (UUID) URN Ad Alanı ": "GUU'lar (Küresel Benzersiz Kimlik Tanımlayıcı) olarak da bilinen UUID'ler (Evrensel Benzersiz Kimlik Tanımlayıcı) için Tekdüzen Kaynak Adı ad alanı).
Gönderen ITU-T Tavsiyesi X.667, ISO / IEC 9834-8: 2004 Uluslararası Standart : "Uuıdlerin da, bir genel benzersiz (Guıd) olarak bilinir, ancak bu terim, bu Tavsiyede kullanılmaz."
Microsoft bile UUID RFC tarafından bir GUID belirtildiğini iddia ediyor : "Microsoft Windows programlamada ve Windows işletim sistemlerinde, [RFC4122] 'de belirtildiği gibi, genel olarak benzersiz bir tanımlayıcı (GUID) ... Evrensel olarak benzersiz tanımlayıcı (UUID) ) bazen Windows protokol belirtimlerinde GUID ile eşanlamlı olarak kullanılır. "
Ancak doğru cevap , "UUID" derken sorunun ne anlama geldiğine bağlıdır ...
İlk bölüm, "UUID" derken askerin ne düşündüğüne bağlıdır.
Microsoft'un iddiası, tüm UUID'lerin GUID'ler olduğunu ima eder. Ancak tüm GUID'ler gerçek UUID'ler midir? Yani, tüm UUID'lerin kümesi tüm GUID'lerin kümesinin sadece uygun bir altkümesi mi yoksa tam olarak aynı küme mi?
RFC 4122'nin ayrıntılarına bakıldığında, dört farklı UUID "varyantı" vardır. Bunun nedeni, bu tip 16 bayt tanımlayıcıların, bu spesifikasyonların bir UUID spesifikasyonunun oluşturulmasında bir araya getirilmesinden önce kullanımda olmasıdır. RFC 4122'nin 4.1.1 bölümünden UUID'nin dört varyantı şunlardır:
RFC 4122'ye göre, tüm UUID varyantları "gerçek UUID'ler" dir, ardından tüm GUID'ler gerçek UUID'lerdir. Gerçek soruya "GUID ve UUID arasında herhangi bir fark var mı?" Sorusunun cevabı kesinlikle RFC 4122 UUID'ler için hayır : fark yok (ancak aşağıdaki ikinci bölüme tabi).
Ancak tüm GUID'ler varyant 2 UUID'ler değildir (örn. Microsoft COM, varyant 3 UUID'ler olan GUID'lere sahiptir). Soru "GUID ve varyant 2 UUID'ler arasında herhangi bir fark var mı?" İse, cevap evet olacaktır - farklı olabilirler. Soruyu soran biri muhtemelen varyantları bilmiyor ve sadece "UUID" kelimesini söylediklerinde varyant 2 UUID'leri düşünüyor olabilirler (örneğin, MAC adresi + zamanını ve rasgele sayı algoritma formlarını UUID'den belirsiz bir şekilde biliyorlar. her ikisi de versiyonları arasında varyant 2). Bu durumda, cevap evet farklıdır .
Yani cevap, kısmen, "UUID" kelimesini söylediklerinde kişinin ne düşündüğüne bağlıdır. Varyant 2 UUID (farkında oldukları tek varyant olduğu için) veya tüm UUID'ler mi?
İkinci bölüm, UUID'nin tanımı olarak hangi spesifikasyonun kullanıldığına bağlıdır.
Bunun kafa karıştırıcı olduğunu düşünüyorsanız, RFC 4122 ile hizalanması ve teknik olarak tamamen uyumlu olması gereken ITU-T X.667 ISO / IEC 9834-8: 2004'ü okuyun . 11.2 Fıkrasında ek bir cümle vardır, "Bu Tavsiye Kararına uyan tüm UUID'ler | Uluslararası Standart 7 bit 7 oktet 1 ve 6 6 oktet 0'a ayarlanmıştır. Bu, yalnızca değişken 2 UUID'nin bu standarda uygun olduğu anlamına gelir (bu iki bit değeri değişken 2 anlamına gelir ). Bu doğruysa, tüm GUID'ler ITU-T / ISO / IEC UUID'lere uymaz, çünkü uyumlu ITU-T / ISO / IEC UUID'ler yalnızca değişken 2 değerler olabilir.
Bu nedenle, gerçek cevap aynı zamanda sorunun hangi UUID spesifikasyonunun sorulduğuna da bağlıdır. Varyant 2 UUID'lerden değil, tüm UUID'lerden açıkça bahsettiğimizi varsayarsak: GUID ve IETF'in UUID'leri arasında bir fark yoktur , ancak GUID ile uyumlu ITU-T / ISO / IEC UUID'leri arasında evet farkı vardır !
İkili kodlamalar farklı olabilir
İkili olarak kodlandığında (insan tarafından okunabilen metin formatının aksine), GUID aşağıdaki gibi dört farklı alana sahip bir yapıda saklanabilir . Bu biçim, yalnızca ilk 3 alanın bayt sırasında UUID standardından farklıdır .
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, Microsoft'un UUID standardını uygulamasıdır.
Wikipedia Başına :
GUID terimi genellikle Microsoft'un Evrensel Olarak Benzersiz Tanımlayıcı (UUID) standardını uygulamasını ifade eder .
Aynı Wikipedia makalesinden güncellenmiş bir alıntı:
RFC 4122, UUID'lerin "GUID'ler olarak da bilinir" olduğunu belirtir. Tüm bu "GUID", aslında Microsoft tarafından kullanılan bir UUID varyant söz ederken, sadece UUID için alternatif bir isim haline geldiğini göstermektedir ...
The term "GUID" typically refers to various implementations of the universally unique identifier (UUID) standard.
Pek sayılmaz. GUID daha Microsoft merkezli olmakla birlikte, UUID daha yaygın olarak kullanılmaktadır (örneğin, urn: uuid: URN şemasında ve CORBA'da olduğu gibi).
GUID, bir UUID ile aynı şekilde mutlaka 128 bit değerinin olmadığı alanlarda uzun süredir kullanılmaktadır. Örneğin, RSS belirtimi GUID'leri , kullandığınız değerin sendikaya gönderilen öğeye geri döndürülmesi için bir "isPermalink" özniteliğiyle benzersiz olduğu sürece seçtiğiniz herhangi bir dize olarak tanımlar .
Microsoft'un GUID
metinsel temsili, iki kıvırcık parantez ile çevrili bir UUID şeklinde olabilir {}
.
SQL Server'da GUID ile PostgreSQL'de UUID arasındaki farklardan biri harf durumu; SQL Server çıktılar üst, PostgreSQL çıktılar daha düşük.
Onaltılı değerler "a" ile "f" arasında küçük harf olarak yazılır ve girdide büyük / küçük harfe duyarlı değildir. - rfc4122 # bölüm-3