GUID là gì?
Một GUID (Globally Unique Identifier) dài 128 bit, đúng bằng UUID. Microsoft dùng tên này từ COM và .NET cho tới SQL Server, nên trong tài liệu của họ bạn sẽ gặp GUID nhiều hơn UUID.
Trình tạo này mặc định bật sẵn chữ hoa và ngoặc nhọn — dạng mà Guid.ToString() và NEWID() trả về trong .NET. Tắt hai tùy chọn đó là bạn có ngay dạng chuẩn của UUID để dùng ở nơi khác.
Cách sử dụng
- Giữ nguyên chữ hoa và ngoặc nhọn nếu bạn dán vào .NET hoặc SQL Server.
- Tắt hai tùy chọn nếu cần dạng UUID chuẩn viết thường.
- Bấm Tạo rồi sao chép hoặc tải xuống.
Dùng để làm gì
- Cột
uniqueidentifiertrong SQL Server. - Tham số và trường
Guidtrong mã .NET. - Khóa cấu hình trong ứng dụng Windows.
- ID trong lược đồ Active Directory.
GUID đứng ở đâu
| Lựa chọn | Khi nào dùng |
|---|---|
GUID | Cách gọi và cách viết của Microsoft |
v4 | Cùng dữ liệu, in chữ thường không ngoặc |
v7 | Định danh sắp theo thời gian, cũng dùng được trong .NET 9 trở lên |
Các phiên bản UUID trong một bảng
| Phiên bản | Sắp xếp được | Dựa trên | Dùng cho |
|---|---|---|---|
| v1 | Không | Dấu thời gian + địa chỉ MAC | Hệ thống cũ vẫn còn phụ thuộc v1 |
| v3 | Không | Băm MD5 của một tên | Định danh tất định khi buộc phải dùng MD5 |
| v4 | Không | 122 bit ngẫu nhiên | Hầu hết mọi định danh thông dụng |
| v5 | Không | Băm SHA-1 của một tên | Khi cùng một tên phải luôn ra cùng một định danh |
| v6 | Có | Dấu thời gian đã đảo thứ tự | Định danh sắp xếp được mà vẫn giữ độ ngẫu nhiên |
| v7 | Có | Thời gian Unix theo mili giây | Khóa chính trong cơ sở dữ liệu và định danh sự kiện |
| v8 | Không | Bố cục bit của riêng bạn | Định dạng tùy biến hoặc thử nghiệm |
Cả bảy phiên bản đều dài 128 bit và được viết theo cùng dạng 8-4-4-4-12. Điều khác nhau chỉ là ý nghĩa của các bit.
Câu hỏi thường gặp
GUID và UUID có khác nhau không?
Về dữ liệu thì không: cả hai đều là 128 bit. Chỉ khác cách viết và tên gọi — GUID thường in chữ hoa và bọc trong ngoặc nhọn.
Vì sao GUID thường viết hoa?
Vì Guid.ToString() trong .NET trả về chữ hoa, còn lệnh NEWID() của SQL Server cũng vậy. Đó là quy ước của hệ sinh thái Microsoft, không phải yêu cầu kỹ thuật.
SQL Server sinh GUID mạnh đến đâu?
NEWID() trả về GUID ngẫu nhiên, tương đương v4. Vì khóa ngẫu nhiên gây phân mảnh chỉ mục khi ghi nhiều, SQL Server còn có NEWSEQUENTIALID() để sinh giá trị tăng dần theo thứ tự.