المعرّف الفريد عالميًّا 128 بتًّا، تُكتب اثنين وثلاثين رقمًا ستّ عشريًّا في خمس مجموعات تفصلها شرطات. المقصد أن أي شيء يستطيع توليد واحد في أي وقت دون تنسيق مع أي شيء آخر، ولن تتصادم النتيجة.
تلك الخاصّية هي ما يجعل الأنظمة الموزّعة ممكنة بلا عدّاد مركزي — وهي أيضًا ما جعلها ثقيلة مفاتيحَ لقواعد البيانات، حتى جاء v7.
الإصدارات التي تستحقّ المعرفة
v4 — عشوائي. 122 بتًّا عشوائيًّا، وستّة محجوزة لعلامات الإصدار والصيغة. هو الافتراضي في كل مكان تقريبًا، والجواب الصحيح حين تريد معرّفًا لا يكشف شيئًا.
v7 — عشوائي مرتَّب زمنيًّا. أول 48 بتًّا طابع زمني بالميلي ثانية؛ والباقي عشوائي. صار معيارًا سنة 2024، وهو الآن الخيار الموصى به لكل ما يصير مفتاحًا رئيسيًّا.
v5 — مشتقّ من اسم. يحسب بصمة فضاء أسماء وسلسلة، فيعطي المدخل نفسه المعرّف نفسه دائمًا. مفيد لمعرّفات ثابتة تُشتقّ من مفاتيح طبيعية، وليس عشوائيًّا إطلاقًا.
v1 — طابع زمني وعنوان MAC. الأصل. يضمّن عنوان شبكة الجهاز المولِّد، وذلك إفشاء لا يقصده أحد، ويستحقّ التجنّب لهذا السبب وحده.
لماذا v4 قاسٍ على قاعدة البيانات
هذه هي الحجّة العملية، وهي ليست بديهية.
فهرس قاعدة البيانات مرتَّب. إدخال صفّ بعدد صحيح متزايد يُلحق دائمًا في الآخر، فتبقى الصفحة نفسها في الذاكرة وتكون الكتابة رخيصة.
المعرّفات العشوائية تحطّ في كل مكان. فكل إدخال يلمس صفحة مختلفة، وتصير مجموعة العمل الفهرسَ كلّه لا ذيله، وتنقسم الصفحات مرارًا، ويتفتّت الفهرس. على جدول كبير هذا هو الفرق بين كتابة سريعة وأخرى بطيئة.
v7 يعيد الترتيب. فالمعرّفات المولَّدة متقاربة في الوقت ترتَّب متقاربة، فتتجمّع الإدخالات في الآخر من جديد — مع الحفاظ على الاستقلال الذي جعل معرّفات UUID تستحقّ الاقتناء.
التصادمات، بصراحة
122 بتًّا عشوائيًّا تعني نحو 5.3 × 1036 احتمال. لبلوغ احتمال تصادم واحد بنسبة واحد في المليار تحتاج إلى توليد نحو 2.7 × 1018 منها.
بمليون في الثانية يكون ذلك نحو خمسة وثمانين ألف سنة. الاحتمال لا يُذكر أمام كل أنواع الأعطال الأخرى في النظام.
الخطر الحقيقي ليس الرياضيات بل مصدر عشوائية ضعيف. فمعرّف مولَّد من مولّد سيّئ البذرة — جهاز مدمج عند أول إقلاع، أو آلة افتراضية منسوخة عن لقطة — يمكن أن يتكرّر، وقد حدث ذلك. الضمانة تأتي من العشوائية لا من الصيغة.
حين يكون سرًّا
معرّف v4 من مصدر معمّى لا يمكن تخمينه، واستعمال واحد رابطًا لإعادة تعيين كلمة المرور أو رابط مشاركة غير مُدرَج أمر معقول.
أما v1 وv7 فلا، ويستحقّ ذلك وضوحًا. كلاهما يضمّن طابعًا زمنيًّا، فمن يعرف تقريبًا متى صدر رمز يكون قد أزال معظم فضاء البحث. v1 ينشر فوق ذلك عنوان MAC للجهاز الذي صنعه.
فالإصدار الأفضل مفتاحًا لقاعدة البيانات هو الخطأ حين يكون سرًّا. استعمل v7 للصفوف وv4 — أو سلسلة عشوائية مصنوعة لهذا الغرض — لكل ما يجب ألّا يُخمَّن.
كيف تخزّنها
المعرّف نصًّا 36 محرفًا. بالبايتات هو 16، فيستحقّ عمود UUID الأصلي الاستعمال حيث توفّره قاعدة البيانات — أقل من نصف التخزين، وكل مدخلة فهرس أصغر.
حيث لا يوجد نوع أصلي، تغلب 16 بايتًا خامًا سلسلةً من 36 محرفًا، بكلفة أنها غير مقروءة في نتيجة استعلام.
الخلاصة
v4 افتراضيًّا، وv7 لكل ما يصير مفتاحًا رئيسيًّا، وv5 حين يجب أن يعطي المدخل نفسه المعرّف نفسه دائمًا، ولا v1. التصادمات ليست همًّا حقيقيًّا؛ أما مصدر العشوائية الضعيف فنعم. يبقى v7 سرًّا رديئًا، لأن نصفه هو الساعة.