تطور UUIDs: فهم الإصدارات 1 و 6 و 7
كانت المعرفات الفريدة عالميًا (UUIDs) حجر الزاوية في الأنظمة الموزعة لعقود من الزمن، حيث وفرت طريقة موثوقة لإنشاء مفاتيح فريدة دون تنسيق مركزي. ولى الرغم من أن UUID الإصدار 4 (الذي يعتمد كليًا على الأرقام العشوائية) هو المتغير الأكثر شهرة وانتشارًا، إلا أنه يحمل قيودًا متأصلة عند استخدامه كمفتاح أساسي في أنظمة إدارة قواعد البيانات العلاقية (RDBMS). العشوائية ممتازة لعدم التنبؤ، لكنها سيئة للغاية لفهرسة قواعد البيانات. عندما تقوم بإدراج UUID عشوائي في فهرس B-tree، فإنه يسبب تقسيما ضخمة للصفحات وتجزئة للفهرس، مما يؤدي إلى تدهور أداء الكتابة بمرور الوقت. وهنا يأتي دور معرفات UUID القائمة على الوقت—وحديدًا الإصدارات 1 و 6 و 7—لتوفر بديلاً مهيكلاً يراعي كلاً من الفرادة والترتيب الزمني.
كان UUID الإصدار 1 المحاول الأصلية للجمع بين الفرادة والوقت. فهو ينشئ معرفًا باستخدام الطابع الزمني الحالي، وتسلسل الساعة، وعنوان MAC الخاص بالجهاز. يضمن تضمين عنوان MAC الفرادة المكانية عبر الأجهزة المختلفة، بينما يضمن الطابع الزمني الفرادة الزمانية. ومع ذلك، فإن UUID v1 يحتوي على عيب خطير بالنسبة لفهرسة قواعد البيانات: حيث تم هيكلة طابعه الزمني بحيث تمثل ابتات الأكثر أهمية أقل دقة زمنية. ببساطة، مع تقدم الوقت، تتغير بداية سلسلة UUID بسرعة وبشكل غير متوقع، مما يدمر أي مكانية للفرز التسلسلي. علاوة على ذلك، أثار كشف عنوان MAC مخاوف كبيرة تتعلق بالخصوصية والأمان، مما دفع العديد من المطورين إلى التخلي عن v1 تمامًا.
لحلا هذه المشكلات الصارخة، قدم مجتمع الهندسة UUID الإصدار 6 والإصدار 7. يعد UUID v6 في الأساس إعادة تنظيم لـ UUID v1. فهو يأخذ مكونات الطابع الزمني لـ v1 ويعيد ترتيبها بحيث تمثل البتات الأكثر أهمية أعلى دقة زمنية (السنوات، الأشهر، الأيام)، نزولاً إلى أجزاء من الثانية. يضمن هذا الترتيب البسيط إمكانية فز قيم UUID v6 أبجديًا حسب الوقت. إذا قمت بإنشاء v6 UUID اليوم وآخر غدًا، فإن UUID الخاص بالغد سيتم فرزه بعد الخاص باليوم، مما يتوافق تمامًا مع كيفية توقع قواعد البيانات B-trees لإدراج البيانات. هذا يقضي على تجزئة الفهرس المرتبطة بـ v4 واستحالة الفرز في v1، مع البقاء متوافقًا مع الأنظمة التي تتوقع الهيكل التقليدي لـ UUID.
يأخذ UUID الإصدار 7 هذا التحسين خطوة إلى الأمام ويمثل المعيار الذهبي الحديث للمفاتيح الأساسية لقواعد البيانات. بدلاً من الاعتماد على حقبة غريغورية القديمة المستخدمة في v1 و v6، يستخدم UUID v7 حقبة Unix القياسية (بالمللي ثانية منذ منتصف الليل 1 يناير 1970 UTC). يشغل هذا الطابع الزمني أول 48 بت من المعرف. ويتم ملء البتات المتبقية ببيانات عشوائية قوية تشفيرياً. يمنح هذا النهج الهجين أفضل ما في العالمين: الفرز التسلسلي القوي المطلوب لإدراج قواعد البيانات عالية الأداء، مدمجًا مع أمان وخصوصية توليد البيانات العشوائية. باستخدامه لمولد UUID المجاني والخاص بنسبة 100% داخل المتصفح، يمكنك فوراً إنشاء هذه المعرفات الحديثة دون المخاطرة ببياناتك بفضل عد وجود أي عمليات رفع للخادم.