DevToolPal
ไทย

สร้าง ULID

สร้าง ULID: ID ไม่ซ้ำความยาว 26 ตัวอักษรที่เรียงตามเวลาได้ ใช้ความสุ่มที่ปลอดภัย สร้างได้ครั้งละสูงสุด 1000 รายการ

ทำงานในเครื่อง ไม่มีการอัปโหลด

ตัวเลือก

ULID

0 ตัวอักษร · 0 B

เครื่องมือนี้ทำอะไร

เครื่องมือนี้สร้าง ULID ในเบราว์เซอร์ของคุณ ULID คือตัวระบุขนาด 128 บิตแบบเดียวกับ UUID แต่เขียนเป็น 26 ตัวอักษร และเรียงลำดับตามเวลาที่สร้าง ULID จึงเหมาะกับ primary key ในฐานข้อมูล ID ของ event และ log ชื่อไฟล์ และทุกสิ่งที่คุณต้องการแสดงตามลำดับการสร้างโดยไม่ต้องมีคอลัมน์ timestamp แยก

ULID มีสองส่วน:

  • Timestamp (10 ตัวแรก): มิลลิวินาทีนับจาก Unix epoch ขนาด 48 บิต ใช้ได้ถึงปี 10889
  • ส่วนสุ่ม (16 ตัวหลัง): 80 บิตจากตัวสร้างเลขสุ่มเชิงการเข้ารหัสของเบราว์เซอร์

ULID ใช้ชุดตัวอักษร Base32 ของ Crockford 0123456789ABCDEFGHJKMNPQRSTVWXYZ ซึ่งตัด I, L, O และ U ออก ทำให้ ID อ่านออกเสียงง่ายและพิมพ์ผิดยาก และไม่มีอักขระที่ต้อง escape ใน URL

วิธีใช้งาน

  1. เลือกจำนวน ID ที่ต้องการ ตั้งแต่ 1 ถึง 1000
  2. เปิด Monotonic หาก ID ต้องรักษาลำดับแม้หลายตัวจะถูกสร้างในมิลลิวินาทีเดียวกัน ส่วนสุ่มจะถูกเพิ่มค่าทีละหนึ่งสำหรับแต่ละ ID ใหม่
  3. เปิด ตัวพิมพ์เล็ก หากระบบของคุณเก็บ ID เป็นตัวพิมพ์เล็ก ULID ไม่แยกตัวพิมพ์เล็กใหญ่ และรูปแบบมาตรฐานคือตัวพิมพ์ใหญ่
  4. คัดลอกรายการหรือดาวน์โหลดเป็นไฟล์ข้อความ กด สร้าง อีกครั้งเพื่อได้ชุดใหม่

ตัวอย่าง

01ARZ3NDEKTSV4RRFFQ69G5FAV

ในที่นี้ 01ARZ3NDEK คือ timestamp 1469922850259 (2016-07-30 23:54:10.259 UTC) และ TSV4RRFFQ69G5FAV คือส่วนสุ่ม ULID สองตัวที่สร้างห่างกันหนึ่งวินาทีจะมีอักขระสองสามตัวแรกเหมือนกัน นี่คือเหตุผลที่การเรียงสตริงธรรมดาจะเรียงตามลำดับเวลาได้

เปรียบเทียบ ULID กับ UUID

UUID v4 แบบสุ่มทำให้แถวใหม่กระจายไปทั่ว B-tree index ซึ่งทำให้การ insert ในตารางขนาดใหญ่ช้าลง ULID ส่วนใหญ่มีค่าเพิ่มขึ้นเรื่อย ๆ แถวใหม่จึงไปอยู่ท้าย index เหมือนกับจำนวนเต็มแบบ auto-increment ขณะที่ยังคงไม่ซ้ำกันข้ามเครื่องโดยไม่ต้องประสานงานกัน ข้อแลกเปลี่ยนคือ ULID เปิดเผยเวลาที่สร้างโดยประมาณ หากเรื่องนี้สำคัญ ให้ใช้ UUID v4

คำถามที่พบบ่อย

› ULID คืออะไร?

ULID (Universally Unique Lexicographically Sortable Identifier) คือ ID ขนาด 128 บิต เขียนเป็นอักขระ Crockford Base32 จำนวน 26 ตัว 10 ตัวแรกเข้ารหัส timestamp ระดับมิลลิวินาที และ 16 ตัวหลังเป็นค่าสุ่ม

› ULID หรือ UUID ควรใช้อะไร?

ใช้ ULID เมื่อต้องการ ID ที่เรียงตามเวลาที่สร้าง เช่น ใช้เป็นคีย์ในฐานข้อมูลหรือ ID ของ log ใช้ UUID v4 เมื่อ ID ต้องไม่เปิดเผยเวลาที่สร้าง UUID v7 เป็นทางเลือกตามมาตรฐานที่เรียงตามเวลาได้เช่นกัน

› โหมด monotonic ทำอะไร?

ID ที่สร้างในมิลลิวินาทีเดียวกันปกติจะได้ส่วนสุ่มที่เป็นอิสระต่อกัน ลำดับภายในมิลลิวินาทีนั้นจึงเป็นแบบสุ่ม ในโหมด monotonic ส่วนสุ่มจะถูกเพิ่มค่าทีละหนึ่งแทน ทุก ID ในชุดจึงเรียงอยู่หลัง ID ก่อนหน้าอย่างเคร่งครัด

› ID ถูกสร้างอย่างปลอดภัยไหม?

ใช่ ส่วนสุ่มมาจากตัวสร้างเลขสุ่มเชิงการเข้ารหัสของเบราว์เซอร์ และไม่มีอะไรถูกส่งไปยังเซิร์ฟเวอร์