วิวัฒนาการของ UUID: ทำความเข้า—จเวอร์ชัน 1, 6 และ 7
Universally Unique Identifiers (UUIDs) เปนเสาหลักของระบบกระจายศูนย์มาหลายทศวรรษ โดยให้วิธีที่เชื่อถือได้ใการสร้างคีย์ที่ไม่ซ้ำกันโดยไม่ต้องพึ่งพาการประสานงานส่วนกลา แม้ว่า UUID เวอร์ชัน 4 (ซึ่งอิงจากตัวเลขสุ่มทั้งหมด) จะเป็นตัวแปรที่โด่งดังและถูกนำไปใช้แพร่หลายที่สุด แต่ก็มีข้อจำกัดโดยธรรมชาติเม่อนำมาใช้เป็นคีย์หลักในระบบจัดการฐานข้อมูลเชิงสัมพันธ์ (RDBMS) ความสุมนั้นยอดเยี่ยมสำหรับความคาดเดาไม่ได้ แต่แย่มากสำหรับการทำดัชนีฐาข้อมูล เมื่อคุณแทรก UUID แบบสุ่มลงใน B-tree index มันจะทำให้เกิดการแยกหน้ดัชนีและการแตกไฟล์จำนวนมาก นำไปสู่ประสิทธิภาพการเขียนที่ลดลงเมื่อเวลาผ่านไป นี่คือจุดที่ UUID ตามเวลา—โดยเฉพาะเวอร์ชัน 1, 6 และ 7—เข้ามามีบทบาท โดยนำเสนอทางเลือกที่มีโครงสร้างซึ่งเคารพทั้งความไม่ซ้ำันและการเรียงลำดับตามเวลา
UUID เวอร์ชัน 1 เป็นความพยายามดั้งเดิมนการรวมความไม่ซ้ำกันเข้ากับเวลา มันสร้างตัวระบุโดยใช้การประทบเวลาปัจจุบัน ลำดับนาฬิกา และที่อยู่ MAC ของโหนด การรวมที่อยู่ MAC รับประกันความไม่ซ้ำกันทางพื้นที่ข้ามเครื่องต่างๆ ในขณะที่การปะทับเวลารับประกันความไม่ซ้ำกันทางเวลา อย่างไรก็ตาม UUID v1 มีข้อบกร่องที่สำคัญสำหรับการทำดัชนีฐานข้อมูล: การประทับเวลาจัดโครงส้างโดยบิตที่มีนัยสำคัญที่สุดจะแทนความละเอียดของเวลาต่ำสด พูดง่ายๆ คือ เมื่อเวลาผ่านไป จุดเริ่มต้นของสตริง UUID จะเปลี่ยนแปลงอ่างรวดเร็วและคาดเดาไม่ได้ ทำลายศักยภาพในการจัดเรียงตามลำดับ ิ่งไปกว่านั้น การเปิดเผยที่อยู่ MAC ยังก่อให้เกิดความกังวลเรื่อความเป็นส่วนตัวและความปลอดภัยอย่างมาก ทำให้ผู้พัฒนาจำนวนมากลทิ้ง v1 ไปอย่างสิ้นเชิง
เพื่อแก้ปัญหาที่ชัดเจนเหล่านี้ ชุมชนวิศวกรึงได้นำเสนอ UUID เวอร์ชัน 6 และเวอร์ชัน 7 UUID v6 คือ UUID v1 ที่จัดเรียงใม่ โดยนำส่วนประกอบการประทับเวลาของ v1 มาจัดเรียงใหม่เพื่อให้บิตที่มีนัยสำคัญที่สุดแทนความละเอียดของเวลาสูงสุด (ปี เดือน วัน) ไล่ลงมาจนถึงเศษเสี้ยวของวินาที การจัดเรียงใหม่เรียบง่ายนี้ช่วยให้ม่นใจได้ว่าค่า UUID v6 สามารถเรียงลำดับตามเวลาทางพจนานุกรมได้ หากคุสร้าง UUID v6 วันนี้และอีกอันในวันพรุ่งนี้ UUID ของวันพรุ่งนี้จะจัดเรยงต่อจากของวันนี้ ซึ่งสอดคล้องกับวิธีที่ B-tree ของฐานข้อมูลคาดหวังใหแทรกข้อมูล การทำเช่นนี้จะขจัดปัญหาการแตกไฟล์ดัชนีที่เกี่ยวข้องกับ v4 และความเป็นไปไม่ได้ในการจัดเรียงของ v1 โดยยังคงเข้ากันไดย้อนหลังกับระบบที่คาดหวังโครงสร้าง UUID แบบดั้งเดิม
UUID เวอร์ัน 7 นำการปรับแต่งนี้ไปสู่อีกระดับและเป็นมาตรฐานทองคำสมัยใหม่สำหรบคีย์หลักของฐานข้อมูล แทนที่จะพึ่งพา Gregorian epoch แบบดั้งเดิมที่ช้โดย v1 และ v6 UUID v7 จะใช้การประทับเวลา Unix Epoch มาตรฐาน (มิลลิวินาทีตั้งแต่เท่ยงคืนวันที่ 1 ม.ค. 1970 UTC) การประทับเวลานี้ครอบครอง 48 บิตแรกของตัวระุ ส่วนบิตที่เหลือจะถูกเติมด้วยข้อมูลสุ่มที่แข็งแกร่งทางเข้ารัส วิธีการแบบไฮบริดนี้มอบสิ่งที่ดีที่สุดจากทั้งสองโลก: การเรีงลำดับตามลำดับที่ทนทานและจำเป็นสำหรับการแทรกฐานข้อมูลประสิทิภาพสูง รวมกับความปลอดภัยและความเป็นส่วนตัวของการสร้างข้อมูลสุ่ม ด้วยการใช้เครื่องมือสร้าง UUID ในเบราว์เซอร์ที่ฟรีและเป็นส่นตัว 100% ของเรา คุณสามารถสร้างตัวระบุสมัยใหม่เหล่านี้ได้ทันทีโดไม่ต้องเสี่ยงกับข้อมูลของคุณเนื่องจากไม่อัปโหลดข้อมูลเข้าเซร์ฟเวอร์