Tôi thấy 2 từ viết tắt này bị ném xung quanh và tôi tự hỏi liệu có sự khác biệt nào giữa một GUID và UUID không?

Câu trả lời đơn giản là: không có sự khác biệt , chúng là cùng một thứ. Xử lý chúng như một giá trị 16 byte (128 bit) được sử dụng làm giá trị duy nhất. Trong Microsoft-speak, chúng được gọi là GUID, nhưng gọi chúng là UUID khi không sử dụng Microsoft-speak.

Ngay cả các tác giả của đặc tả UUID và Microsoft tuyên bố họ là từ đồng nghĩa:

Từ phần giới thiệu cho IETF RFC 4122 “ Một không gian nhận dạng duy nhất toàn cầu (UUID) URN Namespace “: “một không gian tên tài nguyên thống nhất cho UUID (IDentifier duy nhất toàn cầu), còn được gọi là GUID (IDentifier duy nhất toàn cầu). “

Từ Khuyến nghị ITU-T X.667, Tiêu chuẩn quốc tế ISO/IEC 9834-8: 2004 : “UUID còn được gọi là Định danh duy nhất toàn cầu (GUID), nhưng thuật ngữ này không được sử dụng trong Khuyến nghị này . “

Và Microsoft thậm chí khiếu nại a GUID được chỉ định bởi UUID RFC: “Trong lập trình Microsoft Windows và trong các hệ điều hành Windows, số nhận dạng duy nhất toàn cầu (GUID), như được chỉ định trong , là … Thuật ngữ định danh duy nhất toàn cầu (UUID) đôi khi được sử dụng trong thông số kỹ thuật của giao thức Windows như một từ đồng nghĩa với GUID. “

Nhưng câu trả lời đúng phụ thuộc vào ý nghĩa của câu hỏi khi nó nói “UUID” …

Phần đầu tiên phụ thuộc vào những gì người hỏi đang nghĩ khi họ nói “UUID”.

Yêu cầu của Microsoft ngụ ý rằng tất cả các UUID đều là GUID. Nhưng tất cả các GUID có phải là UUID thật không? Đó là, tập hợp tất cả các UUID chỉ là một tập hợp con đúng của tập hợp tất cả các GUID, hay nó là tập hợp chính xác?

Nhìn vào các chi tiết của RFC 4122, có bốn “biến thể” khác nhau của UUID. Điều này chủ yếu là do các định danh 16 byte như vậy đã được sử dụng trước khi các thông số kỹ thuật đó được kết hợp với nhau trong việc tạo ra một đặc tả UUID. Từ phần 4.1.1 của RFC 4122 , bốn biến thể của UUID là:

Bảo lưu, hệ thống tính toán mạng tương thích ngượcBiến thể được chỉ định trong RFC 4122 (trong đó có năm biến thể phụ, được gọi là “phiên bản”)Dành riêng, Microsoft Corporation tương thích ngượcDành cho định nghĩa trong tương lai.

Theo RFC 4122, tất cả các biến thể UUID là “UUID thực”, sau đó tất cả các GUID đều là UUID thực.

Bạn đang xem: Uuid là gì

Xem thêm: Debug Là Gì – Cách Làm Việc Với Debug Cho Developer

Xem thêm: Bê Tông Lót Tiếng Anh Là Gì, Bê Tông Và Bê Tông Cốt Thép

Đối với câu hỏi theo nghĩa đen “có sự khác biệt nào giữa GUID và UUID” thì câu trả lời chắc chắn là không đối với RFC 4122 UUID: không có sự khác biệt (nhưng phải tuân theo phần thứ hai bên dưới).

Nhưng không phải tất cả các GUID đều là biến thể 2 UUID (ví dụ: Microsoft COM có GUID là biến thể 3 UUID). Nếu câu hỏi là “có sự khác biệt nào giữa GUID và biến thể 2 UUID” không, thì câu trả lời sẽ là có – chúng có thể khác nhau. Ai đó đặt câu hỏi có thể không biết về biến thể và họ có thể chỉ nghĩ đến biến thể 2 UUID khi họ nói từ “UUID” ( ví dụ, họ mơ hồ biết về địa chỉ MAC + thời gian và các dạng thuật toán số ngẫu nhiên của UUID, cả hai phiên bản của biến thể 2). Trong trường hợp đó, câu trả lời là có khác .

Vì vậy, câu trả lời, một phần, phụ thuộc vào những gì người hỏi đang nghĩ khi họ nói Lời “UUID”. Họ có nghĩa là biến thể 2 UUID (vì đó là biến thể duy nhất họ biết) hoặc tất cả các UUID?

Phần thứ hai phụ thuộc vào đặc điểm kỹ thuật nào được sử dụng như định nghĩa của UUID.

Nếu bạn cho rằng điều đó gây nhầm lẫn, hãy đọc ITU-T X.667 ISO/IEC 9834-8: 2004 được cho là phù hợp và hoàn toàn tương thích về mặt kỹ thuật với RFC 4122 . Nó có thêm một câu trong Điều 11.2 có nội dung: “Tất cả các UUID tuân thủ Khuyến nghị này | Tiêu chuẩn quốc tế sẽ có các bit biến thể với bit 7 của octet 7 được đặt thành 1 và bit 6 của octet 7 được đặt thành 0”. Điều đó có nghĩa là chỉ có biến thể 2 UUID tuân thủ Tiêu chuẩn đó (hai giá trị bit đó có nghĩa là biến thể 2). Nếu đó là sự thật, thì không phải tất cả các GUID đều tuân thủ các UUID ITU-T/ISO/IEC, bởi vì các UUID ITU-T/ISO/IEC tuân thủ chỉ có thể là các giá trị biến thể 2.

Do đó, câu trả lời thực sự cũng phụ thuộc vào đặc điểm kỹ thuật của UUID mà câu hỏi đang hỏi về. Giả sử chúng ta đang nói rõ ràng về tất cả các UUID và không chỉ 2 UUID biến thể: có không có sự khác biệt giữa GUID và UUID của IETF, nhưng có sự khác biệt giữa GUID và tuân thủ UUID của ITU-T/ISO/IEC!

Mã hóa nhị phân có thể khác nhau

Khi được mã hóa dưới dạng nhị phân (trái ngược với định dạng văn bản có thể đọc được của con người), GUID có thể được lưu trữ trong cấu trúc có bốn trường khác nhau như sau. Định dạng này khác với tiêu chuẩn UUID chỉ theo thứ tự byte của 3 trường đầu tiên.

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

Chuyên mục: Hỏi Đáp