ตัวสร้าง UUID
UUID v4 เป็นตัวระบุสุ่ม 128 บิตในรูปแบบ hex 8-4-4-4-12 (เช่น 550e8400-e29b-41d4-a716-446655440000) ใช้เป็นคีย์หลักฐานข้อมูล, correlation ID และความไม่ซ้ำของชื่อไฟล์โดยไม่ต้องมีตัวจัดสรรกลาง สร้างในเครื่องด้วย crypto.getRandomValues เมื่อมี
วิธีสร้าง UUID
1. คลิกสร้าง (หรือสร้างหลายรายการหากรองรับ)
2. คัดลอก UUID ไปคลิปบอร์ด
3. วางในคำขอ API, SQL insert หรือคอนฟิก
4. เก็บตัวพิมพ์เล็กอย่างสม่ำเสมอหากฐานข้อมูลแยกตัวพิมพ์
กรณีใช้ UUID
คีย์หลักฐานข้อมูล
แทรกผู้ใช้ด้วย id เป็น UUID แทนจำนวนเต็มลำดับ — ปลอดภัยสำหรับ API สาธารณะโดยไม่ถูกแจงนับ
รหัส correlation ของคำขอ
เพิ่มส่วนหัว X-Request-ID ด้วย UUID ใหม่ต่อ HTTP call สำหรับล็อก distributed tracing
คำนำหน้าคีย์อ็อบเจกต์ S3
uploads/{uuid}/photo.jpg หลีกเลี่ยงการชนชื่อไฟล์ในบัคเก็ตที่ใช้ร่วม
เมื่อ UUID v4 เหมาะ
• เมื่อ ID ต้องไม่ซ้ำข้ามระบบกระจายโดยไม่ต้องประสาน
• เมื่อเปิดเผย ID สาธารณะ — UUID สุ่มต้านการเดา
• เมื่อรวมข้อมูลจากไคลเอนต์ออฟไลน์โดยไม่ชน ID
nibble เวอร์ชัน
อักขระหลังบล็อกยัติภังค์ที่สามบอกเวอร์ชัน — 4 หมายถึง UUID สุ่ม ตรวจรูปแบบได้เร็วในการรีวิวโค้ด
คำถามที่พบบ่อย
UUID v4 กับ v1?
v4 เป็นสุ่ม v1 รวม timestamp และโหนดจาก MAC — นิยม v4 เพื่อความเป็นส่วนตัว
โอกาสชนกัน?
ต่ำมากในทางปฏิบัติ — birthday paradox ไม่เกี่ยวกับที่ขนาดแอป
ตัวพิมพ์ใหญ่หรือเล็ก?
RFC อนุญาตทั้งคู่ — เลือกแบบแผนเดียวต่อโปรเจกต์ ประเภท uuid ของ Postgres ทำให้เป็นมาตรฐาน
ต้องมียัติภังค์หรือไม่?
รูปแบบมาตรฐานมียัติภังค์ บางระบบรับ 32 อักขระ hex โดยไม่มี
ปลอดภัยเชิงเข้ารหัสลับหรือไม่?
ใช้ CSPRNG ของเบราว์เซอร์เมื่อมี — ไม่ใช่ Math.random