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 ดูหนาแน่นกว่าตัวเลขธรรมดาแม้ว่าใต้ผิวหน้ามันเป็นเพียงจำนวนเต็มขนาดใหญ่มาก

เวอร์ชันต่างๆ และทำไม 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 ไม่ซ้ำกันและดำเนินต่อไป ซึ่งถูกต้อง

ที่ที่นักพัฒนานิยมใช้
เนื่องจากความไม่ซ้ำกันไม่ต้องการหน่วยงานกลาง 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 หลักออกเป็นกลุ่มเพื่อให้คนสแกนและเปรียบเทียบค่าได้ง่ายขึ้น
