คู่มือ

UUID: คู่มือฉบับสมบูรณ์

UUID (Universally Unique Identifier) เป็นตัวระบุเฉพาะทั่วโลกที่ใช้ในการพัฒนาซอฟต์แวร์เพื่อสร้างตัวระบุที่ไม่ซ้ำกันโดยไม่ต้องมีการประสานงานส่วนกลาง คู่มือนี้อธิบายว่า UUID คืออะไร เวอร์ชันต่างๆ ทำงานอย่างไร และวิธีใช้พวกมันอย่างมีประสิทธิภาพ

UUID คืออะไร?

UUID เป็นตัวระบุ 128 บิตที่แสดงเป็นสตริงฐานสิบหก 32 ตัวอักษรที่แบ่งออกเป็นห้ากลุ่ม: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx ตัวอย่าง: 550e8400-e29b-41d4-a716-446655440000 รูปแบบนี้มีการกำหนดมาตรฐานใน RFC 4122 ทำไมต้องใช้ UUID? การสร้างตัวระบุเฉพาะโดยไม่ต้องมีการประสานงานส่วนกลาง ความน่าจะเป็นของการชนต่ำอย่างมาก (แทบเป็นศูนย์สำหรับวัตถุประสงค์ทางปฏิบัติ) สามารถสร้างออฟไลน์หรือในระบบกระจาย มาตรฐานข้ามแพลตฟอร์มและภาษา กรณีการใช้งานทั่วไป: คีย์หลักของฐานข้อมูล (โดยเฉพาะในระบบกระจาย) ตัวระบุเซสชัน ชื่อไฟล์เฉพาะ ตัวระบุธุรกรรม ตัวระบุวัตถุในระบบเก็บข้อมูล API key และโทเค็น

เวอร์ชัน UUID

UUID v1 (ตามเวลา): สร้างจากเวลาปัจจุบันและที่อยู่ MAC ข้อดี: เรียงลำดับได้ตามธรรมชาติ (เวลาเป็นองค์ประกอบ) ข้อเสีย: เปิดเผยเวลาสร้างและที่อยู่ MAC (ความกังวลด้านความเป็นส่วนตัว) ไม่สุ่ม (คาดเดาได้) ใช้เมื่อไหร่: เมื่อคุณต้องการตัวระบุที่เรียงลำดับได้ตามเวลา หลีกเลี่ยงถ้าความเป็นส่วนตัวเป็นความกังวล UUID v4 (สุ่ม): สร้างจากตัวเลขสุ่ม ข้อดี: ง่ายที่สุด ไม่รั่วไหลข้อมูล คาดเดาไม่ได้ ข้อเสีย: ไม่เรียงลำดับได้ (สุ่มอย่างบริบูรณ์) ใช้เมื่อไหร่: สำหรับวัตถุประสงค์ทั่วไปส่วนใหญ่ ตัวเลือกเริ่มต้นที่ดี UUID v5 (ตามชื่อด้วย SHA-1): สร้างโดยการแฮชเนมสเปซและชื่อ ข้อดี: กำหนดได้—อินพุตเดียวกันให้ UUID เดียวกันเสมอ ข้อเสีย: ต้องการเนมสเปซและชื่อ ไม่สุ่ม ใช้เมื่อไหร่: เมื่อคุณต้องการ UUID ที่สามารถทำซ้ำได้จากอินพุตเดียวกัน สำหรับการแมป URL หรือตัวระบุที่มีโครงสร้าง UUID v3 (ตามชื่อด้วย MD5): คล้ายกับ v5 แต่ใช้ MD5 แทน SHA-1 เลิกใช้แล้ว—ใช้ v5 แทน

แนวปฏิบัติที่ดีที่สุด

เลือกเวอร์ชันที่เหมาะสม: ใช้ v4 เป็นค่าเริ่มต้น—ง่าย ปลอดภัย และเหมาะสำหรับกรณีส่วนใหญ่ ใช้ v1 ถ้าคุณต้องการการเรียงลำดับตามเวลา (แต่พิจารณา ULID หรือ timestamp-prefixed UUID แทน) ใช้ v5 สำหรับตัวระบุที่กำหนดได้ หลีกเลี่ยง v3 (MD5 เสียหาย) คีย์หลักของฐานข้อมูล: UUID เป็นคีย์หลักที่ดี: ไม่มีการชน สร้างในแอปพลิเคชัน (ไม่ต้องการการไป-กลับฐานข้อมูล) ทำงานในฐานข้อมูลกระจาย ข้อเสีย: ใหญ่กว่าจำนวนเต็ม (16 ไบต์ เทียบกับ 4-8 ไบต์) UUID สุ่มไม่เหมาะกับการเรียงลำดับ (พิจารณา ULID) อาจช้ากว่าจำนวนเต็มในฐานข้อมูลบางตัว ประสิทธิภาพ: ใช้ประเภท UUID พื้นเมืองของฐานข้อมูลหากมี (PostgreSQL, MySQL 8.0+) เก็บเป็นไบนารี (16 ไบต์) ไม่ใช่สตริง (36 ไบต์) จัดทำดัชนีอย่างเหมาะสม—UUID สุ่มอาจทำให้ดัชนี B-tree แตกสลาย ความปลอดภัย: ใช้ตัวสร้าง UUID ที่ปลอดภัยทางคริปโตกราฟีสำหรับโทเค็นความปลอดภัย หลีกเลี่ยง UUID v1 สำหรับโทเค็นเซสชัน (คาดเดาได้) UUID ไม่ใช่รหัสผ่าน—อย่าใช้พวกมันเป็นความลับที่ใช้ร่วมกัน

ลองใช้เครื่องมือ

สร้าง UUID

สร้าง UUID

เรียนรู้เพิ่มเติม

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

สร้าง UUID

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