تخطَّ إلى المحتوى الرئيسي
Tooletto

مولّد UUID

أنشئ معرِّفات UUID عشوائية — الإصدار 4 للاستخدام العام، أو الإصدار 7 لمعرِّفات مُرتَّبة زمنيًا تُفهرَس بكفاءة في قاعدة بيانات. أنتج واحدًا أو ألفًا في آن واحد، كل ذلك محليًا.

  • الملفات لا تغادر جهازك أبدًا
  • مجاني، بدون تسجيل
  • بدون علامات مائية
  • يعمل دون اتصال بعد التحميل
Loading tool…

كيفية استخدام مولّد UUID

  1. 1

    اختر إصدارًا

    v4 لمعرِّفات عشوائية عامة، v7 عندما ستكون المعرِّفات مفاتيح أساسية لقاعدة بيانات.

  2. 2

    حدّد الكمية

    أنشئ من واحد حتى ألف في آن واحد.

  3. 3

    انسخ أو نزّل

    انسخ القائمة إلى حافظتك أو نزّلها كملف نصي.

ما يحله UUID فعليًا

UUID معرِّف من 128 بت مُصمَّم لإنشائه بشكل مستقل بواسطة أي عدد من الأنظمة المنفصلة، في أي وقت، دون أي سلطة مركزية تُنسِّق وتُسلِّم الرقم المتاح التالي، بينما يحمل ضمانًا إحصائيًا ساحقًا بأن قيمتين مُنشَأتين لن تتصادما أبدًا. هذا مختلف جوهريًا عن معرِّف عدد صحيح متزايد تلقائيًا، الذي يتطلب قاعدة بيانات واحدة لتتبع وتسليم الرقم التالي بالتسلسل — يمكن إنشاء UUID على جوال دون اتصال شبكة، في دالة بلا خادم، أو عبر ألف نسخة من خدمة صغيرة متوازية في آن واحد، دون حاجة لأي تنسيق بينها على الإطلاق، لأن مجرد حجم فضاء الأرقام يجعل التصادم العرضي مستبعَدًا فلكيًا بغض النظر عن عدد ما يُنشأ بشكل مستقل.

لماذا v4 وv7 كلاهما "عشوائي" لكنهما يحلان مشكلتين مختلفتين

يملأ UUID الإصدار 4 أساسًا كل الـ128 بت ببيانات عشوائية تشفيريًا، مما يجعل كل قيمة مُنشَأة غير متوقَّعة تمامًا ولا تُعطي أي دليل على الإطلاق حول متى أُنشئت أو بأي ترتيب نسبي لأي UUID v4 آخر — بالضبط الخاصية المرغوبة لشيء مثل رمز أمان، حيث ستكون القابلية للتنبؤ نفسها ثغرة. UUID الإصدار 7، المُقنَّن مؤخرًا حديثًا في RFC 9562 (2024)، يُضحِّي عمدًا ببعض تلك العتامة: يضع طابعًا زمنيًا بدقة الميلي ثانية في البتات الأولى، لذا UUID v7 مُنشَأ لاحقًا يُرتَّب دائمًا بعد واحد أُنشئ سابقًا، بينما تبقى البتات المتبقية عشوائية ويستحيل تخمينها بقدر تلك في v4. الاثنان ليسا تصميمين متنافسين حيث أحدهما ببساطة "أفضل" — يتبادلان نفس العشوائية الأساسية مقابل خاصية مختلفة اعتمادًا على ما إذا كان الترتيب أو عدم القابلية للتنبؤ الموحَّد هو ما يهم فعليًا لحالة استخدام معينة.

لماذا تتباطأ قاعدة بيانات بمفاتيح أساسية عشوائية مع نموها

فهرس قاعدة بيانات يدعم مفتاحًا أساسيًا يُخزَّن عادةً كشجرة B، بنية تعمل بشكل أفضل عندما تُدرَج قيم جديدة في نهاية أو قرب نهاية الترتيب المُرتَّب الموجود — وهذا بالضبط كيف يتصرف مفتاح عدد صحيح متزايد تلقائيًا تقليدي. مفتاح أساسي UUID v4، بكونه عشوائيًا بشكل موحَّد، يُدرَج في موضع عشوائي فعليًا داخل تلك البنية المُرتَّبة في كل مرة، مما يُجبر قاعدة البيانات على تقسيم وإعادة موازنة صفحات فهرس متناثرة عبر الشجرة بأكملها بشكل متكرر بدلًا من مجرد الإضافة في النهاية. على نطاق صغير هذه الزيادة غير مرئية؛ على نطاق واسع، بملايين الصفوف، تصبح مصدرًا حقيقيًا وقابلًا للقياس لتجزئة الفهرس وكتابات أبطأ — بالضبط المشكلة التي وُحِّد الطابع الزمني الأولي لـUUID v7 قياسيًا تحديدًا لحلها، بما أنه يسمح لـUUID بالحفاظ على معرِّفات فريدة يستحيل تخمينها بينما لا يزال يُدرَج بترتيب متسلسل تقريبًا.

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

ما الفرق بين UUID v4 وv7؟

v4 عشوائي تمامًا. v7 يضع طابعًا زمنيًا بالميلي ثانية في بتاته الأولى، لذا تُرتَّب المعرِّفات المُنشَأة لاحقًا بعد الأقدم. كلاهما يستحيل تخمينه عمليًا بالتساوي؛ v7 ببساطة يتضح أنه مُرتَّب أيضًا.

أيهما يجب أن أستخدمه لمفتاح أساسي لقاعدة بيانات؟

v7. تُفرِّق مفاتيح v4 العشوائية الإدراجات عبر شجرة B بأكملها، مما يُجزِّئها ويُبطئ الكتابات كثيرًا على نطاق واسع. تُضاف مفاتيح v7 بالترتيب، لذا تبقى الإدراجات متسلسلة — هذا سبب توحيد v7 قياسيًا عام 2024.

هل يمكن أن يتطابق UUID اثنان أبدًا؟

ممكن رياضيًا، غير عملي فعليًا. UUID v4 له 122 بت عشوائيًا؛ ستحتاج إنشاء حوالي 2.7 × 10^18 قبل أن يصبح التصادم محتملًا. للمقارنة، هذا معرِّفات UUID أكثر من حبات الرمل على الأرض.

هل تُنشأ بأمان؟

نعم. تستخدم `crypto.getRandomValues`، المصدر العشوائي التشفيري لنظام تشغيلك، لا `Math.random`. هذا مهم إذا استُخدِم UUID أبدًا كرمز صلاحية — رابط مشاركة، عنوان URL لإلغاء اشتراك، مفتاح إعادة تعيين كلمة مرور.

هل UUID وGUID نفس الشيء؟

نعم. GUID هو اسم Microsoft لنفس المعرِّف من 128 بت. الفرق الوحيد الذي ستجده هو الصيغة: تُحيط أدوات Microsoft غالبًا بها أقواسًا معقوفة وتستخدم أحرفًا كبيرة، وكلا الصيغتين يمكن لهذه الأداة إنتاجهما.

مهام شائعة لأداة مولّد UUID