เครื่องมือสร้าง UUID

Format options

Count

1 item(s)

เครื่องมือสร้าง UUID/GUID/ULID/NanoID ออนไลน์ฟรี รองรับรูปแบบ ID ที่ไม่ซ้ำกัน 5 รูปแบบ การสร้างจำนวนมากสูงสุด 100 รูปแบบที่ปรับแต่งได้ และการตรวจสอบ UUID พร้อมใช้งานทันที — เหมาะอย่างยิ่งสำหรับคีย์หลักฐานข้อมูลและการสร้างข้อมูลทดสอบ

คำแนะนำที่เกี่ยวข้อง

UUID คืออะไร?

UUID (Universally Unique Identifier) คือตัวระบุ 128 บิตที่กำหนดมาตรฐานโดย Open Software Foundation (OSF) ซึ่งกำหนดไว้ใน RFC 4122 วัตถุประสงค์คือเพื่อให้ระบบกระจายสามารถระบุข้อมูลได้อย่างไม่ซ้ำกันโดยไม่ต้องมีหน่วยงานกลางสำหรับการกำหนด ID

UUID มาตรฐานมีลักษณะเช่น `550e8400-e29b-41d4-a716-446655440000` ประกอบด้วยตัวเลขฐานสิบหก 32 ตัว แบ่งออกเป็น 5 กลุ่ม (8-4-4-4-12) ด้วยขีดกลาง ตามทฤษฎีแล้ว ความน่าจะเป็นของการชนกันของ UUID v4 อยู่ที่ประมาณ 1/10^36 — ถ้าคุณสร้าง UUID 1 พันล้านตัวต่อวินาทีเป็นเวลาประมาณ 800 ปี ความน่าจะเป็นของการชนกันเพียงครั้งเดียวจะอยู่ที่ประมาณ 50% ซึ่งสามารถละเลยได้ในทางปฏิบัติ

UUID ถูกใช้อย่างแพร่หลายสำหรับคีย์หลักฐานข้อมูล ID ติดตามแบบกระจาย ID คำขอ ID ติดตามล็อก การตั้งชื่อไฟล์ที่ไม่ซ้ำ ID ข้อมูลทดสอบ และตัวระบุเซสชัน เกือบทุกภาษาโปรแกรมหลักจะมีไลบรารีสร้าง UUID ในตัว

กรณีการใช้งาน

  • สร้าง UUID v4 เป็นคีย์หลักของระเบียนตารางในระหว่างการออกแบบฐานข้อมูลเพื่อหลีกเลี่ยงการรั่วไหลของปริมาณข้อมูลจาก ID ที่เพิ่มค่าอัตโนมัติ
  • ใช้ ULID เป็น ID คำขอ/ติดตามส่วนกลางที่เรียงลำดับได้ในระบบกระจายหรือสถาปัตยกรรมไมโครเซอร์วิส
  • สร้าง UUID จำนวนมากเป็นข้อมูลทดสอบและ ID คำสั่งซื้อ/ผู้ใช้จำลองในระหว่างการพัฒนา API และการทดสอบการรวมระบบ
  • ใช้ NanoID แทน UUID ในลิงก์สั้นฟรอนต์เอนด์หรือ URL แชร์ — สั้นกว่า สะอาดกว่า ไม่ต้องเข้ารหัส URL
  • ใช้ UUID v5 เพื่อสร้าง ID ที่กำหนดได้จากเนมสเปซคงที่ เพื่อให้แน่ใจว่าอินพุตเดียวกันจะให้ผลลัพธ์เดียวกันเสมอ
  • ใช้คุณสมบัติการตรวจสอบเพื่อระบุประเภทและเวอร์ชันของ ID เมื่อพบ ID ที่มีรูปแบบไม่รู้จักในบันทึกดีบักหรือเอกสารของบุคคลที่สาม

วิธีการใช้งาน

  1. เลือกประเภท ID ที่ต้องการจากการ์ดด้านบน: UUID v4 (แนะนำ), v1, v5, ULID หรือ NanoID
  2. ถ้าเลือก UUID v5 ให้ป้อนสตริงเนมสเปซ; ID อื่นๆ สามารถตั้งค่าตัวเลือกรูปแบบได้ทันที
  3. สลับตัวเลือกตัวพิมพ์ใหญ่และขีดกลางตามความต้องการ ตั้งค่าจำนวนการสร้างจำนวนมาก (1-100) ผ่านปุ่มด่วนหรือแถบเลื่อน
  4. คลิกปุ่มสร้างเพื่อดูผลลัพธ์ — คัดลอกทีละรายการ คัดลอกทั้งหมดพร้อมกัน หรือส่งออกเป็น TXT/JSON
  5. หากต้องการตรวจสอบ ID ที่มีอยู่ ให้เปลี่ยนไปที่แท็บ "ตรวจสอบ" แล้ววางสตริง ID เพื่อรับข้อมูลประเภทและเวอร์ชัน

คุณสมบัติ

  • ID 5 ชนิดในเครื่องมือเดียว: UUID v1 (ประทับเวลา), v4 (สุ่ม), v5 (เนมสเปซ), ULID (เรียงลำดับได้) และ NanoID (ปลอดภัย URL) — หนึ่งเครื่องมือครอบคลุมทุกความต้องการของสแต็กเทคโนโลยี
  • ตรวจสอบและจดจำ UUID: เปลี่ยนไปที่แท็บตรวจสอบ วาง ID ใดๆ เพื่อระบุเวอร์ชัน UUID หรือตรวจหารูปแบบ ULID/NanoID — แก้ไขปัญหาได้อย่างรวดเร็วในระหว่างดีบัก
  • สร้างจำนวนมากสูงสุด 100: สร้างจำนวนใดๆ ตั้งแต่ 1 ถึง 100 ID ในครั้งเดียว — ไม่ต้องคัดลอกด้วยตนเองทีละรายการสำหรับข้อมูลทดสอบอีกต่อไป
  • การจัดรูปแบบที่ยืดหยุ่น: สลับตัวพิมพ์ใหญ่และขีดกลางสำหรับ UUID เพื่อให้ตรงกับข้อกำหนดรูปแบบของฐานข้อมูล URL และไฟล์คอนฟิกูเรชัน
  • ส่งออกและประวัติในเครื่อง: คัดลอกทั้งหมดด้วยคลิกเดียว ส่งออกไฟล์ TXT/JSON ประวัติการสร้างถูกเก็บในเครื่องเพื่อการกู้คืนทันที — การดำเนินการจำนวนมากมีประสิทธิภาพมากขึ้น
  • ตัวเลขสุ่มที่ปลอดภัยฝั่งไคลเอ็นต์: ใช้ API crypto ของเบราว์เซอร์สำหรับตัวเลขสุ่มที่ปลอดภัยทางการเข้ารหัส ID ไม่เคยออกจากอุปกรณ์ของคุณ ทำงานแบบออฟไลน์

ตัวอย่างโค้ด

สร้าง UUID v4 ใน JavaScript

javascript

เบราว์เซอร์สมัยใหม่และ Node.js 14.17+ มี Web Crypto API ในตัว ทำให้สามารถสร้าง UUID v4 ได้โดยตรงโดยไม่ต้องใช้ไลบรารีของบุคคลที่สาม

// เบราว์เซอร์สมัยใหม่ / Node.js 19+
const id = crypto.randomUUID();
console.log(id); // "550e8400-e29b-41d4-a716-446655440000"

// Node.js 14.17 - 18.x
const crypto = require('crypto');
const id = crypto.randomUUID();

สร้าง UUID จำนวนมากใน Python

python

ใช้โมดูล uuid ของไลบรารีมาตรฐาน Python เพื่อสร้าง UUID v4 หลายตัวจำนวนมาก เหมาะอย่างยิ่งสำหรับการเตรียมข้อมูลทดสอบ

import uuid

# สร้าง UUID เดี่ยว
uid = uuid.uuid4()
print(uid)

# สร้าง 10 UUID จำนวนมาก
for _ in range(10):
    print(uuid.uuid4())

# สร้าง UUID ตัวพิมพ์ใหญ่โดยไม่มีขีดกลาง
print(uuid.uuid4().hex.upper())

สร้าง UUID จากบรรทัดคำสั่ง Shell

bash

สร้าง UUID ได้อย่างรวดเร็วในเทอร์มินัล Linux/macOS เหมาะสำหรับใช้ในสคริปต์เชลล์

# Linux
uuidgen

# macOS
uuidgen | tr 'A-Z' 'a-z'

# อ่านโดยตรงจากไฟล์สุ่มของระบบ (วิธีดั้งเดิมที่สุด)
cat /proc/sys/kernel/random/uuid

เลือกวิธี ID แบบไหนดี?

UUID ไม่ใช่ตัวเลือกเดียว แต่ Auto-increment ID ของฐานข้อมูลและ Snowflake ก็เป็นรูปแบบคีย์หลักที่นิยมเช่นกัน พิจารณา 'ขนาดข้อมูล ต้องการความไม่ซ้ำทั่วโลกหรือไม่ ต้องการเรียงตามเวลาหรือไม่' ก่อนเลือกรูปแบบเฉพาะ — จะช่วยหลีกเลี่ยงการเดินทางอ้อมได้มาก

UUID v1 / v4 / v5 / ULID / NanoID: ควรเลือกอันไหน?

ID ทั้ง 5 ประเภทมีข้อดีข้อเสียที่แตกต่างกันในแง่ขนาดข้อมูล ความสามารถในการเรียงลำดับ และความยาวตัวอักษร พิจารณา 'ใช้ที่ไหน + ต้องการเรียงลำดับหรือไม่ + ใช้ใน URL โดยตรงหรือไม่' เพื่อตัดสินใจ — เชื่อถือได้มากกว่าการเลือกตามตัวเลขเพียงอย่างเดียว

รูปแบบสถานการณ์ที่แนะนำการเรียงลำดับความยาวระดับคำแนะนำ
UUID v1ระบบภายในที่ต้องการเรียงตามเวลาและยอมรับการรั่วไหลของที่อยู่ MAC และเวลาสร้างเรียงตามเวลา36 ตัวอักษร⚠ โดยทั่วไปไม่แนะนำ (รั่วไหลข้อมูลส่วนตัว)
UUID v4คีย์หลักฐานข้อมูล ตัวระบุทั่วไป สถานการณ์ทางธุรกิจส่วนใหญ่ไม่เรียงลำดับ (สุ่ม)36 ตัวอักษร✓ ตัวเลือกแรกสำหรับการใช้งานทั่วไป
UUID v5สถานการณ์ที่ต้องการผลลัพธ์แบบกำหนดได้ (อินพุตเดียวกัน → UUID เดียวกัน)ไม่เรียงลำดับ36 ตัวอักษร✓ แนะนำเมื่อเนมสเปซคงที่
ULIDคีย์หลักระบบกระจาย การติดตามล็อก ดัชนีที่ต้องการเรียงตามเวลาเรียงตามเวลา (48 บิตแรกเป็นมิลลิวินาทีของเวลา)26 ตัวอักษร✓ ตัวเลือกแรกสำหรับระบบกระจาย
NanoIDURL สั้น ตัวระบุคุกกี้ การอ้างอิง JS ฝั่งฟรอนต์เอนด์ไม่เรียงลำดับ (สุ่ม)21 ตัวอักษร (ค่าเริ่มต้น)✓ ตัวเลือกแรกสำหรับสถานการณ์ ID สั้น

UUID vs Auto-increment ID ฐานข้อมูล vs Snowflake ID: วิธีเลือกรูปแบบคีย์หลัก

ทั้งสามเป็นรูปแบบคีย์หลักที่พบบ่อยที่สุดของแบ็กเอนด์ ซึ่งกำหนดความสามารถในการขยาย ความปลอดภัยในการทำงานพร้อมกัน และลักษณะประสิทธิภาพของระบบ การตัดสินใจตาม 'ขนาดข้อมูล / ความต้องการไม่ซ้ำทั่วโลก / ความต้องการอ่านได้' จะช่วยหลีกเลี่ยงการปรับสถาปัตยกรรมในภายหลัง

มิติUUIDAuto-increment ID ฐานข้อมูลSnowflake
ไม่ซ้ำทั่วโลก✓ ใช่ (ในทางทฤษฎี)✗ ไม่ (ซ้ำเมื่อแบ่งชาร์ด)✓ ใช่ (รับประกันโดยศูนย์ข้อมูล + ID เครื่อง)
การรั่วไหลของปริมาณข้อมูล✓ ไม่รั่วไหล✗ รั่วไหลโดยตรง (1, 2, 3 เพิ่มขึ้นเปิดเผยปริมาณข้อมูลจริง)⚠ บิตเวลาเปิดเผยเวลาสร้าง (ไม่เปิดเผยปริมาณรวมโดยตรง)
การเรียงลำดับ✗ ไม่เรียงลำดับ (ULID เป็นข้อยกเว้น)✓ เพิ่มขึ้นอย่างต่อเนื่อง (เป็นมิตรกับ B-Tree)✓ แนวโน้มเพิ่มขึ้น (เรียงลำดับภายในมิลลิวินาทีเดียวกัน)
การแบ่งชาร์ด✓ รองรับโดยธรรมชาติ✗ ต้องแนะนำตัวสร้าง ID หรือปรับเปลี่ยน✓ แยกแยะผ่าน worker ID
ค่าใช้จ่ายในการจัดเก็บ⚠ สูง (BINARY(16) 16 ไบต์)✓ ต่ำ (BIGINT 8 ไบต์)✓ ต่ำ (BIGINT 8 ไบต์)
สถานการณ์ที่เหมาะสมคีย์หลักแบบกระจายหลายบริการ ตัวระบุภายนอก ธุรกิจที่ sensitive ต่อปริมาณข้อมูลแอปพลิเคชันแบบเดี่ยว ระบบจัดการเบื้องหลัง ไม่ต้องการไม่ซ้ำทั่วโลกIM ที่มีพร้อมกันสูง หมายเลขคำสั่งซื้อ ID ข้อความ (ต้องใช้งานเอง)

Best Practices

คีย์หลักฐานข้อมูลเวอร์ชันผลิต: เลือก UUID v4 หรือ ULID เป็นอันดับแรก หลีกเลี่ยง v1

UUID v1 ใช้ 48 บิตสุดท้ายสำหรับที่อยู่ MAC และ 48 บิตแรกสำหรับการประทับเวลาที่มีความแม่นยำ 100ns——**ฟิลด์ทั้งสองนี้สามารถสร้างใหม่เป็นลายนิ้วมือของเครื่องและเวลาสร้างได้**. v1 ถูกระบุอย่างชัดเจนว่า 'only when backward compatibility is needed' (เฉพาะเมื่อต้องการความเข้ากันได้แบบย้อนหลัง) ใน RFC 4122 สภาพแวดล้อมการผลิตควรเลือก v4 (สุ่ม) หรือ ULID (เรียงลำดับได้) เป็นอันดับแรก; v1 ใช้เฉพาะเมื่อดีบักหรือติดตามเครื่องที่สร้างเป็นครั้งคราวเท่านั้น **อย่าใช้** v1 เป็น ID ผู้ใช้, ID อุปกรณ์ หรือหมายเลขคำสั่งซื้อที่เปิดเผยต่อสาธารณะ

ควรเลือกใช้ UUID v1, v4, v5 อย่างไร?

UUID ความยาว 128 บิต ≠ เอนโทรปี: v4 มีเอนโทรปีจริงเพียง 122 บิต

แม้ว่า UUID v4 จะมีความยาวรวม 128 บิต แต่ **4 บิตแรกคือหมายเลขเวอร์ชัน (0100 คงที่), 2 บิตสุดท้ายคือหมายเลขตัวแปร (10 คงที่)** — มีเพียง 122 บิตที่สุ่มจริง นี่คือข้อจำกัดรูปแบบที่กำหนดโดย RFC 4122 และ **ไลบรารี UUID v4 ใดๆ ที่อ้างว่า '128 บิตสุ่มทั้งหมด' เป็นการใช้งานที่ผิดพลาด**. นอกจากนี้ 2 บิตบนของไบต์ที่ 7 ใน 64 บิตสุดท้ายของ v4 ก็เป็นฟิลด์ตัวแปรเช่นกัน ทำให้เอนโทรปีจริงต่ำกว่า เมื่อออกแบบระบบ คำนวณความปลอดภัยตาม 122 บิต (ไม่ใช่ 128 บิต) เพื่อหลีกเลี่ยงการประเมินความเสี่ยงการชนกันต่ำเกินไป

RFC 4122 - ข้อกำหนด UUID

การจัดเก็บ UUID ต้องใช้คอลัมน์ BINARY(16) ไม่ใช่ VARCHAR(36)

สตริง UUID v4 `550e8400-e29b-41d4-a716-446655440000` ดูกะทัดรัด แต่จริงๆ แล้ว VARCHAR(36) จัดเก็บ 36 ไบต์ + ความยาว 2 ไบต์ = 38 ไบต์ **ใช้พื้นที่จัดเก็บมากกว่า BINARY(16) ถึง 2.4 เท่า**. MySQL/PostgreSQL/MSSQL ทั้งหมดมีฟังก์ชัน UUID ในตัวที่รองรับการเขียน BINARY(16) โดยตรง และขนาดดัชนีก็ลดลงครึ่งหนึ่ง เมื่อตารางเกิน 100 ล้านแถว ดัชนีคีย์หลัก VARCHAR(36) จะเพิ่มความสูงของ B-Tree ขึ้น 1-2 ระดับ **ทำให้ประสิทธิภาพการค้นหาลดลง 30-50%**. แปลงเป็นสตริงเมื่อแสดงผลที่ฟรอนต์เอนด์ ส่งต่อในชั้นธุรกิจด้วย BINARY(16) เสมอ

การเปรียบเทียบ UUID / ULID / NanoID

ใช้ NanoID หรือ UUID ที่ไม่มีขีดกลางสำหรับสถานการณ์ URL หลีกเลี่ยงการเข้ารหัส URL

ชุดอักขระของ UUID v4 คือ `[0-9a-f-]` และ **ขีดกลาง - ต้องการการเข้ารหัส URL สองครั้งใน path ของ URL** (หลีกเป็น %2D ก่อน แล้วหลีกเป็น %252D) ซึ่งดูไม่สวยงาม มีสองวิธีแก้ไข: **(1) ใช้ NanoID โดยตรงสำหรับสถานการณ์ URL** (ค่าเริ่มต้น 21 ตัวอักษรที่ปลอดภัย URL); **(2) UUID v4 + ปิดขีดกลาง** เพื่อส่งออก hex บริสุทธิ์ 32 หลัก ใช้เป็นส่วนของ path URL โดยไม่ต้องเข้ารหัส สำหรับสถานการณ์คุกกี้ ให้เลือก NanoID (A-Za-z0-9_-) หรือ UUID ที่ไม่มีขีดกลางก่อน หลีกเลี่ยงอักขระ `+` `/` `=` (ชุดอักขระ Base64)

สามารถลบขีดกลางหรือแปลง UUID เป็นตัวพิมพ์ใหญ่ได้ไหม?

หลังการสร้างจำนวนมากต้องลบรายการซ้ำ บั๊กของตัวสร้างอาจทำให้เกิดรายการซ้ำได้

ความน่าจะเป็นของการชนกันของ UUID v4 อยู่ที่ประมาณ 1/10^36 ซึ่งในทางทฤษฎีไม่จำเป็นต้องลบรายการซ้ำ——**แต่อย่าเชื่อทฤษฎีในงานวิศวกรรม**. ข้อผิดพลาด RNG ของเคอร์เนล Linux, บั๊กการใช้งาน `crypto.randomUUID` ใน Node.js เวอร์ชันแรกๆ, และแหล่งเอนโทรปีไม่เพียงพอเมื่อ Cloud VM เริ่มทำงาน เป็นอุบัติเหตุจริงที่ทำให้ UUID ที่สร้างจำนวนมากมีค่าซ้ำกัน **หลังจากสร้าง UUID 100,000+ ตัวจำนวนมากในสภาพแวดล้อมการผลิต ต้องทำการตรวจสอบรายการซ้ำด้วย `SELECT id, COUNT(*) FROM t GROUP BY id HAVING COUNT(*) > 1` เสมอ** และย้อนกลับเวอร์ชันของตัวสร้างทันทีหากพบปัญหา นี่คือแนวปฏิบัติที่ดีที่ได้จากบทเรียนอันเจ็บปวดในสถานการณ์การย้ายข้อมูลและการนำเข้าจำนวนมาก

สามารถสร้าง UUID หลายตัวพร้อมกันได้ไหม?

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

UUID และ GUID แตกต่างกันอย่างไร?

UUID (Universally Unique Identifier) และ GUID (Globally Unique Identifier) โดยพื้นฐานแล้วเป็นสิ่งเดียวกันแต่มีชื่อต่างกัน: UUID เป็นชื่อมาตรฐานอย่างเป็นทางการของ IETF (RFC 4122) ในขณะที่ GUID เป็นคำที่ Microsoft นิยมใช้ในระบบนิเวศ Windows ทั้งสองมีรูปแบบ 128 บิตที่เหมือนกันเช่น `550e8400-e29b-41d4-a716-446655440000` UUID มาตรฐานที่สร้างโดยเครื่องมือนี้สามารถใช้งานทดแทนกันได้ในทุกสถานการณ์ที่ต้องการ GUID

ควรเลือกใช้ UUID v1, v4, v5 อย่างไร?

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

ULID และ NanoID มีข้อได้เปรียบอะไรเมื่อเปรียบเทียบกับ UUID v4?

ULID (26 ตัวอักษร) สั้นกว่า UUID (36 ตัวอักษรรวมขีดกลาง) และสามารถเรียงลำดับตามพจนานุกรมตามเวลาที่สร้าง ทำให้เหมาะสำหรับดัชนีฐานข้อมูลและการติดตามล็อก NanoID (ค่าเริ่มต้น 21 ตัวอักษร) สั้นกว่าและเร็วกว่า ใช้อักขระที่ปลอดภัยสำหรับ URL จึงไม่ต้องเข้ารหัสใน URL และคุกกี้ — เล็กกว่า UUID ประมาณ 30% ทั้งสามมีความน่าจะเป็นของการชนกันที่น้อยมาก แต่ความสามารถในการเรียงลำดับของ ULID โดดเด่นในระบบกระจาย ในขณะที่ NanoID เป็นมิตรกับสถานการณ์ฟรอนต์เอนด์/URL มากกว่า

สามารถสร้าง UUID หลายตัวพร้อมกันได้ไหม?

ได้ เครื่องมือนี้รองรับการสร้างจำนวนมากตั้งแต่ 1 ถึง 100 ID ตั้งค่าจำนวนผ่านปุ่มด่วนหรือแถบเลื่อน แล้วสร้างด้วยคลิกเดียว — เหมาะอย่างยิ่งสำหรับการสร้างข้อมูลทดสอบ การนำเข้าจำนวนมาก และการเตรียม ID ที่ไม่ซ้ำสำหรับสคริปต์ หลังจากสร้าง คุณสามารถคัดลอกผลลัพธ์ทั้งหมดพร้อมกันหรือส่งออกเป็นไฟล์ TXT หรือ JSON

คู่มือการสร้างจำนวนมาก

สามารถตรวจสอบว่าสตริงเป็น UUID ที่ถูกต้องได้ไหม?

ได้ เปลี่ยนไปที่แท็บ "ตรวจสอบ" แล้ววางสตริงใดๆ — เครื่องมือจะระบุและตรวจสอบโดยอัตโนมัติ: UUID มาตรฐาน (v1/v3/v4/v5) จะรายงานหมายเลขเวอร์ชันเฉพาะ และยังจดจำรูปแบบ ULID (Crockford Base32 26 ตัวอักษร) และ NanoID (อักขระปลอดภัย URL 21 ตัวอักษร) อีกด้วย ทำให้สะดวกอย่างยิ่งสำหรับการแก้ไขปัญหารูปแบบ ID อย่างรวดเร็วในระหว่างการพัฒนาและดีบัก

การสร้าง UUID ออนไลน์ปลอดภัยไหม? ID ของฉันจะรั่วไปยังเซิร์ฟเวอร์ไหม?

ปลอดภัยอย่างสมบูรณ์ การสร้างและตรวจสอบ ID ทั้งหมดทำงานในเครื่องเบราว์เซอร์ของคุณผ่าน JavaScript ใช้ crypto.getRandomValues() สำหรับตัวเลขสุ่มที่ปลอดภัยทางการเข้ารหัส ไม่มี ID ที่สร้างขึ้นถูกส่งไปยังเซิร์ฟเวอร์ใดๆ และไม่มีประวัติการสร้างถูกเก็บไว้ในคลาวด์ ทำงานได้แม้จะออฟไลน์ ทำให้เหมาะสำหรับอินทราเน็ตองค์กรและโครงการที่ละเอียดอ่อน

สามารถลบขีดกลางหรือแปลง UUID เป็นตัวพิมพ์ใหญ่ได้ไหม?

ได้ สำหรับ UUID v1/v4/v5 เครื่องมือมีสวิตช์สองตัว: "ตัวพิมพ์ใหญ่" สลับตัวพิมพ์ของผลลัพธ์ และ "ขีดกลาง" ช่วยให้คุณลบขีดกลาง (มีประโยชน์สำหรับ URL ไฟล์คอนฟิกูเรชัน หรือฐานข้อมูลที่ต้องการรูปแบบไม่มีขีดกลาง) ULID และ NanoID ไม่มีขีดกลางโดยค่าเริ่มต้นและยังรองรับการสลับตัวพิมพ์อีกด้วย

ทำไมควรใช้เครื่องมือออนไลน์แทนบรรทัดคำสั่งในการสร้าง UUID?

เครื่องมือบรรทัดคำสั่ง (เช่น uuidgen ของ Linux, โมดูล uuid ของ Python) ต้องการสภาพแวดล้อมการพัฒนา เครื่องมือออนไลน์ทำงานทันทีในเบราว์เซอร์ของคุณโดยไม่ต้องติดตั้ง นอกจากนี้ เครื่องมือนี้ยังรวมการจดจำเวอร์ชัน UUID การส่งออกจำนวนมาก และคุณสมบัติประวัติในเครื่อง — สะดวกกว่าเมื่อทำงานข้ามอุปกรณ์ (เช่น สร้าง ID สำหรับเพื่อนร่วมงานที่ไม่ใช่เทคนิค) หรือเมื่อคุณต้องการ ID ทันที

อภิธานศัพท์

UUID
Universally Unique Identifier ความยาว 128 บิต มาตรฐาน RFC 4122 เวอร์ชันที่พบบ่อย ได้แก่ v1 (ประทับเวลา+MAC), v4 (สุ่ม), v5 (แฮช SHA-1)
GUID
Globally Unique Identifier คำของ Microsoft สำหรับ UUID — ทั้งสองมีรูปแบบและวัตถุประสงค์เหมือนกัน
ULID
Universally Unique Lexicographically Sortable Identifier 26 ตัวอักษรโดยใช้การเข้ารหัส Crockford Base32 48 บิตแรกคือประทับเวลา — สามารถเรียงลำดับตามเวลาที่สร้าง
NanoID
เครื่องมือสร้าง ID ที่ไม่ซ้ำขนาดเล็ก ค่าเริ่มต้น 21 ตัวอักษรที่ปลอดภัยสำหรับ URL (A-Za-z0-9_-) สั้นกว่าและเร็วกว่า UUID เหมาะอย่างยิ่งสำหรับสถานการณ์ฟรอนต์เอนด์และ URL
UUID v1
เวอร์ชัน UUID ที่อาศัยประทับเวลาและที่อยู่ MAC สามารถเรียงลำดับตามเวลาได้ แต่อาจรั่วที่อยู่ MAC และเวลาสร้าง — ปลอดภัยน้อยกว่า v4
UUID v4
เวอร์ชัน UUID ที่อาศัยตัวเลขสุ่มทั้งหมด ใช้กันอย่างแพร่หลายที่สุด ความน่าจะเป็นของการชนกันน้อยมาก ตัวเลือกเริ่มต้นในการพัฒนา
UUID v5
เวอร์ชัน UUID เนมสเปซที่ใช้แฮช SHA-1 — เนมสเปซเดียวกัน + อินพุตชื่อเดียวกันให้ผลลัพธ์ UUID ที่เหมือนกัน เหมาะสำหรับสถานการณ์ที่กำหนดได้
ความน่าจะเป็นของการชนกัน
ความน่าจะเป็นที่ ID สองตัวที่สร้างแบบสุ่มจะเหมือนกัน ความน่าจะเป็นของการชนกันของ UUID v4 อยู่ที่ประมาณ 1 ใน 17 พันล้านล้านล้าน สามารถละเลยได้ในงานวิศวกรรมจริง
Crockford Base32
การเข้ารหัส Base32 ที่ออกแบบโดย Douglas Crockford ซึ่งใช้ตัวอักษรตัวพิมพ์ใหญ่และตัวเลขโดยยกเว้น I/L/O/U เพื่อหลีกเลี่ยงอักขระที่สับสน — ใช้โดย ULID

การเปรียบเทียบ UUID / ULID / NanoID

คุณสมบัติUUID v4ULIDNanoID
ความยาว36 ตัวอักษร (มีขีดกลาง) / 32 ตัวอักษร (ไม่มีขีดกลาง)26 ตัวอักษร21 ตัวอักษร (ค่าเริ่มต้น)
ชุดอักขระฐานสิบหก (0-9a-f)Crockford Base32 (32 ตัวอักษร)ปลอดภัย URL (64 ตัวอักษร)
ความสามารถในการเรียงลำดับไม่เรียงลำดับ (สุ่ม)เรียงตามเวลาไม่เรียงลำดับ (สุ่ม)
ปลอดภัย URLต้องเข้ารหัส (ขีดกลาง + ตัวอักษร/ตัวเลข)ปลอดภัยส่วนใหญ่ (ตัวพิมพ์ใหญ่ + ตัวเลข)ปลอดภัย URL อย่างสมบูรณ์
ความเร็วในการสร้างเร็วเร็วเร็วกว่า UUID ประมาณ 60%
ความน่าจะเป็นของการชนกัน1/10^361/10^361/10^34 (ที่ 21 ตัวอักษร)
กรณีการใช้งานทั่วไปคีย์หลักฐานข้อมูล ID ทั่วไประบบกระจาย การติดตามล็อกURL สั้น ID ฟรอนต์เอนด์ คุกกี้

วิธีการสร้าง UUID ตามภาษา

ภาษาโค้ด
JavaScriptcrypto.randomUUID() // เบราว์เซอร์สมัยใหม่ / Node.js 19+
Pythonimport uuid; uuid.uuid4()
JavaUUID.randomUUID()
Gogithub.com/google/uuid; uuid.New()
Bash/Linuxuuidgen หรือ cat /proc/sys/kernel/random/uuid

Authoritative References