UUID v7 là gì?
Một UUID v7 gồm 48 bit thời gian Unix theo mili giây, sau đó là các bit phiên bản và biến thể, rồi 74 bit còn lại để đảm bảo duy nhất. Vì dấu thời gian nằm ở đầu, việc so sánh hai UUID theo thứ tự từ điển cũng chính là so sánh thời điểm tạo.
Điều này quan trọng với chỉ mục B-tree. Khóa ngẫu nhiên như v4 khiến các lần chèn rải khắp cây, gây phân mảnh trang và tốn bộ nhớ đệm. v7 ghi tuần tự nên chỉ mục gọn và ghi nhanh hơn.
Cách sử dụng
- Chọn số lượng UUID cần tạo.
- Bật chữ hoa hoặc ngoặc nhọn nếu hệ thống yêu cầu.
- Bấm Tạo; danh sách sẽ tăng dần theo thời gian tạo.
Dùng để làm gì
- Khóa chính trong cơ sở dữ liệu có chỉ mục.
- Định danh sự kiện cần truy vấn theo khoảng thời gian.
- Khóa sắp xếp trong hàng đợi và luồng sự kiện.
- Bản ghi cần phân vùng theo thời gian.
UUID v7 đứng ở đâu
| Lựa chọn | Khi nào dùng |
|---|---|
v7 | Mili giây Unix: đơn giản và sắp xếp được |
v6 | Độ phân giải 100 nano giây và có trường nút, dành cho hệ thống tương thích v1 |
v4 | Rải ngẫu nhiên khắp chỉ mục: tránh dùng làm khóa chính khi ghi nhiều |
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
UUID v7 có tiết lộ thời điểm tạo không?
Có. 48 bit đầu chính là thời điểm tạo tính bằng mili giây, nên bất kỳ ai đọc giá trị đều suy ra được thời gian đó. Nếu đây là vấn đề riêng tư, hãy dùng v4.
v7 có trùng lặp không?
Không, miễn là phần ngẫu nhiên đủ tốt. Nếu cùng một mili giây được dùng cho nhiều giá trị, 74 bit ngẫu nhiên vẫn tách chúng ra; xác suất trùng trong một mili giây là rất nhỏ.
Tôi nên chuyển từ v4 sang v7 chứ?
Nếu bạn ghi nhiều và giá trị là khóa chính có chỉ mục, có. Nếu giá trị chỉ là định danh tương quan hoặc không được sắp xếp, v4 vẫn hoàn toàn ổn và không tiết lộ thời gian tạo.