สร้าง UUID

สร้างทีละตัวหรือทีละพันตัวได้ ในสองเวอร์ชันที่ควรใช้จริง เวอร์ชัน 4 คือค่าสุ่ม 122 บิต ซึ่งเป็นสิ่งที่คนส่วนใหญ่หมายถึงเมื่อพูดว่า UUID ส่วนเวอร์ชัน 7 ขึ้นต้นด้วยมิลลิวินาทีที่สร้าง แถวที่ใช้มันเป็นคีย์จึงเรียงและลงที่เดียวกันในดัชนี แทนที่จะกระจายไปทั่ว ซึ่งเป็นความต่างที่จะโผล่มาเป็นตารางที่ช้าลงในอีกสองปีข้างหน้า ค่าสุ่มมาจากระบบปฏิบัติการของคุณ ไม่ใช่จากสูตรคำนวณ และไม่มีอะไรถูกสร้างบนเซิร์ฟเวอร์

เวอร์ชัน 4 คือแบบที่คุ้นเคย ส่วนเวอร์ชัน 7 ขึ้นต้นด้วยเวลา ชุดที่สร้างจึงเรียงตามลำดับ และดัชนีฐานข้อมูลไม่บวม

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

ควรใช้เวอร์ชัน 7 แทนเวอร์ชัน 4 ตอนไหน

ตอนที่รหัสนั้นเป็นคีย์หลักของตาราง เวอร์ชัน 4 เป็นค่าสุ่ม การแทรกแถวติด ๆ กันจึงไปลงคนละที่ในดัชนี และดัชนีก็เลิกเข้ากับรูปแบบที่ฐานข้อมูลทำได้เร็ว ส่วนเวอร์ชัน 7 ขึ้นต้นด้วยเวลา แถวใหม่จึงเรียงติดกันและลงที่เดียวกัน ถ้ารหัสนั้นไม่ได้ถูกทำดัชนีเลย สองแบบนี้ก็เท่ากัน

รหัสพวกนี้ไม่ซ้ำจริงไหม

ไม่ซ้ำเท่าที่สิ่งใดจะไม่ซ้ำได้ เวอร์ชัน 4 มีค่าสุ่ม 122 บิต ซึ่งมากพอที่ต่อให้สร้างพันล้านตัวต่อวินาทีเป็นเวลาร้อยปี โอกาสชนกันก็ยังต่ำกว่าโอกาสที่ฮาร์ดแวร์จะคำนวณผิด ค่าสุ่มมาจากตัวสร้างของระบบปฏิบัติการ ไม่ใช่ Math.random ซึ่งเดาได้และไม่ควรเข้าใกล้รหัสประจำตัวใด ๆ

สร้างบนเซิร์ฟเวอร์ของคุณหรือเปล่า

ไม่ และนี่คือเหตุผลที่ควรใช้เครื่องมือที่ทำงานในเครื่องสำหรับงานนี้ รหัสถูกสร้างในแท็บนี้ด้วยเครื่องของคุณเอง นโยบายความปลอดภัยของเว็บกำหนด connect-src ‘none’ เบราว์เซอร์จึงบล็อกการเรียกเครือข่ายจากหน้านี้ ต่อให้โค้ดอยากส่งออกไปก็ส่งไม่ได้ ซึ่งสำคัญ เพราะ UUID ที่ได้จากเว็บไซต์คือ UUID ที่เว็บไซต์นั้นเคยเห็น

ทำไมต้องมีตัวเลือกไม่ใส่ขีด

เพราะบางระบบเก็บ UUID เป็น 32 ตัวอักษรไม่ใช่ 36 การวางแบบมีขีดลงไปในระบบพวกนั้นคือความรำคาญเล็ก ๆ ที่เจอทุกวัน ค่าที่ได้เหมือนกันทั้งสองแบบ