Tạo mã UUID

Khởi tạo mã định danh UUID phiên bản 4 ngẫu nhiên cho cơ sở dữ liệu và API.

UUID là một chuỗi định danh 128 bit bạn có thể tạo ở bất kỳ đâu mà không cần máy chủ trung tâm xác nhận sự trùng lặp. Tính chất phân tán này giúp việc khởi tạo khóa trên nhiều dịch vụ diễn ra thuận lợi mà không lo xung đột.

Các bước tạo mã UUID v4

  1. Bấm nút yêu cầu hệ thống tạo giá trị định danh phiên bản 4 mới.
  2. Tạo liên tiếp nhiều mã nếu bạn đang cần một danh sách để kiểm thử.
  3. Sao chép chuỗi ký tự nhận được vào mã nguồn, tệp cấu hình hoặc bản di chuyển cơ sở dữ liệu.
  4. Giữ nguyên định dạng chữ thường theo chuẩn quy ước phổ biến.
  5. Lưu trữ trực tiếp dưới kiểu dữ liệu UUID chuyên dụng nếu hệ quản trị cơ sở dữ liệu có hỗ trợ.

Xác suất trùng lặp khi tạo mã UUID

Mỗi chuỗi định danh phiên bản 4 sở hữu 122 bit ngẫu nhiên, tương đương khoảng 5,3 × 10³⁶ giá trị có thể xuất hiện. Để đạt mức xác suất 50% xảy ra một vụ trùng lặp duy nhất, bạn cần tạo ra khoảng 2,7 × 10¹⁸ giá trị liên tục.

Ngay cả khi hệ thống tạo ra một tỷ mã mỗi giây trong một trăm năm, nguy cơ xuất hiện hai chuỗi giống hệt nhau vẫn cực kỳ nhỏ. Trong các bài toán thực tế, bạn hoàn toàn có thể xem tính duy nhất của giá trị là điều chắc chắn.

Các phiên bản UUID phổ biến

  • Phiên bản 4 — Được tạo từ các bit hoàn toàn ngẫu nhiên. Đây là lựa chọn thông dụng nhất và là kết quả công cụ này cung cấp.
  • Phiên bản 1 — Kết hợp dấu thời gian và địa chỉ MAC. Chuỗi có thể sắp xếp tuần tự nhưng để lộ danh tính thiết bị cùng thời điểm tạo.
  • Phiên bản 7 — Bắt đầu bằng dấu thời gian và bổ sung các bit ngẫu nhiên. Định dạng này vừa xếp thứ tự được như phiên bản 1 vừa tránh lộ thông tin thiết bị.
  • Nil UUID — Toàn bộ các bit đều bằng không. Thường dùng làm giá trị rỗng hoặc vị trí giữ chỗ tạm thời.
  • GUID — Tên gọi do Microsoft đặt cho cùng một chuẩn định danh. Hai cấu trúc này hoàn toàn tương thích với nhau.

Điểm cần cân nhắc khi dùng UUID làm khóa chính

  • Bạn có thể tạo sẵn định danh ngay từ tầng ứng dụng trước khi dòng dữ liệu được ghi xuống bảng.
  • Không để lộ quy mô kinh doanh hoặc số lượng bản ghi như cách dùng số nguyên tự tăng.
  • Việc gộp dữ liệu từ nhiều nguồn khác nhau trở nên thuận tiện mà không sợ xung đột khóa.
  • Các khóa ngẫu nhiên của phiên bản 4 gây phân mảnh chỉ mục B-tree do vị trí ghi dữ liệu bị xáo trộn.
  • Định dạng này chiếm 16 byte bộ nhớ so với 4 hoặc 8 byte của số nguyên, làm tăng dung lượng các bảng lớn và chỉ mục liên quan.

Câu hỏi thường gặp về UUID

Chuỗi UUID có bao giờ bị trùng lặp trong thực tế không?

Xác suất xuất hiện hai chuỗi trùng nhau thấp tới mức có thể coi bằng không. Rủi ro hỏng hóc phần cứng còn dễ xảy ra hơn một trường hợp trùng khóa.

Nên chọn UUID hay số nguyên tự tăng cho khóa bảng?

Số nguyên tự tăng chiếm ít bộ nhớ và tối ưu chỉ mục hơn. UUID giúp tạo mã độc lập, che giấu số lượng bản ghi và thuận tiện ghép nối hệ thống phân tán.

Chuỗi GUID khác gì so với UUID thông thường?

Về bản chất chúng không có sự khác biệt. GUID là tên gọi riêng của Microsoft cho cùng định dạng 128 bit và dùng thay thế cho nhau được.

Có nên dùng UUID v4 làm khóa bảo mật hay token xác thực không?

Chuỗi ngẫu nhiên phiên bản 4 rất khó đoán nhưng không được thiết kế để giữ bí mật, thường xuyên xuất hiện trên nhật ký hệ thống hoặc đường dẫn URL. Bạn nên dùng chuỗi token chuyên dụng.

Quy trình xử lý mã UUID của công cụ hoạt động ra sao?

Hệ thống tiếp nhận yêu cầu từ bạn qua thao tác nhấp chuột, xử lý tính toán ngẫu nhiên trên máy chủ rồi gửi lại giá trị hoàn chỉnh về giao diện.

Cookie
Chúng tôi quan tâm đến dữ liệu của bạn và muốn sử dụng cookie để cải thiện trải nghiệm của bạn.