DevToolPal
VI

Tạo ULID

Tạo ULID: ID duy nhất 26 ký tự, sắp xếp được theo thời gian, dùng nguồn ngẫu nhiên an toàn, tối đa 1000 cái mỗi lần.

Chạy cục bộ, không bao giờ tải lên

Tùy chọn

ULID

0 ký tự · 0 B

Công cụ này làm gì

Công cụ này tạo ULID ngay trong trình duyệt của bạn. ULID là một định danh 128 bit giống UUID, nhưng được viết thành 26 ký tự và sắp xếp theo thời điểm tạo. Điều đó khiến ULID rất phù hợp làm khóa chính cơ sở dữ liệu, ID sự kiện và log, tên tệp và bất cứ thứ gì bạn muốn liệt kê theo thứ tự tạo mà không cần thêm cột timestamp riêng.

Một ULID gồm hai phần:

  • Timestamp (10 ký tự đầu): số mili giây kể từ Unix epoch, 48 bit. Nó dùng được đến năm 10889.
  • Phần ngẫu nhiên (16 ký tự cuối): 80 bit từ bộ sinh số ngẫu nhiên mật mã của trình duyệt.

ULID dùng bảng chữ cái Base32 của Crockford 0123456789ABCDEFGHJKMNPQRSTVWXYZ. Bảng này bỏ đi I, L, O và U để ID dễ đọc to và khó gõ nhầm, và không chứa ký tự nào cần escape trong URL.

Cách sử dụng

  1. Chọn số lượng ID bạn cần, từ 1 đến 1000.
  2. Bật Đơn điệu nếu các ID phải giữ đúng thứ tự ngay cả khi nhiều ID được tạo trong cùng một mili giây. Khi đó phần ngẫu nhiên được tăng thêm một cho mỗi ID mới.
  3. Bật Chữ thường nếu hệ thống của bạn lưu ID bằng chữ thường. ULID không phân biệt hoa thường, và dạng chuẩn là chữ hoa.
  4. Sao chép danh sách hoặc tải về dưới dạng tệp văn bản. Nhấn tạo lại để có một loạt mới.

Ví dụ

01ARZ3NDEKTSV4RRFFQ69G5FAV

Ở đây 01ARZ3NDEK là timestamp 1469922850259 (2016-07-30 23:54:10.259 UTC), còn TSV4RRFFQ69G5FAV là phần ngẫu nhiên. Hai ULID được tạo cách nhau một giây có chung vài ký tự đầu, đó là lý do một phép sắp xếp chuỗi đơn giản sẽ xếp chúng theo thứ tự thời gian.

So sánh ULID với UUID

UUID v4 ngẫu nhiên rải các hàng mới khắp chỉ mục B-tree, làm chậm thao tác chèn trên bảng lớn. ULID phần lớn tăng dần, nên hàng mới nằm ở cuối chỉ mục, giống như với số nguyên tự tăng, trong khi vẫn duy nhất giữa các máy mà không cần phối hợp. Cái giá phải trả là ULID tiết lộ khoảng thời gian nó được tạo. Nếu điều đó quan trọng, hãy dùng UUID v4.

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

› ULID là gì?

ULID (Universally Unique Lexicographically Sortable Identifier) là một ID 128 bit được viết thành 26 ký tự Crockford Base32. 10 ký tự đầu mã hóa một timestamp tính bằng mili giây và 16 ký tự cuối là ngẫu nhiên.

› Nên dùng ULID hay UUID?

Dùng ULID khi bạn muốn ID sắp xếp theo thời điểm tạo, ví dụ làm khóa cơ sở dữ liệu hay ID log. Dùng UUID v4 khi ID không được để lộ thời điểm nó được tạo. UUID v7 là một lựa chọn chuẩn khác cũng có thứ tự theo thời gian.

› Chế độ đơn điệu (monotonic) làm gì?

Các ID được tạo trong cùng một mili giây thường có phần ngẫu nhiên độc lập, nên thứ tự của chúng trong mili giây đó là ngẫu nhiên. Ở chế độ đơn điệu, phần ngẫu nhiên được tăng thêm một thay vào đó, nên mọi ID trong loạt đều được sắp xếp nghiêm ngặt sau ID trước.

› ID có được tạo một cách an toàn không?

Có. Phần ngẫu nhiên đến từ bộ sinh số ngẫu nhiên mật mã của trình duyệt, và không có gì được gửi lên máy chủ.