← เครื่องมือทั้งหมด

เครื่องสร้าง UUID (v4 GUID)

สร้าง UUID v4 แบบสุ่ม (GUID) ทันทีในเบราว์เซอร์ เรียนรู้ว่า UUID 128 บิตคืออะไร เวอร์ชันต่างกันอย่างไร โอกาสชนกัน และเมื่อใดควรใช้

UUID คืออะไรกันแน่

UUID ย่อมาจาก Universally Unique Identifier คือค่า 128 บิตที่ใช้ติดป้ายกำกับบางสิ่งโดยไม่ต้องขออนุญาตจากใครก่อน คุณอาจเห็นมันถูกเรียกว่า GUID หรือ Globally Unique Identifier ซึ่งเป็นชื่อที่ Microsoft ตั้งให้กับแนวคิดเดิมในโลกของ Windows และ .NET ทั้งสองคำอธิบายตัวเลข 128 บิตเดียวกันในเกือบทุกกรณีที่สำคัญ ดังนั้นเมื่อเพื่อนร่วมงานพูดว่า GUID และคุณพูดว่า UUID คุณก็แทบจะพูดถึงสิ่งเดียวกันเสมอ

128 บิตนั้นปกติถูกเขียนเป็นตัวเลขฐานสิบหก 32 หลักแบ่งเป็นห้ากลุ่มด้วยขีดกลาง ในรูปแบบ 8-4-4-12 ค่าทั่วไปดูเหมือน 123e4567-e89b-12d3-a456-426614174000 ขีดกลางไม่มีความหมายของตัวเอง มีไว้เพียงเพื่อให้มนุษย์อ่านค่าได้โดยไม่หลงทิศ ทุกตัวอักษรเป็นตัวเลขฐานสิบหกตั้งแต่ 0 ถึง f ซึ่งทำให้ UUID ดูหนาแน่นกว่าตัวเลขธรรมดาแม้ว่าใต้ผิวหน้ามันเป็นเพียงจำนวนเต็มขนาดใหญ่มาก

โทเค็นฐานสิบหกที่เรืองแสงแทน Identifier 128 บิตที่ไม่ซ้ำกันบนพื้นหลังสีครามเข้ม
UUID คือตัวเลข 128 บิตหนึ่งตัว เขียนเป็นตัวเลขฐานสิบหก 32 หลักในห้ากลุ่มที่คั่นด้วยขีดกลาง

เวอร์ชันต่างๆ และทำไม v4 ถึงเป็นที่นิยม

มาตรฐานกำหนดหลายเวอร์ชัน และแตกต่างกันในวิธีเติมบิต เวอร์ชัน 1 อิงตามเวลา มันผสมผสาน Timestamp ปัจจุบันและ MAC Address ของเครือข่ายเครื่อง ทำให้ค่า v1 เรียงลำดับตามเวลาสร้างได้ แต่ก็รั่วข้อมูลเกี่ยวกับที่ไหนและเมื่อไหรที่สร้างขึ้น ซึ่งไม่เป็นที่ต้องการเสมอ เวอร์ชัน 3 และ 5 อิงตามชื่อ แฮชเนมสเปซและชื่อเพื่อให้ Input เดิมให้ Identifier เดิมเสมอ

เวอร์ชัน 4 เดินทางต่างออกไปอย่างสิ้นเชิง มันเป็นความสุ่มแทบล้วนๆ จาก 128 บิต หกบิตสงวนไว้เพื่อทำเครื่องหมายเวอร์ชันและตัวแปร เหลือ 122 บิตที่เติมด้วยข้อมูลสุ่ม ไม่มี Timestamp ไม่มี MAC Address ไม่มีเนมสเปซ มีแต่ Noise นั่นคือเหตุที่เครื่องมือสร้างส่วนใหญ่รวมถึงเครื่องมือนี้สร้าง v4 ตามค่าเริ่มต้น มันไม่เปิดเผยข้อมูลเกี่ยวกับอุปกรณ์หรือเวลาที่สร้าง และไม่ต้องการการประสานงานระหว่างฝ่ายที่สร้าง เครื่องมือในหน้านี้ทำงานทั้งหมดในเบราว์เซอร์ของคุณ ดังนั้นค่าสุ่มไม่เคยออกจากเครื่องของคุณ

โอกาสที่ UUID จะซ้ำกันนั้นน้อยแค่ไหน

ความกังวลที่สมเหตุสมผลคือ UUID สุ่มสองตัวอาจเหมือนกันในวันหนึ่ง ด้วย 122 บิตสุ่ม พื้นที่ของค่า v4 ที่เป็นไปได้คือ 2 ยกกำลัง 122 ซึ่งประมาณ 5.3 ตามด้วย 36 ศูนย์ หากพูดในแง่ที่มนุษย์เข้าใจได้ คุณต้องสร้าง UUID นับพันล้านตัวต่อวินาทีเป็นเวลาหลายทศวรรษก่อนที่โอกาสของ UUID ซ้ำจะสูงถึงระดับที่วัดได้ มาตรฐานเองก็อธิบายว่าโอกาสชนกันนั้นใกล้เคียงศูนย์จนน้อยมากจนไม่ต้องสนใจ ในทางปฏิบัติทีมงานต่างๆ ถือว่า v4 ไม่ซ้ำกันและดำเนินต่อไป ซึ่งถูกต้อง

กุญแจเรืองแสงนับไม่ถ้วนที่ไม่ซ้ำกันลอยอยู่ในพื้นที่มืดกว้างโดยไม่มีซ้ำ มีสีฟ้าและทองเป็นสำเนียง
กลุ่มค่า v4 ที่เป็นไปได้นั้นกว้างใหญ่มากจนการชนกันแทบเป็นไปไม่ได้

ที่ที่นักพัฒนานิยมใช้

เนื่องจากความไม่ซ้ำกันไม่ต้องการหน่วยงานกลาง UUID จึงเหมาะในที่ที่การประสานงานมีราคาแพงหรือเป็นไปไม่ได้ เป็น Primary Key ของฐานข้อมูลที่ดีมาก โดยเฉพาะเมื่อหลายบริการแต่ละแทรก Row และคุณไม่สามารถหยุดเพื่อถามตัวนับส่วนกลางสำหรับหมายเลขถัดไป ในระบบกระจาย สองโหนดคนละซีกโลกสามารถสร้าง Identifier ในเวลาเดียวกันโดยไม่ชนกันเลย นอกจากนี้ยังใช้ใน Idempotency Key ของ API ที่ไคลเอนต์แนบ UUID กับคำขอเพื่อให้เซิร์ฟเวอร์ข้ามซ้ำได้อย่างปลอดภัยหากเครือข่ายลองใหม่ Session Token ชื่อไฟล์ Event ID และ Message Key ทั้งหมดพึ่งพาคุณสมบัติเดิม

UUID กับ Auto-Increment ID

ทางเลือกดั้งเดิมคือจำนวนเต็มที่เพิ่มอัตโนมัติ 1, 2, 3 ต่อเนื่องกัน ID แบบต่อเนื่องมีขนาดกะทัดรัด เรียงลำดับตามธรรมชาติ และอ่านง่าย แต่มีข้อเสียที่แท้จริง มันเปิดเผยจำนวน Record และให้คนภายนอกเดาค่าข้างเคียงได้ และบังคับให้การ Insert ทุกครั้งผ่านตัวนับเดียว ซึ่งกลายเป็น Bottleneck เมื่อ Shard ฐานข้อมูลหรือรวมข้อมูลจากหลายแหล่ง UUID แก้ปัญหาเหล่านั้นโดยให้ฝ่ายใดก็ตามสร้าง Key ได้อิสระและไม่เปิดเผยข้อมูลเกี่ยวกับปริมาณหรือลำดับ สิ่งที่แลกมาคือขนาดและ Locality ของ Index ที่ลดลงเล็กน้อย สำหรับระบบที่ Scale ออกหรือต้องซ่อนภายใน การแลกเปลี่ยนนั้นมักคุ้มค่า คุณสามารถสำรวจเครื่องมือนี้และที่คล้ายกันผ่านเครื่องมือสร้างทั้งหมดของเรา หรือดูเครื่องมือนักพัฒนาสำหรับ Building Block ที่เกี่ยวข้อง

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

GUID กับ UUID เหมือนกันหรือไม่?

สำหรับการใช้งานทั่วไป ใช่ GUID คือชื่อที่ Microsoft ตั้งให้กับ Identifier 128 บิตเดียวกัน ความแตกต่างที่แท้จริงเพียงอย่างเดียวคือลำดับ Byte ในรูปแบบไบนารีดิบบนระบบ Windows บางระบบ ในรูปแบบสตริงมันเหมือนกันและใช้แทนกันได้

เครื่องมือนี้สร้าง UUID เวอร์ชันอะไร?

สร้างเวอร์ชัน 4 แบบสุ่ม จาก 128 บิต 122 บิตเติมด้วยข้อมูลสุ่ม ทำให้แต่ละค่าไม่น่าจะซ้ำกันมากและไม่มี Timestamp หรือข้อมูลอุปกรณ์

UUID สองตัวจะเหมือนกันได้หรือไม่?

ในทางทฤษฎีโอกาสไม่ใช่ศูนย์แน่นอน แต่ด้วยค่า v4 ที่เป็นไปได้ประมาณ 5.3 คูณ 10 ยกกำลัง 36 มันเล็กน้อยมากจนถือว่าไม่สำคัญ คุณต้องสร้างจำนวนมหาศาลก่อนที่การชนกันจะมีโอกาสเกิดขึ้น

ทำไมต้องใช้ UUID แทนที่จะใช้ Auto-Increment Number?

UUID สามารถสร้างได้อิสระโดยบริการใดๆ โดยไม่มีตัวนับร่วมกัน ไม่เปิดเผยจำนวน Record หรือลำดับ และทำให้การรวมข้อมูลจากหลายแหล่งง่ายดาย Auto-Increment ID มีขนาดเล็กกว่าแต่กลายเป็น Bottleneck และรั่วข้อมูลที่ Scale

UUID ถูกสร้างบนเซิร์ฟเวอร์หรือไม่?

ไม่ เครื่องมือนี้ทำงานทั้งหมดในเบราว์เซอร์ของคุณ ดังนั้นค่าสุ่มถูกสร้างในเครื่องและไม่เคยถูกส่งไปที่ไหน ทำให้ปลอดภัยสำหรับใช้กับ Key และ Token ที่คุณต้องการเก็บเป็นส่วนตัว

รูปแบบขีดกลางหมายความว่าอะไร?

การจัดกลุ่มแบบ 8-4-4-4-12 เป็นเพียงข้อตกลงเพื่อความอ่านง่าย ขีดกลางไม่มีข้อมูล แค่แบ่งตัวเลขฐานสิบหก 32 หลักออกเป็นกลุ่มเพื่อให้คนสแกนและเปรียบเทียบค่าได้ง่ายขึ้น