ما هو UUID؟ شرح معرف فريد عالمياً
إجابة سريعة
UUID = 128 بت، 36 حرفاً (32 hex + 4 واصلات). v4 عشوائي، احتمال التضارب ≈ 0. استخدم crypto.randomUUID() أو مولّد UUID المجاني — يولّد v4 في متصفحك.
مقدمة
UUID (معرف فريد عالمياً) هو رقم 128 بت يُمثل كـ 8-4-4-4-12 سداسي عشري. احتمال تضارب اثنين من UUID v4 العشوائية هو 1 في 2^122 — عملياً صفر. مدعوم في جميع لغات البرمجة. crypto.randomUUID() متاح في المتصفحات الحديثة.
خطوة بخطوة
-
افهم بنية UUID
UUID عبارة عن 128 بت، يتم عرضها كـ 32 رقمًا سداسيًا عشريًا في 5 مجموعات: 8-4-4-4-12، مفصولة بواصلات (على سبيل المثال، 550e8400-e29b-41d4-a716-446655440000). يشير الرقم الثالث عشر إلى الإصدار (4 للإصدار 4)، ويشير الرقم السابع عشر إلى المتغير.
-
تعرف على إصدارات UUID
الإصدار 1: يعتمد على الوقت (الطابع الزمني + عنوان MAC) - مرتب بالوقت ولكنه يتسرب من الهوية. الإصدار 3: يعتمد على الاسم باستخدام تجزئة MD5. الإصدار 4: عشوائي — الأكثر شيوعًا، ولا توجد مخاوف تتعلق بالخصوصية. الإصدار 5: يعتمد على الاسم باستخدام تجزئة SHA-1. الإصداران 6 و7: تم ترتيبهما بالوقت مع خصوصية محسنة على الإصدار 1.
-
فهم احتمالية الاصطدام
يحتوي UUID v4 على 2^122 قيمة محتملة. احتمال الاصطدام بين 103 تريليون UUID هو 50٪. بالنسبة للاستخدام العملي (ملايين المعرفات)، يكون احتمال التصادم صفرًا فعليًا — يمكنك إنشاء UUIDs بشكل مستقل دون تنسيق.
-
استخدم UUIDs بشكل مناسب
استخدم الإصدار 4 لجميع حالات الاستخدام تقريبًا (معرفات قاعدة البيانات، ومعرفات الطلب، والرموز المميزة للجلسة). استخدم الإصدار 7 إذا كنت بحاجة إلى معرفات مرتبة حسب الوقت لموقع قاعدة البيانات. تجنب الإصدار 1 في السياقات الحساسة للأمان - فهو يتضمن طابعًا زمنيًا وعنوان MAC.
أمثلة
UUID الإصدار 4 (عشوائي)
مدخل: تم إنشاؤها باستخدام crypto.getRandomValues
الإخراج: 550e8400-e29b-41d4-a716-446655440000
UUID الإصدار 1 (معتمد على الوقت)
مدخل: الطابع الزمني + عنوان MAC
الإخراج: a3bbf0ee-d6e4-11ed-a5b3-3c9703e8b4a1
لا شيء UUID
مدخل: All zeros
الإخراج: 00000000-0000-0000-0000-000000000000
المشاكل الشائعة
- استخدام Math.random() لمعرفات UUID — ليس آمنًا من الناحية التشفيرية. استخدم crypto.getRandomValues() أو crypto.randomUUID() في المتصفحات.
- تخزين UUID كسلاسل - سلسلة UUID هي 36 بايت؛ تم تخزينه كنوع UUID (16 بايت) وهو أكثر كفاءة. استخدم النوع UUID الأصلي في قواعد البيانات عندما يكون ذلك متاحًا.
- استخدام الإصدار 1 في سياقات حساسة للأمان — يتضمن الإصدار 1 طابعًا زمنيًا وعنوان MAC، مما قد يؤدي إلى تسرب معلومات حول متى وأين تم إنشاؤه. استخدم الإصدار 4 لعدم الكشف عن هويته.
- بافتراض أن UUIDs فريدة حقًا - فهي فريدة من نوعها من الناحية العملية (احتمال التصادم لا يكاد يذكر)، ولكنها ليست فريدة من نوعها رياضيًا.
نصائح
- استخدم UUID الإصدار 4 لجميع حالات الاستخدام تقريبًا — فهو عشوائي، وليس لديه أي مخاوف تتعلق بالخصوصية، وتدعمه جميع قواعد البيانات الحديثة.
- استخدم crypto.randomUUID() في المتصفحات الحديثة لمولد v4 مدمج بدون مكتبة.
- قم بتخزين UUIDs كنوع UUID/GUID في قواعد البيانات (16 بايت) بدلاً من السلاسل (36 بايت) لتحسين أداء التخزين والفهرس.
- استخدم منشئنا UUID لإنشاء UUIDs على الفور في متصفحك - بدون اشتراك، خاص تمامًا.