مولّد UUID — v4 وv7

اختر الإصدار (v4 العشوائي أو v7 المرتّب زمنيًا) والعدد، لتحصل على معرّفات UUID مبنية على مصدر العشوائية التشفيري في متصفحك. تدعم الصفحة الأحرف الكبيرة وإزالة الشرطات، ولا شيء يغادرها.

طريقة الاستخدام

  1. اختر الإصدار — v4 للاستخدام العام، وv7 عندما يلزم ترتيب القيم بوقت الإنشاء (مفاتيح قواعد البيانات).
  2. حدّد العدد (حتى 100) وخيارات التنسيق (أحرف كبيرة، بلا شرطات).
  3. انسخ المعرّفات واحدًا واحدًا، أو استخدم «نسخ الكل» لقائمة مفصولة بأسطر.

يملأ v4 مئة واثنين وعشرين بِتًا من crypto.getRandomValues لا من Math.random، فالقيم آمنة من التنبؤ والتصادم.

يضع v7 طابع الوقت (مللي ثانية يونكس) في أول 48 بِتًا، فيصبح الترتيب الأبجدي هو ترتيب الإنشاء — مناسب للمفاتيح الأساسية.

بالتفصيل

ما هو UUID

المعرّف الفريد الشامل UUID هو معرّف من 128 بِتًا يُكتب 32 خانة سداسية عشرية مقسمة 8-4-4-4-12: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx، ومعياره الحالي RFC 9562.

جوهره التفرد دون جهة إصدار مركزية: معرّفات تُنشأ على أي خادم أو جهاز يمكن جمعها لاحقًا في قاعدة بيانات واحدة دون تصادم.

الفرق بين v4 وv7

v4 عشوائي بالكامل (122 بِتًا). لا تحمل القيمة أي معلومات، فلا يُستدل منها على وقت الإنشاء ولا ترتيبه — مناسب للمعرّفات المكشوفة خارجيًا حيث تهم استحالة التخمين.

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

المقابل أن v7 يكشف وقت إنشائه. حيث يكون ذلك تسريبًا، استخدم v4.

احتمال التصادم

فضاء v4 العشوائي هو 2¹²² ≈ 5.3 × 10³⁶. مليار معرّف في الثانية لمئة سنة يُبقي احتمال تصادم واحد دون واحد في المليون (بحساب مفارقة عيد الميلاد).

عمليًا، تصادم UUID يعني مولّد عشوائية معطّلًا لا سوء حظ، ولهذا لا يجوز توليد UUID من مصدر متوقع مثل Math.random. تستخدم هذه الأداة crypto.getRandomValues فقط.

قواعد الكتابة — الأحرف الكبيرة والشرطات

يحدد RFC 9562 الإخراج بأحرف صغيرة معيارًا، ويطلب من القارئ قبول الأحرف الكبيرة أيضًا. أي أن A1B2… وa1b2… هما المعرّف نفسه — وحّد الحالة قبل المقارنة.

الشرطات فواصل للعين البشرية فحسب. حيث تكون الأحرف ثمينة — أعمدة قواعد البيانات وعناوين URL وأسماء الملفات — تُستخدم صيغة 32 حرفًا بلا شرطات (خيار «إزالة الشرطات» في هذه الأداة). أما التخزين نفسه فالأفضل فيه 16 بايت ثنائية (نوع uuid في PostgreSQL) بدل سلسلة من 36 حرفًا.

بعض الأنظمة، كترميز GUID القديم لدى Microsoft، تحيط القيمة بأقواس {…} — القيمة واحدة والتغليف مختلف.

ماذا عن v1 وv5

v1 يجمع الوقت مع عنوان MAC للجهاز. انكشاف الجهاز المولِّد صار مشكلة خصوصية، وv7 يقدم قابلية الفرز نفسها من دونها.

v3/v5 ليسا عشوائيين أصلًا — إنهما يجزّئان اسمًا (MD5 وSHA-1)، فالمدخل نفسه يعطي المعرّف نفسه دائمًا. مفيدان حين تحتاج معرّفًا حتميًا لعنوان URL مثلًا — أقرب إلى حاسبة منه إلى مولّد.

لذا لا يحتاج المولّد على الإنترنت عمليًا إلا v4 وv7: معرّفات عشوائية من v4، ومعرّفات قابلة للفرز من v7 — وبهما تُغطى كل الحالات تقريبًا.

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

أيهما أستخدم: v4 أم v7؟

إن لم تكن متأكدًا فاختر v4 — المعرّف العشوائي القياسي الذي يعمل في كل مكان. أما إذا وجب أن تترتب القيم بوقت الإنشاء، كمفاتيح قواعد البيانات، فاختر v7.

هل يمكن أن يتطابق معرّفان؟

نظريًا نعم، عمليًا لا. يحمل v4 مئة واثنين وعشرين بِتًا عشوائيًا — توليد مليار معرّف في الثانية لمدة قرن يُبقي احتمال تصادم واحد أقل بكثير من واحد في المليون.

هل تُرفع المعرّفات المولّدة إلى أي مكان؟

لا. تُبنى بمولّد التشفير في المتصفح دون أي طلب شبكة، وتختفي عند مغادرة الصفحة.

أدوات ذات صلة