UUID v4 là gì?
Một UUID v4 là định danh trong đó 122 trên 128 bit được tạo ngẫu nhiên. Độ ngẫu nhiên đó khiến việc trùng lặp gần như bất khả thi ở mọi quy mô thực tế, vì vậy v4 là lựa chọn mặc định cho cơ sở dữ liệu, API và hệ thống phân tán.
Bit phiên bản (4) và các bit biến thể là cố định; phần còn lại đến từ nguồn ngẫu nhiên mật mã. Hai giá trị v4 được tạo độc lập với nhau hầu như không bao giờ giống nhau.
Cách sử dụng
- Nhập số lượng UUID muốn tạo vào ô số lượng (từ 1 đến 1000).
- Đổi định dạng nếu cần: chữ hoa, dấu gạch nối và ngoặc nhọn.
- Bấm Tạo, rồi sao chép một giá trị, lấy tất cả hoặc tải xuống.
Dùng để làm gì
- Khóa chính khi thứ tự chèn không quan trọng.
- Định danh tương quan cho log và theo dõi sự cố.
- Tên tệp, thư mục và tài nguyên không được phép trùng.
- Dữ liệu giả và giá trị khởi tạo cho môi trường phát triển.
UUID v4 đứng ở đâu
| Lựa chọn | Khi nào dùng |
|---|---|
v4 | Ngẫu nhiên thuần: lựa chọn mặc định |
v7 | Nếu cột có chỉ mục, v7 giữ chỉ mục gọn gàng |
ULID | Một định dạng 26 ký tự sắp xếp được, phổ biến trong hệ sinh thái JavaScript |
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
Xác suất hai UUID v4 trùng nhau là bao nhiêu?
Cần tạo khoảng 2,6 × 1010 UUID để xác suất trùng chạm mức một phần tỉ. Ở mọi quy mô thực tế, rủi ro không đáng kể.
v4 có phù hợp làm khóa chính không?
Có, với điều kiện cột dùng kiểu uuid hoặc BINARY(16). Nếu lưu dưới dạng chuỗi 36 ký tự, giá trị chiếm hơn gấp đôi dung lượng và làm chậm chỉ mục; nếu thứ tự chèn cũng quan trọng, hãy cân nhắc v7.
UUID tôi tạo có bị gửi lên máy chủ không?
Không. Giá trị được tạo trong trình duyệt bằng Web Crypto API và không rời khỏi thiết bị. Trang vẫn chạy được khi ngoại tuyến sau khi tải xong.