ตัวสร้าง UUID
สร้าง UUID v4/v7, ULID และ Nano ID — ทีละตัวหรือครั้งละมาก ๆ
เกี่ยวกับเครื่องมือนี้
สร้างตัวระบุที่ไม่ซ้ำกันในระดับสากลได้สี่แบบ: UUID v4 (สุ่มล้วน ตัวเลือกพื้นฐานประจำวัน), UUID v7 (เรียงตามเวลา ตัวเลือกยุคใหม่สำหรับคีย์ฐานข้อมูล), ULID (เรียงตามเวลา เขียนด้วย Crockford Base32 ที่กระชับ) และ Nano ID (สั้น เป็นมิตรกับ URL) สร้างทีละหนึ่งหรือสูงสุดหนึ่งพันรายการต่อครั้ง — บรรทัดละหนึ่ง พร้อมวางลงในสคริปต์ seed
ความสุ่มมาจาก Web Crypto API (crypto.getRandomValues) ซึ่งเป็นแหล่งที่ปลอดภัยเชิงวิทยาการเข้ารหัส ไม่ใช่ Math.random การสร้างเกิดขึ้นในเครื่อง หมายความว่าไม่มีใครอื่นรู้จักไอดีเหล่านี้ ไม่ถูกบันทึกที่ใด และใช้งานได้แม้ออฟไลน์
หากคุณกำลังเลือกรูปแบบไอดีให้ระบบใหม่: v7 และ ULID เรียงตามเวลาที่สร้าง ซึ่งทำให้ดัชนี B-tree มีความสุขและทำให้ไอดีในล็อกเรียงตามลำดับเวลาโดยประมาณ ส่วน v4 ไม่เปิดเผยอะไรเลยว่ามันถูกสร้างเมื่อใด ซึ่งบางครั้งก็เป็นสิ่งที่คุณต้องการพอดี
คำถามที่พบบ่อย
- UUID v4 กับ v7 ต่างกันอย่างไร?
- v4 คือบิตสุ่ม 122 บิต ส่วน v7 (RFC 9562) ขึ้นต้นด้วยไทม์สแตมป์มิลลิวินาทีแบบ unix ขนาด 48 บิต ตามด้วยบิตสุ่ม ไอดีที่สร้างทีหลังจึงเรียงทีหลัง สำหรับคีย์หลักของฐานข้อมูล v7 มักช่วยเรื่องตำแหน่งการแทรกและขนาดดัชนี ส่วน v4 ยังเหมาะอยู่เมื่อลำดับไม่สำคัญหรือเวลาที่สร้างต้องไม่รั่วไหล
- UUID ที่สร้างขึ้นสองตัวชนกันได้ไหม?
- ด้วยบิตสุ่ม 122 บิต ความน่าจะเป็นเล็กมากจนไม่คุ้มจะออกแบบเผื่อ: คุณต้องสร้างไอดีพันล้านตัวต่อวินาทีเป็นเวลาหลายทศวรรษกว่าจะมีโอกาสแม้เพียงริบหรี่ การชนกันในทางปฏิบัติเกิดจากบั๊ก (ใช้ seed ซ้ำ คัดลอกแถว) ไม่ใช่จากความสุ่ม
- ทำไมจึงเลือก ULID แทน UUID v7?
- ทั้งคู่แก้ปัญหาเดียวกัน ULID มี 26 อักขระในรูป Crockford Base32 ที่ไม่สนตัวพิมพ์ — สั้นกว่าและดูสะอาดกว่าใน URL และล็อก ส่วน v7 คงรูปแบบ UUID มาตรฐาน 36 อักขระที่ฐานข้อมูลและไลบรารีทุกตัวรับได้อยู่แล้ว เลือกอันที่ระบบนิเวศของคุณรองรับได้เป็นธรรมชาติกว่า
- ไอดีเหล่านี้ใช้เป็นความลับหรือโทเคนได้ไหม?
- ความสุ่มปลอดภัยเชิงวิทยาการเข้ารหัส แต่โดยทั่วไปไอดีถูกแสดง ถูกบันทึก และถูกทำดัชนี — ถือเป็นข้อมูลสาธารณะ สำหรับโทเคนเซสชันหรือกุญแจ API ให้สร้างความลับเฉพาะที่มีบิตสุ่มอย่างน้อย 128 บิต และปฏิบัติต่อมันเหมือนรหัสผ่านแทน