Bỏ qua menu, vào nội dung chính
Quay lại
ID Generator

UUID / ULID / NanoID

Generate 4 loại ID: UUID v4 (random), UUID v7 (time-sortable, RFC 9562 mới nhất), ULID (Crockford), NanoID (custom length). Batch 1-200.

Khi nào dùng gì?

UUID v4Default cho database row IDs khi không cần sort theo thời gian. 128-bit random.
UUID v7Nên dùng cho DB primary key - sortable theo timestamp, btree index hiệu quả. Mới (RFC 9562, 2024).
ULID26 ký tự, base32 Crockford (không có I, L, O, U). Sort theo time, copy-paste an toàn (case insensitive).
NanoIDURL-safe, ngắn hơn UUID. 21 char = entropy ~126 bits. 12 char = ~74 bits (đủ cho 10M IDs).

Chọn loại định danh theo đúng nhu cầu

Bốn chuẩn được sinh ở đây

Mỗi lần chạy sinh từ một tới hai trăm định danh theo chuẩn bạn chọn. UUID phiên bản 4 là 128 bit ngẫu nhiên hoàn toàn. UUID phiên bản 7 nhúng mốc thời gian mili giây vào phần đầu nên sắp xếp theo chuỗi cũng chính là sắp theo thời gian tạo. ULID dài 26 ký tự dùng bảng base32 kiểu Crockford, bỏ hẳn các chữ dễ nhìn nhầm. NanoID cho phép chọn độ dài và dùng bảng ký tự an toàn cho địa chỉ web. Nguồn ngẫu nhiên là hàm mật mã của trình duyệt chứ không phải hàm ngẫu nhiên thông thường.

Lúc cần sinh mã ở phía ứng dụng

Khi cần sinh khoá chính ngay ở phía ứng dụng trước lúc ghi xuống cơ sở dữ liệu, để không phải chờ máy chủ trả về số tự tăng. Khi đặt mã đơn hàng hay mã phiếu mà bạn không muốn ai đoán được số lượng giao dịch của mình. Khi sinh khoá chống trùng cho một lệnh thanh toán có thể bị gửi lại. Khi tạo mã mời hoặc mã chia sẻ ngắn.

Đọc con số entropy

Với 128 bit ngẫu nhiên, xác suất trùng nhỏ tới mức có thể bỏ qua trong mọi hệ thống thực tế. NanoID 21 ký tự cho khoảng 126 bit, tương đương UUID. Rút xuống 12 ký tự chỉ còn khoảng 74 bit, vẫn đủ an toàn về mặt trùng lặp cho tập dữ liệu cỡ vừa, nhưng không đủ để làm thứ cần chống đoán.

Chọn nhầm loại thì trả giá gì

Dùng UUID phiên bản 4 làm khoá chính khiến chỉ mục dạng cây bị phân mảnh, vì mỗi bản ghi mới rơi vào một vị trí ngẫu nhiên; đây chính là lý do phiên bản 7 ra đời và nên là lựa chọn mặc định cho bảng lớn. Đổi lại, phiên bản 7 và ULID để lộ thời điểm tạo, nên đừng dùng chúng cho mã cần giấu thông tin. Lưu định danh dưới dạng chuỗi có gạch nối tốn 36 byte mỗi bản ghi, lưu dạng nhị phân chỉ tốn 16 byte, khác biệt này đáng kể khi bảng có nhiều triệu dòng.

Định danh sinh ra rồi ở lại trong trình duyệt. Định danh được sinh tại chỗ bằng nguồn ngẫu nhiên của trình duyệt; không có giá trị nào được gửi lên máy chủ và cũng không có giá trị nào được lưu lại, nên tải lại trang là mất hết, hãy sao chép trước.

Cần bản riêng cho doanh nghiệp bạn?

Mọi công cụ trong Lab đều do đội ngũ Alodev tự xây. Chúng tôi có thể xây phiên bản riêng - gắn thương hiệu, nối dữ liệu nội bộ, thêm tính năng theo quy trình của bạn.