ตัวสร้างและตรวจสอบ UUID

สร้าง UUID v4 แบบสุ่มที่ปลอดภัยเชิงการเข้ารหัส หรือ v7 ที่เรียงลำดับได้ ทีละหนึ่งหรือพันรายการ และตรวจดู UUID หรือ GUID ใดก็ได้เพื่อดู version และ timestamp ที่ฝังอยู่

ทำงานในเบราว์เซอร์ไม่ต้องสมัครไม่มีการอัปโหลด

UUID ที่สร้าง

วิธีใช้ ตัวสร้าง UUID

  1. เลือก v4 สำหรับ ID แบบสุ่มทั้งหมด หรือ v7 สำหรับ ID ที่เรียงตามเวลาที่สร้าง
  2. กำหนดจำนวนที่ต้องการ (สูงสุด 1,000) แล้วคลิก สร้าง
  3. หากต้องการ สลับเป็นตัวพิมพ์ใหญ่ ลบขีดกลาง หรือครอบด้วยวงเล็บปีกกาสำหรับ GUID แบบ Microsoft
  4. คลิก UUID ตัวใหญ่เพื่อคัดลอก หรือใช้ คัดลอกทั้งหมด / ดาวน์โหลด .txt สำหรับทั้งชุด
  5. วาง UUID ใดก็ได้ลงในตัววิเคราะห์เพื่อตรวจสอบและดู version, variant และ timestamp

UUID คืออะไร?

UUID (Universally Unique Identifier) ซึ่งบนแพลตฟอร์มของ Microsoft เรียกว่า GUID คือค่าขนาด 128 บิตที่เขียนเป็นเลขฐานสิบหก 32 หลักในห้ากลุ่ม: 8-4-4-4-12 รูปแบบถูกกำหนดใน RFC 9562 ซึ่งแทนที่ RFC 4122 ในปี 2024 หลักหนึ่งเข้ารหัส version (เลขฐานสิบหกหลักที่ 13) และบิตบนของหลักที่ 17 เข้ารหัส variant

UUID v4 vs. UUID v7

v4v7
เนื้อหาบิตสุ่ม 122 บิตUnix timestamp หน่วยมิลลิวินาที 48 บิต + บิตสุ่ม 74 บิต
ลำดับการเรียงสุ่มตามลำดับเวลา
ดัชนีฐานข้อมูลการแทรกแบบสุ่มทำให้ดัชนี B-tree กระจัดกระจายต่อท้ายดัชนี เป็นมิตรกับดัชนีมากกว่า
เปิดเผยเวลาที่สร้างไม่ใช่

ใช้ v7 สำหรับ primary key ในฐานข้อมูลและ event ID ที่ลำดับการแทรกมีความสำคัญ ใช้ v4 เมื่อ ID ต้องไม่เปิดเผยว่าสร้างขึ้นเมื่อไร ตัวสร้างนี้รักษาให้ ID แบบ v7 เพิ่มขึ้นอย่างเคร่งครัดแม้จะสร้างหลายรายการในมิลลิวินาทีเดียวกัน

ไม่ซ้ำกันแค่ไหน?

ด้วยบิตสุ่ม 122 บิต คุณต้องสร้าง UUID v4 ประมาณ 2.7 ล้านล้านล้านรายการ ก่อนที่จะมีโอกาส 50% ที่จะเกิดการซ้ำกันเพียงครั้งเดียว หน้านี้ใช้ตัวสร้างเลขสุ่มที่ปลอดภัยเชิงการเข้ารหัสของเบราว์เซอร์ (crypto.getRandomValues) ไม่เคยใช้ Math.random()

การสร้าง UUID ในโค้ด

// JavaScript (browsers, Node 19+)
crypto.randomUUID()
# Python
import uuid; uuid.uuid4()
-- PostgreSQL 13+
SELECT gen_random_uuid();

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

UUID เหล่านี้ปลอดภัยสำหรับใช้ใน production หรือไม่?
ปลอดภัย UUID ถูกสร้างภายในเครื่องด้วยตัวสร้างเลขสุ่มที่ปลอดภัยของ Web Crypto API และเป็นไปตาม RFC 9562 ไม่มีข้อมูลใดถูกส่งไปหรือบันทึกโดยเซิร์ฟเวอร์
UUID กับ GUID ต่างกันอย่างไร?
เป็นสิ่งเดียวกัน GUID เป็นชื่อที่ Microsoft ใช้ และมักเขียนเป็นตัวพิมพ์ใหญ่พร้อมวงเล็บปีกกา เช่น {3F2504E0-4F89-11D3-9A0C-0305E82C3301} ใช้ตัวเลือกด้านบนเพื่อสร้างรูปแบบนั้น
ดึงเวลาที่สร้างจาก UUID ได้ไหม?
ได้เฉพาะ version ที่อิงเวลา v7 เก็บ Unix มิลลิวินาทีไว้ใน 48 บิตแรก ส่วน v1 และ v6 เก็บ timestamp หน่วย 100 นาโนวินาที วางลงในตัววิเคราะห์เพื่อดูวันที่ ส่วน v4 ไม่มีข้อมูลเวลา
ควรใช้ UUID เป็น primary key ของฐานข้อมูลหรือไม่?
ใช้ได้ดีสำหรับระบบกระจายและ ID สาธารณะ ควรใช้ v7 แทน v4 เพื่อให้แถวใหม่อยู่ท้ายดัชนี และเก็บในคอลัมน์ชนิด uuid แบบเนทีฟหรือไบนารี 16 ไบต์ แทนการเก็บเป็นสตริง 36 อักขระ
Nil UUID คืออะไร?
ค่าที่เป็นศูนย์ทั้งหมด 00000000-0000-0000-0000-000000000000 ใช้เป็นตัวยึดตำแหน่งที่หมายถึง “ไม่มี UUID” RFC 9562 ยังกำหนด max UUID ที่เป็น f ทั้งหมดด้วย

เครื่องมือที่เกี่ยวข้อง