UUID v6 là gì?
Phiên bản UUID 6 là một định danh 128-bit dựa trên thời gian (chuỗi 36 ký tự) được đề xuất như một cải tiến so với UUID v1. Nó bao gồm:
- Thời gian được sắp xếp lại: Dấu thời gian 60-bit từ quan trọng nhất đến ít quan trọng nhất
- Chuỗi đồng hồ: Bộ đếm 14-bit cho điều chỉnh đồng hồ
- ID nút: Giá trị 48-bit (thường là địa chỉ MAC)
Ví dụ định dạng: 1eb527d6-e927-6511-9a03-0242ac130003
Cách UUID v6 hoạt động
- Tính toán dấu thời gian hiện tại (khoảng 100ns kể từ 15-10-1582)
- Sắp xếp lại các bit dấu thời gian để sắp xếp tốt hơn (bit quan trọng nhất trước)
- Lấy/tăng chuỗi đồng hồ 14-bit (để đảm bảo duy nhất nếu đồng hồ chạy ngược lại)
- Lấy ID nút 48-bit (thường từ địa chỉ MAC)
- Đặt bit phiên bản (0110) và bit biến thể (10)
- Lắp ráp thành 32 chữ số hex với dấu gạch ngang: định dạng 8-4-4-4-12
Ưu điểm & Cân nhắc
Advantages | Considerations |
---|---|
|
|
Cấu trúc UUID v6
Bits | Content |
---|---|
0-47 | 48 bit cao của dấu thời gian |
48-51 | Phiên bản (0110 cho v6) |
52-59 | 8 bit thấp của dấu thời gian |
60-63 | 4 bit cao của dấu thời gian |
64-65 | Biến thể (10 cho RFC4122) |
66-79 | Chuỗi đồng hồ (14 bit) |
80-127 | ID nút (48 bit) |
UUID v6 so với các phiên bản khác
Version | Dựa trên | Trường hợp sử dụng | Privacy |
---|---|---|---|
UUID v1 | Thời gian + MAC | ID theo thứ tự thời gian | ⚠️ Tiết lộ MAC |
UUID v3 | Namespace + MD5 | ID xác định trước | ✅ Riêng tư |
UUID v4 | Random | ID ngẫu nhiên an toàn | ✅ Riêng tư |
UUID v5 | Namespace + SHA-1 | ID xác định trước | ✅ Riêng tư |
UUID v6 | Thời gian (được sắp xếp lại) | ID có thể sắp xếp | ⚠️ Tiết lộ MAC |
UUID v7 | Thời gian + ngẫu nhiên | ID có thể sắp xếp | ✅ Riêng tư |
Các trường hợp sử dụng phổ biến
- Khóa cơ sở dữ liệu có thể sắp xếp theo thời gian: Để sắp xếp theo thứ tự thời gian
- Cơ sở dữ liệu phân tán: Với chỉ mục theo thứ tự thời gian
- Bản ghi nhật ký: Với thứ tự thời gian tự nhiên
- Theo dõi kiểm toán: Với dấu thời gian nhúng
- Hàng đợi tin nhắn: Để xử lý dựa trên thời gian
- Bản ghi giao dịch: Với thứ tự thời gian
Câu hỏi thường gặp
Sự khác biệt giữa UUID v1 và v6 là gì?
UUID v6 sắp xếp lại các bit dấu thời gian từ UUID v1 để làm cho nó có thể sắp xếp tự nhiên theo thứ tự từ điển. Nội dung giống hệt v1, chỉ được sắp xếp lại.
UUID v6 có phải là tiêu chuẩn chính thức không?
UUID v6 hiện là bản thảo đặc tả trong tài liệu RFC 4122bis được đề xuất. Nó chưa phải là tiêu chuẩn RFC chính thức nhưng đã được triển khai trong nhiều thư viện UUID.
Tôi có thể trích xuất thời gian tạo từ UUID v6 không?
Có. Thành phần dấu thời gian có thể được trích xuất từ các bit 0-59 và chuyển đổi lại thành giá trị datetime.
UUID v6 có thể sắp xếp theo thời gian tạo không?
Có. Khác với v1, UUID v6 đặt các bit dấu thời gian theo thứ tự từ quan trọng nhất đến ít quan trọng nhất, cho phép so sánh từ điển (chuỗi) trực tiếp để phù hợp với thứ tự thời gian.
UUID v6 có tiết lộ địa chỉ MAC của tôi không?
Theo mặc định, có. Giống như UUID v1, hầu hết các triển khai sử dụng địa chỉ MAC cho ID nút. Các triển khai tập trung vào quyền riêng tư có thể sử dụng ID nút ngẫu nhiên thay thế.