3 คะแนน โดย GN⁺ 2024-08-27 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • UUID มีหลายเวอร์ชัน

    • UUID Version 1 (v1): สร้างจากไทม์สแตมป์, ตัวนับแบบโมโนโทนิก และ MAC address
    • UUID Version 2 (v2): สงวนไว้สำหรับ security ID รายละเอียดเชิงลึกไม่ค่อยเป็นที่ทราบกัน
    • UUID Version 3 (v3): สร้างจากแฮช MD5 ของข้อมูลที่กำหนดไว้ โดยมีการเสนอให้ใช้ DNS และ URL เป็นข้อมูลตั้งต้น
    • UUID Version 4 (v4): สร้างจากข้อมูลแบบสุ่มทั้งหมด เป็น UUID ที่คนส่วนใหญ่นึกถึง
    • UUID Version 5 (v5): สร้างจากแฮช SHA1 ของข้อมูลที่กำหนดไว้ เช่นเดียวกับ v3 มีการเสนอ DNS และ URL เป็นข้อมูลตั้งต้น
    • UUID Version 6 (v6): สร้างจากไทม์สแตมป์, ตัวนับแบบโมโนโทนิก และ MAC address ใช้ข้อมูลแบบเดียวกับ v1 แต่จัดลำดับใหม่เพื่อให้เรียงตามเวลาที่สร้างได้
    • UUID Version 7 (v7): สร้างจากไทม์สแตมป์และข้อมูลแบบสุ่ม
    • UUID Version 8 (v8): ปรับแต่งได้เองทั้งหมด (ยกเว้นฟิลด์ version/variant ที่บังคับไว้)
  • ควรใช้เมื่อไร

    • v4: ใช้เมื่อต้องการ ID แบบสุ่ม เป็นตัวเลือกเริ่มต้นที่ดี
    • v7: ใช้เมื่อจำเป็นต้องมีการเรียงลำดับ เช่น เหมาะกับการใช้เป็นคีย์ฐานข้อมูล
    • v5 หรือ v8: ใช้เมื่อต้องการใส่ข้อมูลเฉพาะลงไปใน UUID ถ้าจำเป็นจริง คุณจะรู้เอง
  • คำอธิบายของเวอร์ชันอื่น ๆ

    • v7 เป็นเวอร์ชันที่ปรับปรุงจาก v1 และ v6 ถ้าเป็นไปได้ควรใช้ v7 ดังนั้นโดยทั่วไปจึงไม่ค่อยใช้ v1 หรือ v6
    • v2 ถูกสงวนไว้สำหรับงานด้านความปลอดภัย ถ้าคุณกำลังใช้อยู่ ก็มีโอกาสสูงที่คุณจะไม่สามารถรู้รายละเอียดได้มากนัก
    • v3 ถูกแทนที่ด้วย v5 โดย v5 ใช้แฮชที่แข็งแรงกว่า

สรุปโดย GN⁺

  • UUID มีหลายเวอร์ชัน และแต่ละเวอร์ชันถูกออกแบบมาสำหรับการใช้งานเฉพาะด้าน
  • v4 และ v7 เป็นเวอร์ชันที่ถูกใช้งานบ่อยที่สุด ส่วน v5 และ v8 ใช้เมื่อมีความต้องการด้านข้อมูลเฉพาะ
  • การเลือกเวอร์ชันของ UUID ขึ้นอยู่กับวัตถุประสงค์การใช้งาน โดยถ้าต้องการการเรียงลำดับควรใช้ v7 และถ้าต้องการ ID แบบสุ่มควรใช้ v4
  • การเข้าใจ UUID เวอร์ชันต่าง ๆ จะช่วยให้เลือก UUID ที่เหมาะกับโปรเจ็กต์ได้

1 ความคิดเห็น

 
GN⁺ 2024-08-27
ความเห็นจาก Hacker News
  • UUID Version 2 (v2) ถูกสงวนไว้สำหรับ security ID และไม่ได้มีรายละเอียดที่เป็นที่รู้จักมากนัก

    • เป็นเพราะเอกสาร RFC เขียนไว้อย่างกำกวม
    • สามารถดูข้อมูลเพิ่มเติมได้จากเอกสารของ Open Group
    • ยังมี UUID "version 0" อยู่ด้วย และสิ่งนี้ช่วยให้เวอร์ชันอื่น ๆ ในภายหลังสามารถทำงานร่วมกันได้
    • ผลการวิจัยสามารถดูได้บน GitHub
  • รายละเอียดของ UUID v2 หาได้ง่ายในเอกสาร RFC 9562

    • ถูกกำหนดไว้เป็นส่วนหนึ่งของ DCE และสามารถกดลิงก์ที่เกี่ยวข้องเพื่อดูรายละเอียดได้
    • การกดลิงก์เป็นสิ่งสำคัญ
  • ไทม์สแตมป์ของ UUID v7 มีประโยชน์ในการค้นหาไฟล์เมตาดาต้าอย่างรวดเร็วใน Databend

    • ช่วยเพิ่มความเร็วในการทำงานบน AWS S3 ได้อย่างมาก
    • PR ที่เกี่ยวข้องสามารถดูได้บน GitHub
  • อยากให้มีมาตรฐานสำหรับ UUID แบบสั้น

    • เช่น 73WakrfVbNJBaAmhQtEeDv หรือ bK7nP9xM
    • ต้องการ ID ที่สั้นและจดจำได้ง่าย
  • เข้าใจจุดประสงค์ของ UUID2 ได้ยาก

    • เคยเจอ UUID2 ตอนที่ Xandr ใช้มันในคำขอลบข้อมูลส่วนบุคคลเท่านั้น
    • ต่อให้อ่านหน้า Wikipedia แล้ว ก็ยังเข้าใจได้ยากว่าทำไมถึงต้องมี UUID หลายประเภท
    • สงสัยว่าการผสมกับโค้ด Mac ทำให้ความสุ่มของ UUID2 สูงขึ้น หรือมีเหตุผลอื่น
    • หากใช้ตัวระบุที่ยาวมากเพื่อความเป็นส่วนตัว ก็สามารถใช้ UUID ที่ไม่ซ้ำกันได้
  • UUID v4 เป็นเพียงตัวสร้างไบต์แบบสุ่ม

    • การสร้างไบต์แบบสุ่มโดยตัดเครื่องหมายขีดกลาง ข้อมูลเวอร์ชัน ฯลฯ ออกไปจะมีประสิทธิภาพมากกว่า
  • ไม่ควรใช้เวอร์ชันที่อิงกับ MAC

    • ในทางทฤษฎีหมายถึงทุกเวอร์ชันยกเว้น v4 และ v7
    • โดยเฉพาะ v1 ที่แย่ที่สุด และ MD5 ของ v3 ก็อ่อนแอมากเช่นกัน
  • UUID ที่ใช้ข้อมูล SHA256 และตัวนับอาจมีประโยชน์

    • สามารถใช้เป็นตัวระบุที่ปกป้องความเป็นส่วนตัวในลักษณะคล้าย PBKDF2 ได้
  • ควรใช้ v7

    • ผู้เชี่ยวชาญด้านความปลอดภัยอาจไม่เห็นด้วย
  • เป็นบทอ่านที่น่าสนใจ

    • เราได้เรียนรู้อะไรใหม่ ๆ ทุกวัน