مولّد UUID (v4 عشوائي، v7 مرتب زمنياً)
اضغط لتوليد واحد أو عدة UUIDs. استخدم v4 للمعرّفات العشوائية تماماً و v7 للمعرّفات القابلة للفرز زمنياً التي تُرتب طبيعياً حسب وقت الإنشاء — مفيد لمفاتيح قواعد البيانات.
كيف تعمل
متى تستخدم v4 ومتى v7
UUID v4 عشوائي بحت — 122 بت عشوائي مع بتي إصدار/متغير، يعطي حوالي 5.3 × 10³⁶ قيمة ممكنة. اثنان مضمونان أساساً بعدم التصادم أبداً. استخدم v4 في أي مكان لا تحتاج فيه للترتيب، مثل معرفات طلبات API أو معرفات المستخدمين المجهولة.
UUID v7 (RFC 9562، نُشر في 2024) يبدأ بطابع زمني Unix بـ 48 بت بالميلي ثانية متبوعاً بـ 74 بت عشوائي. يُرتبون لكسيكوغرافياً بترتيب الإنشاء، وهو ضخم لأداء قاعدة البيانات — مفاتيح أساسية تُفرز حسب الوقت تعني أن الإدراجات دائماً تذهب إلى نهاية B-tree، لا انقسامات صفحات عشوائية. استخدم v7 لمفاتيح قاعدة بيانات أساسية جديدة.
كيف يعمل هذا المولّد
كل من v4 و v7 يستخدمان crypto.getRandomValues — مصدر العشوائية الآمن للمتصفح، نفس البدائية المستخدمة من HTTPS ومدراء كلمات المرور. v4 يملأ 122 بت عشوائياً. v7 يقسم 48 بت طابع زمني + 74 بت عشوائي بالإضافة إلى علامات الإصدار/المتغير وفقاً لـ RFC.
التوليد يحدث في متصفحك. UUIDs لا تُخزن أو تُنقل. إذا ولّدت 100 UUID v4 فاحتمال التصادم بينها صغير فلكياً — أقل بكثير من احتمال أشعة كونية تقلب البتات في معالجك.
فخاخ UUID الشائعة
UUIDs v4 كمفاتيح قاعدة بيانات أساسية تضر بالأداء مقارنة بالأعداد الصحيحة ذاتية الزيادة لأن القيم العشوائية تسبب انقسامات صفحات B-tree أثناء الإدراج. v7 يصلح هذا — استخدم v7 إذا كنت تريد فوائد UUID بدون ألم الفهرس.
لا تكشف UUIDs للمستخدمين حيث القابلية للتخمين مهمة. UUIDs v4 لديها 122 بت entropy وغير قابلة للتخمين. UUIDs v7 تسرّب وقت الإنشاء، وهو جيد لمعظم الاستخدامات لكن سيء إذا كان وقت الإنشاء حساساً.
UUIDs هي 36 حرف بما في ذلك الشرطات (32 hex + 4 شرطات). تحتل 16 بايت ثنائياً أو 36 بايت نصياً. للأعمدة عالية الكاردينالية جداً، فكر في التخزين كـ BLOB ثنائي / نوع UUID أصلي بدلاً من VARCHAR(36).
أسئلة شائعة
›هل هذه آمنة تشفيرياً؟
نعم. كل من v4 و v7 يستخدمان crypto.getRandomValues، API العشوائية الآمن. v4 لديه 122 بت entropy؛ v7 لديه 74.
›لماذا v7 أفضل لمفاتيح قاعدة البيانات؟
لأن UUIDs v7 تُفرز حسب وقت الإنشاء، الإدراجات دائماً تذهب في نهاية فهرس B-tree بدلاً من مواقع عشوائية. هذا يتجنب انقسامات الصفحات ويحسن throughput الكتابة بشكل كبير.
›هل يمكن أن يتصادم UUIDs؟
نظرياً نعم. مع v4 ستحتاج لتوليد ~10¹⁸ قبل أي خطر تصادم بنسبة 50%. مع v7 مكوّن الوقت يقلل هذا إلى حوالي 2⁷⁴ ضمن نفس الميلي ثانية — لا يزال مستحيلاً عملياً.
›هل UUIDs هي نفسها GUIDs؟
نعم. GUID هو اسم Microsoft لـ UUID. نفس التنسيق، نفس ضمانات التفرد.
›ما هو التنسيق؟
أرقام hex بنمط 8-4-4-4-12 مع شرطات. 32 hex حرف إجمالي + 4 شرطات = 36 حرف. أحرف صغيرة وفقاً لاتفاقية RFC.
›هل أستخدم v1 بدلاً منه؟
v1 يشمل عنوان MAC، وهو تسرب خصوصية. v7 يحل محل v1 للمعرفات المرتبة زمنياً بدون كشف معرفات الأجهزة.
›هل يمكنني توليد v4 في Base64 آمن لـ URL؟
ليس مباشرة هنا. كوّد 16 بايت UUID كـ Base64 آمن لـ URL للحصول على معرّف 22 حرف. مفيد لـ URLs أقصر.
›هل تغادر البيانات متصفحي؟
لا. التوليد يحدث بالكامل في متصفحك.
أدوات ذات صلة
آخر تحديث: