ما هو UUID؟ شرح بلغة بسيطة
نُشر في 2026-07-15
تظهر معرّفات UUID باستمرار في البرمجيات، مفاتيح قواعد البيانات، رموز API، أسماء الملفات، لكن الشروحات غالبًا ما تكون أكثر إرباكًا من المفهوم نفسه. إليك النسخة المختصرة.
التعريف بلغة بسيطة
UUID (معرّف فريد عالميًا) هو رقم من 128 بت، يُكتب عادةً كـ 32 حرفًا سداسي عشري مقسّمة إلى خمس مجموعات، مثل f47ac10b-58cc-4372-a567-0e02b2c3d479. الغرض الكامل منه هو أن يعمل كمعرّف يكاد يكون من المستحيل فلكيًا أن يتصادم مع أي UUID آخر جرى توليده في أي وقت، في أي مكان، من قِبل أي شخص، دون الحاجة لسلطة مركزية توزّع أرقامًا فريدة.
لماذا لا نستخدم رقمًا تصاعديًا فقط؟
معرّف قاعدة البيانات المتزايد تلقائيًا (1، 2، 3...) يعمل بشكل رائع داخل قاعدة بيانات واحدة، لكنه ينهار في اللحظة التي تحتاج فيها إلى تفرّد عبر أنظمة متعددة. إذا ولّدت قاعدتا بيانات منفصلتان «الطلب رقم 4521» بشكل مستقل، ثم احتجت لاحقًا لدمج تلك البيانات، فستحصل على تصادم. تحل UUID هذه المشكلة بتوليدها بشكل مستقل، دون الحاجة لأي تنسيق، بينما تظل فريدة عمليًا. هذا سبب وجود UUID في كل مكان في الأنظمة الموزعة: المفاتيح الأساسية لقواعد البيانات، معرّفات طلبات API، رموز الجلسات، أسماء الملفات، معرّفات التتبع لأحداث التحليلات، وما إلى ذلك.
كيف يُضمن التفرّد فعليًا؟
إنه غير مضمون بمعنى رياضي مطلق، بل مضمون بمعنى عملي، بمعنى «لن يحدث أبدًا». النسخة الأكثر شيوعًا، UUID v4، تُولَّد بالكامل تقريبًا من بتات عشوائية: 122 من 128 بت عشوائية، مع تثبيت الـ 6 بتات المتبقية لتحديده كـ UUID من الإصدار 4. مع هذا القدر من العشوائية، عدد معرّفات UUID التي تحتاج لتوليدها قبل أن تصل لاحتمال 50% لتصادم واحد يبلغ نحو 2.71 كوينتيليون. حتى مع توليد مليار UUID في الثانية، سيستغرق الأمر نحو 85 عامًا للوصول إلى احتمال تصادم واحد في المليار. لأي غرض عملي تقريبًا، هذا يعادل المستحيل.
إصدارات UUID، باختصار
تأتي معرّفات UUID بعدة إصدارات بطرق توليد مختلفة. الإصدار 1 يعتمد على طابع زمني بالإضافة إلى عنوان عتاد الشبكة للحاسوب المولِّد (نادرًا ما يُستخدم اليوم، لأنه قد يسرّب معلومات حول متى وأين تم توليده). الإصدار 4، العشوائي بالكامل تقريبًا، هو الأكثر شيوعًا بفارق كبير في البرمجيات الحديثة لأنه لا يتطلب أي مدخل خاص ولا يحمل أي بيانات وصفية عن أصله. الإصدار 5 يُولَّد بشكل حتمي من مساحة أسماء واسم باستخدام دالة تجزئة، بحيث ينتج المدخل نفسه دائمًا نفس UUID، وهو مفيد عندما تحتاج معرّفًا ثابتًا مشتقًا من بيانات موجودة بدلاً من معرّف عشوائي جديد.
متى تحتاج فعليًا لتوليد واحد
حالات شائعة: تخصيص معرّف فريد لسجل قاعدة بيانات جديد دون انتظار قاعدة البيانات لتوزيع واحد، توليد اسم ملف فريد لتجنب الكتابة فوق ملف موجود، إنشاء مفتاح API أو رمز جلسة لمرة واحدة، أو وسم دفعة من بيانات الاختبار بمعرّف مضمون ألا يتعارض مع بيانات الإنتاج الحقيقية. في أي مكان تحتاج فيه «معرّفًا فريدًا، الآن فورًا، دون أي تنسيق»، يكون UUID عادةً الإجابة الأبسط.