เครื่องมือสร้าง UUID
สร้างค่า UUID v4 แบบสุ่มเพื่อใช้ในฐานข้อมูล, API หรือการทดสอบ
วิธีใช้งานเครื่องมือสร้าง UUID นี้
- กำหนดจำนวน UUID
ป้อนตัวเลข 1–10 ในช่องจำนวน UUID เพื่อระบุจำนวนรหัสที่ต้องการสร้าง
- สร้าง
เครื่องคำนวณนี้สร้างค่า UUID v4 แบบสุ่มโดยใช้แหล่งข้อมูลสุ่มเชิงรหัสลับของเบราว์เซอร์
- คัดลอกผลลัพธ์
คัดลอก UUID ที่สร้างขึ้นเพื่อใช้ในฐานข้อมูล, API payload หรือข้อมูลจำลองสำหรับการทดสอบ
วิธีการทำงานของเครื่องมือสร้าง UUID นี้
เครื่องมือนี้สร้าง UUID เวอร์ชัน 4 โดยใช้การสุ่มของเบราว์เซอร์ ตัวระบุ UUID v4 เป็นค่าขนาด 128 บิตที่มีการกำหนดบิตเฉพาะเพื่อระบุเวอร์ชัน (4) และรูปแบบมาตรฐานที่ใช้ในข้อกำหนด UUID สมัยใหม่ เมื่อมี Web Crypto การสุ่มจะมีความแข็งแกร่งทางวิทยาการเข้ารหัส มิฉะนั้นเครื่องมือจะสลับไปใช้ตัวสร้างที่อ่อนแอกว่าเพื่อความสะดวกเท่านั้น
UUID v4 = xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx (โดยที่ y ∈ {8,9,a,b}) ตัวอย่างผลลัพธ์: 550e8400-e29b-41d4-a716-446655440000
การสร้าง 1 UUID จะให้ค่าเดียว เช่น a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d เลข 4 ในกลุ่มที่สามระบุว่าเป็นเวอร์ชัน 4
การสร้าง 3 UUID จะคืนค่าที่แตกต่างกันสามค่า โดยแต่ละค่ามีบิตสุ่ม 122 บิต ใช้เป็นคีย์หลักสำหรับระเบียนข้อมูลทดสอบหรือทรัพยากร API
- ✓ ใช้ API การสุ่มตัวเลขทางวิทยาการเข้ารหัสของเบราว์เซอร์เมื่อพร้อมใช้งาน
- ✓ สลับไปใช้ Math.random() ในสภาพแวดล้อมที่ไม่มี Web Crypto ซึ่งเหมาะสำหรับความสะดวกแต่ไม่เหมาะสำหรับการใช้งานที่มีความปลอดภัยสูง
- UUID v4 ไม่ได้เรียงตามลำดับและไม่เหมาะสำหรับใช้เป็นคีย์หลักที่จัดเรียงได้ในฐานข้อมูลที่ได้ประโยชน์จากการแทรกข้อมูลแบบเรียงลำดับ
ทำความเข้าใจเวอร์ชันและโครงสร้างของ UUID
UUID (Universally Unique Identifier) คือค่าขนาด 128 บิตที่แสดงในรูปแบบเลขฐานสิบหก 32 หลัก แบ่งเป็นห้ากลุ่ม (8-4-4-4-12) UUID เวอร์ชัน 4 ใช้ข้อมูลแบบสุ่มหรือสุ่มเทียมสำหรับ 122 บิต ส่วนบิตที่เหลือจะระบุเวอร์ชัน (4) และตัวแปร (variant) โอกาสที่จะเกิดการซ้ำกันนั้นต่ำมากอย่างมหาศาล คือประมาณ 1 ใน 2^122 ดังนั้น UUID จึงมีความเฉพาะตัวโดยไม่ต้องมีการประสานงานกัน นอกจากนี้ยังมีเวอร์ชันอื่นๆ เช่น v1 ใช้การประทับเวลาและที่อยู่ MAC, v3 และ v5 เป็นแฮชตามชื่อ และ v7 จัดเรียงตามเวลา UUID v4 เป็นตัวเลือกที่นิยมที่สุดสำหรับระบบแบบกระจาย (distributed systems) เนื่องจากไม่ต้องการหน่วยงานกลางและไม่ต้องใช้สถานะร่วมกันในการสร้าง
กรณีการใช้งาน UUID สำหรับนักพัฒนา
นักพัฒนาใช้ UUID เป็นคีย์หลักในฐานข้อมูล, correlation IDs ใน distributed tracing และตัวระบุเฉพาะตัวใน API payloads ต่างจากเลขจำนวนเต็มแบบเพิ่มค่าอัตโนมัติ UUID สามารถสร้างได้จากฝั่งไคลเอนต์หรือบริการใดก็ได้โดยไม่ต้องติดต่อฐานข้อมูลกลาง ซึ่งช่วยให้การขยายระบบในแนวนอนและสถาปัตยกรรมแบบ offline-first ง่ายขึ้น UUID เหมาะอย่างยิ่งสำหรับกรณีการรวมข้อมูลที่หลายระบบสร้างระเบียนข้อมูลแล้วนำมารวมกันในภายหลัง นอกจากนี้ UUID ยังปรากฏในพารามิเตอร์สถานะ OAuth, ลายเซ็น webhook และการตั้งชื่อไฟล์เพื่อหลีกเลี่ยงการชนกันของข้อมูล ในการทดสอบ การสร้าง UUID ตามความต้องการช่วยหลีกเลี่ยงการเขียนโค้ดแบบตายตัวและทำให้ข้อมูลทดสอบสามารถทำซ้ำได้ ข้อเสียหลักคือขนาด (36 ตัวอักษร) และการไม่สามารถเรียงลำดับได้เมื่อเทียบกับ ID แบบลำดับ
คำถามที่พบบ่อย
UUID เหล่านี้ไม่ซ้ำกันใช่หรือไม่?
สำหรับการใช้งานจริงถือว่าใช่ โอกาสที่จะเกิดข้อมูลซ้ำนั้นน้อยมากจนแทบเป็นไปไม่ได้ (1 ใน 2^122)
สามารถนำไปใช้ในระบบจริง (production) ได้หรือไม่?
ใช่ เมื่อสภาพแวดล้อมมีการสุ่มแบบ Web Crypto หากหน้าเว็บทำงานโดยไม่มี API ดังกล่าวและสลับไปใช้ Math.random() ให้ถือว่าผลลัพธ์เป็นตัวระบุเพื่อความสะดวกมากกว่าการสุ่มระดับความปลอดภัย