Trình tạo UUID phiên bản 6 (Dấu thời gian có thứ tự)

Tạo UUID được sắp xếp theo dấu thời gian tối ưu cho việc lập chỉ mục cơ sở dữ liệu

Thử các ví dụ này:

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

  1. Tính toán dấu thời gian hiện tại (khoảng 100ns kể từ 15-10-1582)
  2. 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)
  3. 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)
  4. Lấy ID nút 48-bit (thường từ địa chỉ MAC)
  5. Đặt bit phiên bản (0110) và bit biến thể (10)
  6. 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

AdvantagesConsiderations
  • Có thể sắp xếp theo thứ tự từ điển
  • Thời gian tạo được nhúng
  • Tạo hiệu suất cao
  • Tạo phân tán
  • Lo ngại về quyền riêng tư địa chỉ MAC
  • Vấn đề đồng bộ đồng hồ
  • Dự đoán hơn so với UUID ngẫu nhiên
  • Trạng thái bản thảo đặc tả

Cấu trúc UUID v6

BitsContent
0-4748 bit cao của dấu thời gian
48-51Phiên bản (0110 cho v6)
52-598 bit thấp của dấu thời gian
60-634 bit cao của dấu thời gian
64-65Biến thể (10 cho RFC4122)
66-79Chuỗi đồng hồ (14 bit)
80-127ID nút (48 bit)

UUID v6 so với các phiên bản khác

VersionDựa trênTrường hợp sử dụngPrivacy
UUID v1Thời gian + MACID theo thứ tự thời gian⚠️ Tiết lộ MAC
UUID v3Namespace + MD5ID xác định trước✅ Riêng tư
UUID v4RandomID ngẫu nhiên an toàn✅ Riêng tư
UUID v5Namespace + SHA-1ID xác định trước✅ Riêng tư
UUID v6Thời gian (được sắp xếp lại)ID có thể sắp xếp⚠️ Tiết lộ MAC
UUID v7Thời gian + ngẫu nhiênID 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ế.

Resources