توليد معرفات UUID عشوائية v4
ولّد معرفات UUID فريدة (الإصدار 4) بالعدد الذي تريده لقواعد البيانات والأكواد.
القيم لا تغادر جهازك أبداً
لا شيء يُسجَّل في أي مكان
عشوائية بمستوى المنصة
يعمل في كل متصفح حديث
كيف تعمل
- 1
اختر إصداراً
الرابع، إلا أن يذهب المعرّف إلى فهرس قاعدة بيانات فانظر في السابع.
- 2
اختر العدد
واحداً لاختبار سريع، أو دفعةً لبيانات أولية وحزم اختبار.
- 3
انسخ النتيجة
خذها إلى مخطط أو طلب أو ملف إعدادات أو اختبار.
لماذا تستخدم هذه الأداة
الإصداران الرابع والسابع
عشوائيّ للاستعمال العام، أو مرتَّب بالطابع الزمني حين تصير القيمة مفتاحاً أساسياً.
عشوائية تعموية
مولَّدة من مصدر العشوائية الآمن في المتصفح لا من دالّة شبه عشوائية قابلة للتنبؤ.
توليد بالجملة
معرّف واحد أو ألف، يُنتَج بخطوة واحدة وجاهز للّصق في ملف بيانات أولية.
بشرطات أو بدونها
الصيغة القانونية من ستة وثلاثين محرفاً أو المجرَّدة من اثنين وثلاثين، أيّهما تتوقّعه الوجهة.
لا شيء يُرسَل
تُنتَج القيم في متصفحك، فلا يعرف طرف ثالث أبداً أيّ معرّفات استعملت.
مجاني بلا حساب
بلا تسجيل، وبلا علامة مائية، وبلا حدّ لعدد ما تولّده.
الإصدار يهمّ أكثر مما يدرك معظم الناس
يقول الناس UUID ويعنون الإصدار الرابع، وهو 122 بتّة عشوائية ولا شيء غير ذلك. وهذا هو الافتراضيّ الصحيح، لكنه ليس الإصدار الوحيد وللفروق تبعات. فالإصدار الأول يبني المعرّف من طابع زمني وعنوان عتاد الشبكة في الجهاز، ما يعني أن UUID من الإصدار الأول يفشي بصمت متى أُنشئ، وتاريخياً أيّ جهاز أنشأه — وهذا مقبول داخل نظام وثقيل في أي شيء يراه عميل. أما الإصدار السابع، الذي عُيِّر حديثاً، فيبقي العشوائية ويضع طابعاً زمنياً بالميلي ثانية في البتّات الأولى، فتُرتَّب القيم زمنياً. فإن سبق أن ولّدت UUID دون تفكير في نوعه، فهو الرابع في الغالب الأعمّ، ولمعظم الاستعمالات هذا هو الجواب الصحيح. والاستثناء هو ما يلي.
المعرّفات العشوائية قاسية على فهرس قاعدة البيانات
هذه أخطر حقيقة عملية عن UUID وهي تفاجئ من ينتقل إليها من الأعداد الصحيحة. فالفهرس بنيةٌ مرتَّبة، والبنى المرتَّبة تحبّ القيم التي تصل مرتَّبة. فمتتالية أعداد صحيحة تُلحَق بنهاية الفهرس، فتلمس صفحة واحدة مراراً وتُبقيها في الذاكرة. أما تدفّق UUID من الإصدار الرابع فعشوائيّ بالتصميم، فيحطّ كل إدخال في موضع مختلف، ما يُجبر الفهرس على الكتابة في صفحات متناثرة وشطرها والاحتفاظ بقدر أكبر بكثير من البنية في الذاكرة المؤقتة ليواكب. وعلى جدول كبير يصير الفرق قابلاً للقياس، والعَرَض هو القصة المألوفة عن نظام صار بطيئاً بعد اعتماد مفاتيح UUID. والإصدار السابع موجود لهذا بالضبط: الطابع الزمني في المقدمة يجعل القيم الجديدة تُرتَّب متجاورة، فتبقى الإدخالات محلية والمعرّفات غير قابلة للتخمين.
UUID ليس سرّاً، إلا أن تجعله كذلك عمداً
يختلط هنا ادّعاءان وكلاهما يهمّ. الأول أن UUID من الإصدار الرابع غير قابل للتخمين فعلاً — إذ 122 بتّة عشوائية أبعد بكثير من القوة الغاشمة — لكن بشرط أن تكون العشوائية تعموية. وكثير من الشفرات تولّد UUID من دالّة عشوائية عامة الغرض، وهي سريعة وقابلة للتنبؤ، والمعرّفات من مصدر قابل للتنبؤ يستطيع تعدادها كل من استنتج البذرة. فافحص ما يستعمله مولّدك. والثاني أن الإصدار الرابع، ولو كان مثالياً، معرّفٌ لا تفويض. فاستعمال UUID غير قابل للتخمين رابطَ مشاركة يعمل، ويعني أن الرابط هو كلمة المرور: سيجلس في سجلّ المتصفح، وفي ترويسات المُحيل، وفي سجلّ محادثة، وفي كل بريد أُعيد توجيهه به. وهذا تصميم مقبول لرابط مستند، وغير مقبول لأي شيء يحتاج إبطالاً.
ماذا يقول ضمان التصادم فعلاً
سبب عمل UUID دون تنسيق حجّةٌ احتمالية، وتستحق الأرقام أن تُعرف لتكفّ عن القلق منها. فبـ122 بتّة عشوائية ستحتاج توليد نحو 2.7 كوينتيليون معرّف من الإصدار الرابع قبل أن يبلغ احتمال تطابق أيّ اثنين منها خمسين في المئة. وبمعدل مليون في الثانية يكون ذلك عشرات آلاف السنين، ولهذا تستطيع أنظمة على طرفَي العالم سكّ معرّفات بلا سجلّ مركزيّ وبلا تنسيق أبداً. وما يعتمد عليه الضمان اعتماداً كاملاً هو جودة العشوائية. فمولّد ضعيف أو رديء البذر يُسقط ذلك الرقم بلا أي إنذار، والمعرّفات المكرَّرة في الإنتاج تعود دائماً تقريباً إلى مصدر معيب لا إلى سوء حظّ — وقد شملت حوادث معروفة عدة أجهزةً بذرت مصدر عشوائيتها بالطريقة نفسها عند الإقلاع.
تخزينها يكلّف أكثر مما قد تتوقّع
الـUUID 128 بتّة — ستة عشر بايتاً — لكن الصيغة التي تراها عادةً ستة وثلاثون محرفاً نصياً، لأن التمثيل القانونيّ يكتب كل بايت رقمين ست عشريين ويضيف أربع شرطات. خزّن ذلك سلسلةً نصية فتستعمل ستة وثلاثين بايتاً لكل صفّ بدل ستة عشر، زائد ما تضيفه قاعدة بياناتك لعمود متغيّر الطول، وكل فهرس على ذلك العمود يحمل التضخّم نفسه. وعلى جدول من بضعة آلاف صفّ لا يلاحظ أحد. أما على جدول من مئة مليون، في فهرس عليه أن يبقى في الذاكرة، فهو الفرق بين أن يتّسع وألا يتّسع. ولمعظم قواعد البيانات نوع أصليّ من ستة عشر بايتاً لهذا السبب بالضبط، واستعماله هو القرار الصحيح عادةً. أما تفاصيل التنسيق فثانوية بالمقارنة: الشرطات عرفية لا واجبة، والمقارنة لا تميّز الحالة، والحروف الصغيرة هي المخرجات القانونية.
لماذا يهمّ التوليد المحلي حتى للقيم العشوائية
من الإنصاف أن تسأل ما علاقة الخصوصية برقم عشوائيّ، والجواب أن الرقم يكفّ عن كونه مجهولاً لحظة ارتباطه بشيء. فالمولّد المستضاف يرى كل معرّف يُصدره ويستطيع تسجيله مع عنوان الطالب والوقت. فإن صارت تلك المعرّفات مراجع طلبات أو روابط مشاركة أو مفاتيح واجهات برمجية أو معرّفات قاعدة بيانات في نظامك، فثمة شخص آخر يملك قائمة قيم صالحة وفكرة جيدة عمّا تخصّه. وهذه مخاطرة صغيرة وغير ضرورية إطلاقاً، لأن التوليد المحلي يزيلها كلياً: في متصفحك مصدر عشوائية تعمويّ مدمج، والقيم لا تغادر الصفحة، ويمكنك التأكد من أن لا طلب جرى في تبويب الشبكة بأدوات المطوّر.
أخطاء شائعة يجب تجنّبها
- استعمال UUID من الإصدار الرابع مفاتيحَ أساسية على جدول كبير. القيم العشوائية تبعثر كتابات الفهرس وتفتّت البنية — استعمل الإصدار السابع، فطابعه الزمني المتقدّم يُبقي الإدخالات محلية مع بقائها غير قابلة للتخمين.
- توليد UUID من دالّة عشوائية عامة الغرض. المصدر التعمويّ وحده يجعلها غير قابلة للتخمين؛ والبذرة القابلة للتنبؤ تعني أن مهاجماً يستطيع تعداد المعرّفات.
- معاملة UUID غير قابل للتخمين تفويضاً. رابط مشاركة مبنيّ عليه يعني أن الرابط هو كلمة المرور، والروابط تنتهي في السجلّ وترويسات المُحيل والبريد المعاد توجيهه.
- تخزين UUID سلسلةً من ستة وثلاثين محرفاً على نطاق واسع. القيمة ستة عشر بايتاً؛ والصيغة النصية تزيد على الضِعف في كل صفّ وكل فهرس — ولمعظم قواعد البيانات نوع أصليّ.
- استعمال الإصدار الأول في أي شيء يراه العميل. هو يشفّر وقت الإنشاء وتاريخياً عنوان عتاد الشبكة في الجهاز، وهذا أكثر مما يحتاج معرّفٌ كشفه.
كيف تُقارن
| الجانب | هذه الأداة | مولّدات عبر الإنترنت | استدعاء مكتبة |
|---|---|---|---|
| إرسال القيم أو تسجيلها | لا يحدث أبداً | ممكن | لا |
| الإصدار السابع متاح | نعم | نادراً | بحسب المكتبة |
| عشوائية تعموية | نعم | غير معلنة غالباً | نعم غالباً |
| توليد بالجملة | نعم | أحياناً | نعم |
| يعمل دون فتح مشروع | نعم | نعم | لا |
| السعر | مجاني | مجاني / باقات مدفوعة | مجاني |
المزايا
UUID الإصدار الرابع
الإصدار ذو 122 بتّة عشوائية الذي تعنيه معظم الأنظمة حين تقول UUID.
UUID الإصدار السابع
مسبوق بطابع زمني ومن ثم قابل للترتيب، وهو ما يريده فهرس قاعدة البيانات.
حروف كبيرة أو صغيرة
الصيغة القانونية بحروف صغيرة؛ وبعض الأنظمة تصرّ على الكبيرة، وكلتاهما هنا.
توليد بالجملة
مئات دفعة واحدة، واحد في كل سطر، جاهزة لسكربت بيانات أولية أو عمود جدول.
يستعمل مولّد المنصة التعموي
القيم تأتي من مولّد المتصفح التعموي لا من مولّد عام الغرض.
فوريّ بلا طلب
لا شيء يُجلَب، فالتوليد فوريّ ويعمل والتبويب محمَّل أصلاً.
بلا تثبيت
بلا مكتبة ولا بيئة تشغيل ولا اعتماديات — يعمل على صفحة الويب.
جاهز للعربية وRTL
واجهة كاملة بثماني لغات، منها العربية من اليمين إلى اليسار.
آمن افتراضياً
يُقدَّم عبر HTTPS، بلا تتبّع وبلا طلبات إلى طرف ثالث.
من يستخدمها
المطوّرون
الحصول على معرّف صحيح لحزمة اختبار أو صفّ يدويّ في قاعدة بيانات دون فتح وحدة تحكّم.
مهندسو قواعد البيانات
إنتاج قيم من الإصدار السابع حين يحتاج جدول مفاتيح غير قابلة للتخمين تُفهرَس جيداً رغم ذلك.
مهندسو ضمان الجودة
توليد دفعة من المعرّفات الفريدة لبيانات اختبار بخطوة واحدة.
مكاملو الواجهات البرمجية
إنشاء مفتاح تكرار آمن أو معرّف ارتباط لطلب.
الأسئلة الشائعة
لا. كل شيء يعمل محلياً في متصفحك — نصّك لا يُرفع أو يُخزَّن أو يُشارَك أبداً.
نعم — مجاني تماماً، بلا حساب وبلا حدود.