Utilia

مولد UUID

مولد UUID مجاني للإصدارين 4 و7. أنشئ حتى 1000 معرّف دفعةً واحدة، بأحرف كبيرة أو دون شرطات، ثم انسخها أو نزّلها كملف ‎.txt.

الإصدار

كيف تستخدم مولد UUID

  1. اختر الإصدار: v4 (عشوائي) لمعرّفات عشوائية بالكامل، أو v7 (مرتّب زمنيًا) لمعرّفات مرتّبة بحسب وقت الإنشاء.
  2. أدخل العدد الذي تحتاجه من المعرّفات، من 1 إلى 1000.
  3. يمكنك اختياريًا تفعيل أحرف كبيرة، أو إلغاء الشرطات إذا كان النظام الذي ستستخدمها فيه يتوقّع الصيغة المضغوطة المكوّنة من 32 حرفًا.
  4. انقر توليد، ثم انسخ القائمة إلى الحافظة أو نزّلها كملف .txt فيه معرّف UUID واحد في كل سطر.

ما هو UUID؟

‏UUID (اختصار Universally Unique Identifier، أي المعرّف الفريد عالميًا)، ويُعرف أيضًا باسم GUID في عالم Microsoft، قيمة بطول 128 بت تُستخدم لتعريف شيء ما دون الحاجة إلى جهة مركزية توزّع الأرقام. يُكتب عادةً في 32 رقمًا ست عشريًا موزّعة على خمس مجموعات تفصلها شرطات وفق النمط 8-4-4-4-12، مثل f47ac10b-58cc-4372-a567-0e02b2c3d479. أول رقم في المجموعة الثالثة هو الإصدار، وأول رقم في المجموعة الرابعة يرمّز المتغيّر (variant): ‏8 أو 9 أو a أو b في معرّفات UUID القياسية.

ولأن أي حاسوب يستطيع إنشاء UUID باستقلالية تامة مع احتمال تصادم يكاد يكون معدومًا، تُستخدم هذه المعرّفات على نطاق واسع مفاتيحَ أساسية في قواعد البيانات، ومعرّفات للطلبات والتتبّع في السجلّات، وأسماءً للملفات المرفوعة، ومفاتيح عدم تكرار (idempotency) لواجهات API، ومعرّفات في الأنظمة الموزّعة حيث تُنشئ عدة خوادم سجلات في الوقت نفسه.

الإصدار 4 مقابل الإصدار 7

يُعرّف كلا الإصدارين في RFC 9562، المعيار الصادر عام 2024 الذي حلّ محلّ RFC 4122.

UUID v4 عشوائي بالكامل تقريبًا: 122 بت من أصل 128 تأتي من مولّد عشوائي، وتحمل الـ6 بتات الباقية الإصدار والمتغيّر. لا يكشف شيئًا عن وقت إنشائه أو مكانه. واحتمال التصادم ضئيل جدًا لدرجة أنك تحتاج إلى توليد نحو 103 تريليونات معرّف v4 لبلوغ احتمال واحد في المليار لتكرار واحد. اختر v4 عندما تريد معرّفات مبهمة لا تحمل أي معلومة.

UUID v7 يبدأ بطابع زمني يونكس بطول 48 بت بالملّي ثانية، يليه الإصدار والمتغيّر و74 بت عشوائية. ونتيجةً لذلك، تأتي معرّفات v7 المولّدة لاحقًا بعد تلك المولّدة سابقًا عند الترتيب. وهذا مهم جدًا لقواعد البيانات: فمفاتيح v4 العشوائية تُدرج في مواضع متفرّقة من فهرس B-tree، ما يسبّب انقسام الصفحات وضعف استغلال الذاكرة المؤقتة، بينما تُضاف مفاتيح v7 قرب النهاية، تمامًا كعدد صحيح ذاتي الزيادة. اختر v7 للمفاتيح الأساسية ولكل ما تريد ترتيبه بحسب وقت الإنشاء. وتذكّر أنه يمكن قراءة وقت الإنشاء من معرّف v7، فتجنّبه عندما تكون هذه المعلومة الزمنية حساسة.

العشوائية والأمان

تستخدم هذه الأداة مولّد الأرقام العشوائية الآمن تشفيريًا في المتصفح (واجهة Web Crypto API)، لا Math.random() التي لم تُصمَّم لتكون غير قابلة للتنبؤ. تُولَّد المعرّفات محليًا على جهازك ولا تُرسل إلى خادم ولا تُسجَّل فيه، فلا يرى أحد غيرك القيم التي تنشئها.

ومع ذلك، فمعرّف UUID معرّفٌ لا سرّ. لا تعتمد على UUID غير قابل للتخمين وحده لحماية مستند خاص أو رابط لإعادة تعيين كلمة المرور؛ بل ادمجه مع مصادقة سليمة ومدة صلاحية.

خيارات التنسيق

الصيغة القياسية بأحرف صغيرة مع شرطات، ويوصي RFC 9562 بالإخراج بأحرف صغيرة. تعرض بعض الأنظمة، مثل أدوات Windows القديمة أو بعض قواعد البيانات، معرّفات GUID بأحرف كبيرة، وتفضّل بعض صيغ التخزين الشكل المكوّن من 32 حرفًا دون شرطات. لا يغيّر هذان الخياران إلا التمثيل النصي؛ فالقيمة الأساسية ذات الـ128 بت تبقى نفسها، ومعظم المحلّلات تقبل كل هذه الصيغ.

الأسئلة الشائعة

هل تفرّد معرّفات UUID مضمون؟

ليس مضمونًا بشكل قاطع، لكن احتمال التصادم مع بتات عشوائية مولّدة بشكل صحيح منخفض لدرجة يمكن تجاهله عمليًا. تأتي المخاطر الحقيقية من مولّدات عشوائية معيبة أو من نسخ القيم يدويًا، لا من الصيغة نفسها.

هل أستخدم UUID v4 أم v7 مفتاحًا أساسيًا في قاعدة البيانات؟

في معظم المشاريع الجديدة، يُعدّ v7 الخيار الأفضل: فهو يبقي الفهارس مضغوطة والإدراج سريعًا لأن القيم تصل بترتيب تصاعدي تقريبًا. استخدم v4 إن كنت لا تريد أن يظهر وقت الإنشاء في المعرّف.

هل GUID هو نفسه UUID؟

نعم. ‏GUID هو الاسم الذي تستخدمه Microsoft للصيغة نفسها ذات الـ128 بت. ومعرّف GUID من .NET أو SQL Server قابل للتبادل مع UUID من المنصّات الأخرى.

هل يمكن أن يتصادم معرّفا v7 أُنشئا في الملّي ثانية نفسها؟

يشتركان في بادئة الطابع الزمني نفسها، لكن الـ74 بت العشوائية المتبقية تجعل التصادم مستبعدًا للغاية. وداخل الملّي ثانية الواحدة، لا يُضمن أن يطابق ترتيبهما النسبي ترتيب الإنشاء الفعلي.

لماذا الشرطات اختيارية؟

الشرطات موجودة لتسهيل القراءة فقط. حذفها يعطي سلسلة ست عشرية من 32 حرفًا تمثّل القيمة نفسها تمامًا، وهي صيغة تفضّلها بعض واجهات API وصيغ التخزين.