AliceLium
fingerprint

สร้าง UUID (v4 และ v7)

สุ่ม UUID ทีละ 1/10/100 ตัว เลือกได้ทั้งแบบสุ่มล้วน v4 และแบบเรียงตามเวลา v7 — สร้างในเครื่องคุณเอง

lockทำงานในเครื่องคุณ ไฟล์ไม่ถูกอัปโหลด boltเห็นผลทันที ไม่ต้องรอคิว check_circleใช้ได้ไม่จำกัด ไม่นับโควตา
lock_open

เข้าสู่ระบบเพื่อใช้เครื่องมือนี้ — ฟรี

สมัครฟรีในไม่ถึงนาที ไม่ต้องใส่บัตรเครดิต · เก็บประวัติงานของคุณให้อัตโนมัติ

boltสมัครฟรี — ใช้ได้ทันที
มีบัญชีแล้ว?
เข้าสู่ระบบ
check_circleฟรี auto_deleteไฟล์ลบใน 1 ชม. historyเก็บประวัติงาน 7 วัน

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

help
UUID v4 กับ v7 ต่างกันยังไง ควรเลือกตัวไหน?
expand_more

v4 คือค่าสุ่มล้วน 122 บิต ไม่มีข้อมูลเวลาหรือเครื่องอยู่ข้างในเลย เดาค่าถัดไปไม่ได้ จึงเหมาะกับโทเคน ลิงก์ลับ หรือรหัสอ้างอิงที่ไม่อยากให้ใครเดาถูก ส่วน v7 เอาเวลา Unix หน่วยมิลลิวินาที 48 บิตไว้หน้าสุดแล้วตามด้วยค่าสุ่ม 74 บิต ทำให้เรียงตามตัวอักษรแล้วได้ลำดับเวลาทันที ถ้าคุณกำลังจะเอาไปทำ primary key ในฐานข้อมูล ให้เลือก v7 แต่ถ้าค่านั้นจะถูกเปิดเผยต่อคนภายนอกและคุณไม่อยากให้รู้ว่าเรคคอร์ดสร้างเมื่อไร ให้เลือก v4

help
ทำไมคนบอกว่า UUID v4 ทำให้ฐานข้อมูลช้า?
expand_more

เพราะดัชนีของฐานข้อมูลเกือบทั้งหมดเป็นโครงสร้าง B-tree ซึ่งทำงานดีที่สุดเมื่อค่าใหม่ ถูกเติมต่อท้ายไปเรื่อย ๆ v4 เป็นค่าสุ่มจึงตกกระจายทั่วช่วง แถวใหม่แต่ละแถวไปตกคนละหน้า ฐานข้อมูลต้องแตกหน้า (page split) บ่อย ดัชนีบวมกว่าที่ควร และแคชพลาดถี่ขึ้นเรื่อย ๆ เมื่อตารางโต v7 แก้ปัญหานี้ตรง ๆ เพราะค่าที่สร้างทีหลังมากกว่าค่าที่สร้างก่อนเสมอ แถวใหม่จึงลงหน้าสุดท้าย อ่านเขียนวนอยู่ในไม่กี่หน้าเดิม

help
UUID ที่สร้างจากหน้านี้ซ้ำกันได้ไหม แล้วปลอดภัยพอไปใช้จริงหรือเปล่า?
expand_more

ค่าสุ่มมาจาก crypto.getRandomValues ของเบราว์เซอร์ ซึ่งเป็นตัวสุ่มเชิงเข้ารหัส ไม่ใช่ Math.random ที่เดาได้ โอกาสซ้ำของ v4 ต่ำจนไม่ต้องคิดถึงในทางปฏิบัติ ส่วน v7 ถ้าสร้างหลายตัวในมิลลิวินาทีเดียวกัน เราใช้ตัวนับ 12 บิตตามที่ RFC 9562 แนะนำ ทำให้ค่าที่สร้างทีหลังยังเรียงต่อจากค่าก่อนหน้าเสมอ ไม่สลับกันเอง และเนื่องจากทั้งหมดเกิดในเครื่องคุณ ค่าที่ได้จึงไม่เคยผ่านเซิร์ฟเวอร์ของเราเลย เอาไปใช้กับระบบจริงได้

help
รูปแบบไม่มีขีดกับแบบ URN ใช้ตอนไหน?
expand_more

แบบไม่มีขีดคือตัดขีดออกเหลือ 32 ตัวอักษร ค่าข้างในเหมือนเดิมทุกบิต นิยมใช้ตอนต้องใส่ใน URL ตั้งชื่อไฟล์ หรือเก็บลงคอลัมน์ CHAR(32) เพื่อประหยัดที่ ใส่ขีดกลับเข้าไปตำแหน่ง 8-4-4-4-12 เมื่อไหร่ก็ได้ ส่วนแบบ URN (urn:uuid:...) ใช้เวลาต้องอ้าง UUID ในฐานะ URI เช่นใน XML, RDF หรือ SAML โดยส่วนนำหน้า urn:uuid: ต้องเป็นตัวพิมพ์เล็กเสมอ

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

ดูทั้งหมดchevron_right