Trình tạo UUID

Tạo UUID phiên bản 4 hoặc phiên bản 7 trong trình duyệt, từng cái một hoặc một trăm cái cùng lúc.

Chạy hoàn toàn trong trình duyệt của bạn. Không có gì được tải lên, ghi log hay lưu trữ.

Phiên bản

UUID là một mã định danh 128 bit mà bạn có thể tạo ở bất cứ đâu, không cần xin một cơ quan trung tâm nào, mà vẫn có thể kỳ vọng nó là duy nhất. Ở đây có hai phiên bản vì chúng giải quyết những vấn đề khác nhau.

Cách hoạt động

Phiên bản 4 gồm 122 bit ngẫu nhiên, với sáu bit cố định đánh dấu phiên bản và biến thể. Nó không mang thông tin gì, đúng là điều bạn muốn ở một mã định danh công khai và cũng chính là điều khiến nó trở thành khóa chính clustered tồi: các lần chèn liên tiếp rơi vào những vị trí chẳng liên quan gì nhau trong chỉ mục.

Phiên bản 7, được chuẩn hóa trong RFC 9562, đặt một mốc thời gian 48 bit tính bằng mili giây trước 74 bit ngẫu nhiên. Các giá trị tạo sau được sắp sau các giá trị tạo trước, nên các lần chèn nằm ở cuối chỉ mục và truy vấn theo khoảng thời gian hoạt động tốt. Đổi lại, mã định danh để lộ thời điểm nó được tạo.

Các bit ngẫu nhiên đến từ bộ sinh số ngẫu nhiên mật mã của trình duyệt, cùng nguồn được dùng để tạo khóa, chứ không phải từ Math.random.

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

Tôi nên dùng v4 hay v7?

v7 cho khóa chính của cơ sở dữ liệu, nơi thứ tự giúp chỉ mục luôn gọn gàng. v4 khi mã định danh bị lộ ra ngoài và không được để lộ ngày tạo, hoặc khi thứ tự sẽ cho phép suy ra bạn tạo bao nhiêu bản ghi mỗi giờ.

Hai UUID có thể trùng nhau không?

Về nguyên tắc là có, trên thực tế thì không với v4: với 122 bit ngẫu nhiên, bạn phải tạo hàng tỷ UUID mỗi giây trong suốt một thế kỷ thì mới có khả năng xảy ra trùng lặp. Rủi ro thực sự là một nguồn ngẫu nhiên yếu, đó là lý do ở đây dùng nguồn mật mã.

Còn v1 thì sao?

Phiên bản 1 nhúng địa chỉ MAC của máy đã tạo ra nó, làm lộ danh tính phần cứng. v7 cho bạn cùng thứ tự theo thời gian mà không có điều đó, và là phiên bản thay thế hiện đại của nó.

Cần biết

  • Các giá trị được tạo trong trình duyệt của bạn và không bao giờ được gửi đi đâu.
  • Công cụ này không tất định: tải lại trang sẽ cho các mã định danh mới, và đó chính là mục đích.

Nguồn

Tất cả công cụ Lập trình