المعرف الفريد العالمي (UUID) عبارة عن ملصق 128 بت يستخدم في أنظمة الكمبيوتر لتحديد المعلومات بشكل فريد. تم تصميم UUIDs لتكون فريدة عبر المكان والزمان، مما يسمح بإنشائها بشكل مستقل دون سلطة مركزية، مما يقلل من مخاطر الازدواجية.
تخدم UUIDs أغراضًا مختلفة، بما في ذلك:
تحديد السجلات في قواعد البيانات.-
وضع علامات على الكائنات في الأنظمة الموزعة.-
العمل كمفاتيح أساسية في التطبيقات التي يكون فيها التفرد أمرًا بالغ الأهمية.-
حالات الاستخدام في العالم الحقيقي
- قواعد البيانات: يتم استخدام UUID كمفتاح أساسي في قواعد البيانات العلائقية لضمان التعريف الفريد للسجلات.
- الخدمات المصغرة: تسهيل الاتصال بالخدمة من خلال توفير معرفات فريدة للطلبات والموارد.
- أجهزة إنترنت الأشياء: تحديد الأجهزة بشكل فريد في الشبكة، مما يضمن إمكانية تجميع البيانات من مصادر متعددة دون تعارضات.
مزايا وعيوب استخدام UUID
المزايا:
- التفرد العالمي: من غير المرجح أن تتصادم UUIDs، مما يجعلها مناسبة للأنظمة الموزعة حيث تقوم العقد المتعددة بإنشاء معرفات بشكل مستقل.
- لا توجد سلطة مركزية مطلوبة: يمكن إنشاؤها دون تنسيق، مما يبسط العمليات في البيئات الموزعة.
- قابلية التوسع: تعمل بشكل جيد في الأنظمة التي تتطلب التوسع عبر خوادم أو خدمات متعددة.
العيوب:
- حجم التخزين: تستهلك المعرفات UUID مساحة أكبر (128 بت) مقارنة بالمعرفات الصحيحة التقليدية (عادة 32 بت)، مما قد يؤدي إلى زيادة تكاليف التخزين.
- مشكلات الأداء: يمكن أن تؤدي فهرسة UUIDs إلى انخفاض أداء قاعدة البيانات بسبب عشوائيتها وحجمها، مما يؤدي إلى أوقات استعلام أبطأ مقارنة بالمعرفات المتسلسلة.
- عدم ودية المستخدم: لا يمكن تذكر معرفات UUID بسهولة أو سهلة الاستخدام عند تقديمها في واجهات المستخدم.
المعيار
يتكون التمثيل القياسي لـ UUID من 32 حرفًا سداسيًا عشريًا مقسمة إلى خمس مجموعات، مفصولة بواصلات، باتباع التنسيق 8-4-4-4-12، مما يؤدي إلى إجمالي 36 حرفًا (32 حرفًا أبجديًا رقميًا بالإضافة إلى 4 واصلات) .
يمكن تصور تنسيق UUID على النحو التالي:
xxxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
أين:
- M يشير إلى إصدار UUID.
يشير - N إلى المتغير، مما يساعد في تفسير تخطيط UUID.
مكونات UUID
- TimeLow: 4 بايت (8 أحرف سداسية عشرية) تمثل الحقل المنخفض للطابع الزمني.
- TimeMid: 2 بايت (4 أحرف سداسية عشرية) تمثل الحقل الأوسط للطابع الزمني.
- TimeHighAndVersion: 2 بايت (4 أحرف سداسية عشرية) تتضمن رقم الإصدار والحقل العالي للطابع الزمني.
- ClockSequence: 2 بايت (4 أحرف سداسية عشرية) تستخدم للمساعدة في تجنب الاصطدامات، خاصة عندما يتم إنشاء معرفات UUID متعددة في تتابع سريع أو إذا تم ضبط ساعة النظام.
- العقدة: 6 بايت (12 حرفًا سداسيًا عشريًا)، تمثل عادةً عنوان MAC الخاص بعقدة الإنشاء.
أنواع UUIDs
-
الإصدار 1 : معرفات UUID المستندة إلى الوقت والتي تستخدم مزيجًا من الطابع الزمني الحالي وعنوان MAC لعقدة الإنشاء. يضمن هذا الإصدار التفرد عبر المكان والزمان.
-
الإصدار 2 : مشابه للإصدار 1 ولكنه يتضمن معرفات المجال المحلي؛ ومع ذلك، فهو أقل استخدامًا بسبب قيوده.
-
الإصدار 3 : معرفات UUID المستندة إلى الاسم تم إنشاؤها باستخدام تجزئة MD5 لمعرف مساحة الاسم والاسم.
-
الإصدار 4 : معرفات UUID تم إنشاؤها عشوائيًا والتي توفر عشوائية عالية وتفردًا، مع عدد قليل فقط من البتات المحجوزة للإصدار.
الإصدار 5: مثل الإصدار 3 ولكنه يستخدم SHA-1 للتجزئة، مما يجعله أكثر أمانًا من الإصدار 3.
المتغيرات
يحدد الحقل المتغير في UUID تخطيطه وتفسيره. تتضمن المتغيرات الأكثر شيوعًا ما يلي:
- البديل 0: محجوز للتوافق مع الإصدارات السابقة لـ NCS.
- البديل 1: التخطيط القياسي المستخدم لمعظم معرفات UUID.
- البديل 2: يستخدم لمعرفات UUID الأمنية لـ DCE، وهي أقل شيوعًا.
- البديل 3: محجوز للتعريفات المستقبلية.
مثال
بالنسبة إلى
الإصدار 4، قد يبدو UUID كما يلي:
550e8400-e29b-41d4-a716-446655440000
xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
هنا:
يشير 41d4 إلى أنه الإصدار 4.-
يمثل a7 المتغير، في هذه الحالة، المتغير الشائع "Leach-Salz".-
كيف يتم حساب UUIDs
الإصدار 1 (معتمد على الوقت):
الطابع الزمني هو عادة عدد الفواصل الزمنية التي تبلغ 100 نانو ثانية منذ 15 أكتوبر 1582 (تاريخ إصلاح التقويم الغريغوري).-
العقدة هي عنوان MAC الخاص بالجهاز الذي يقوم بإنشاء UUID.-
يساعد تسلسل الساعة على ضمان التفرد عندما يتغير وقت الساعة (على سبيل المثال، بسبب إعادة تشغيل النظام).-
-
الإصدار 3 والإصدار 5 (يعتمد على الاسم):
يتم دمج مساحة الاسم (مثل مجال DNS) مع اسم (مثل مسار ملف أو عنوان URL) وتجزئته.-
يتم بعد ذلك تنظيم التجزئة (MD5 للإصدار 3، SHA-1 للإصدار 5) في تنسيق UUID، مما يضمن تعيين حقول الإصدار والمتغير بشكل صحيح.-
الإصدار 4 (عشوائي):
يتم إنشاء أرقام عشوائية أو شبه عشوائية لـ 122 بت من UUID.-
يتم تعيين حقول الإصدار والمتغير وفقًا لذلك، مما يضمن الامتثال لمعايير UUID.-
مثال لحساب UUIDv4
الخطوة 1: إنشاء 128 بت عشوائي
لنفترض أننا قمنا بإنشاء القيمة العشوائية التالية ذات 128 بت:
11001100110101101101010101111010101110111001011101010110110101111011010011011110100100101111001011
الخطوة 2: تطبيق إصدار ومتغير UUIDv4
-
الإصدار : استبدل البتات 12-15 (الحرف الرابع) بـ 0100 (لإصدار UUID 4).
الأصل: 1100 يصبح 0100 → القيمة المحدثة في هذا الموضع.
المتغير: استبدل البتات 6-7 من البايت التاسع بـ 10 (لمتغير RFC 4122).
الأصل: 11 يصبح 10 → القيمة المحدثة في هذا الموضع.
الخطوة 3: التنسيق إلى النظام الست عشري
تحويل الثنائي 128 بت إلى 5 مجموعات سداسية عشرية:
مجموعة 32 بت: 11001100110101101101010101111010 → ccda55ba
-
مجموعة 16 بت: 1011101101101110 → b76e
-
مجموعة 16 بت: 0100010101000101 → 4545 (مع 0100 للإصدار 4)-
مجموعة 16 بت: 1010110111110010 → adf2 (مع 10 للمتغير)-
مجموعة 48 بت: 11010011011110100100101111001011 → d39d25cb
-
الخطوة 4: دمج المجموعات
سيبدو UUID النهائي كما يلي:
ccda55ba-b76e-4545-adf2-d39d25cb