UUID là gì?
UUID (Định danh duy nhất toàn cầu) là một định dạng định danh tiêu chuẩn được thiết kế để duy nhất trên toàn cầu về không gian và thời gian. UUID là giá trị 128-bit thường được biểu diễn dưới dạng 32 chữ số thập lục phân, hiển thị thành năm nhóm cách nhau bằng dấu gạch ngang: 123e4567-e89b-12d3-a456-426614174000
.
UUID được định nghĩa bởi tiêu chuẩn RFC 9562 (thay thế RFC 4122 trước đó) và được sử dụng trên các nền tảng máy tính để xác định thông tin mà không cần đăng ký hoặc phối hợp tập trung.
Định dạng UUID
Tất cả UUID có định dạng chung gồm 36 ký tự (32 chữ số thập lục phân cộng 4 dấu gạch ngang) được sắp xếp theo mẫu:
xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
Trong đó:
x
là bất kỳ chữ số thập lục phân nào (0-9, a-f)M
chỉ phiên bản UUID (1-7)N
chỉ biến thể UUID (thường là 8, 9, A hoặc B cho UUID hiện đại)
So sánh các phiên bản UUID
Version | Name | Phương pháp tạo | Time-ordered | Trường hợp sử dụng |
---|---|---|---|---|
UUID v1 | Timestamp | Dấu thời gian hiện tại + ID nút (MAC) | Có (một phần) | Ghi nhật ký, hệ thống phân tán |
UUID v3 | Dựa trên tên (MD5) | Hàm băm MD5 của namespace + tên | No | ID nhất quán cho cùng một đầu vào |
UUID v4 | Random | Số ngẫu nhiên hoặc giả ngẫu nhiên | No | Mục đích chung, phổ biến nhất |
UUID v5 | Dựa trên tên (SHA-1) | Hàm băm SHA-1 của namespace + tên | No | ID nhất quán với hàm băm mạnh hơn |
UUID v6 | Dấu thời gian được sắp xếp lại | Dấu thời gian (được sắp xếp để phân loại) | Yes | Khóa cơ sở dữ liệu, bản ghi có thể sắp xếp theo thời gian |
UUID v7 | Dấu thời gian Unix Epoch | Dấu thời gian Unix + dữ liệu ngẫu nhiên | Yes | Các định danh có thể sắp xếp hiện đại |
UUID rỗng | UUID bằng không | Tất cả bằng số không | N/A | Giá trị đặc biệt, dấu hiệu chưa khởi tạo |
Ưu điểm của UUID
- Không yêu cầu phối hợp: Tạo ID mà không cần phối hợp trung tâm
- Tính duy nhất toàn cầu: Xác suất trùng cực kỳ thấp
- Độ dài cố định: Biểu diễn chuỗi 36 ký tự nhất quán
- Cross-Platform: Hỗ trợ trong hầu hết các ngôn ngữ lập trình
- Versatile: Các phiên bản khác nhau cho các trường hợp sử dụng khác nhau
Các lựa chọn thay thế UUID không chuẩn
Loại ID | Description | Advantages | Disadvantages |
---|---|---|---|
GUID | Triển khai UUID của Microsoft | Tương đương chức năng với UUID | Một số khác biệt triển khai trong các hệ thống cũ |
ULID | Định danh duy nhất toàn cầu có thể sắp xếp theo thứ tự từ điển | Có thể sắp xếp theo thứ tự từ điển, dấu thời gian trước, không phân biệt chữ hoa chữ thường | Mới hơn, ít được áp dụng rộng rãi |
ID Snowflake | Hệ thống ID phân tán của Twitter | Có thể sắp xếp theo thời gian, gọn nhẹ (64-bit) | Yêu cầu phối hợp trung tâm |
CUID/CUID2 | ID chống trùng lặp | Ngắn, phù hợp tạo phía client | Không phải tiêu chuẩn chính thức |
Nano ID | Trình tạo ID chuỗi duy nhất nhỏ, bảo mật, thân thiện URL | Nhỏ hơn UUID, bảng chữ cái có thể cấu hình | Không chuẩn hóa |
UUID ngắn | Mã hóa ngắn hơn của UUID chuẩn | Biểu diễn gọn hơn | Yêu cầu chuyển đổi đến/từ UUID chuẩn |
UUID rỗng | UUID với tất cả bit đặt về 0 | Ý nghĩa ngữ nghĩa đặc biệt | Không duy nhất (dùng làm giá trị đặc biệt) |
UUID Minecraft | UUID có hoặc không có dấu gạch ngang | Tương thích với UUID chuẩn | Chỉ khác biệt về định dạng |
Ứng dụng thực tế
- Khóa chính cơ sở dữ liệu: Đặc biệt trong cơ sở dữ liệu phân tán hoặc sao chép
- Hệ thống phân tán: Xác định thực thể trên nhiều hệ thống
- Ứng dụng web: Định danh phiên, theo dõi người dùng ẩn danh
- Quản lý nội dung: Định danh tài liệu và phương tiện
- APIs: Định danh yêu cầu và giao dịch để truy vết và gỡ lỗi
- Internet vạn vật: Xác định thiết bị mà không cần đăng ký tập trung
- Đồng bộ dữ liệu: Xác định bản ghi trên nhiều kho dữ liệu
- Cấp phép phần mềm: Khóa sản phẩm hoặc giấy phép duy nhất