العربية

أدوات المطور · مولد UUID

UUID الإصدارات 1 إلى 8 موضحة: ما هو الإصدار الذي يجب عليك إنشاؤه؟

· خلفية

uuid التشفير متصفح API

ثمانية خيارات للإصدار مصفوفة مع حالات الاستخدام الخاصة بها: التخطيطات المستندة إلى الوقت والاسم والعشوائية والمخصصة
الرسم التوضيحي المتجه الأصلي ToolAcre

تشترك ثمانية إصدارات في تنسيق واحد ولكنها تحل مشكلات مختلفة: ترتيب الوقت أو إمكانية التكرار أو العشوائية أو التخطيطات المخصصة. يشرح هذا المنشور كل منها ويعطي مسار القرار.

تنسيق واحد وثماني وصفات - لماذا يهم الإصدار عند اختيار وظيفة المكتبة

يعرّف المعيار UUID تنسيق 128 بت على أنه ستة وثلاثون حرفًا سداسي عشري مع واصلات. RFC 9562 يحدد ثماني وصفات مميزة - الإصدارات من الأول إلى الثامن - لملء تلك البتات بأنماط ومعاني مختلفة. يحدد الإصدار nibble (الحرف الأول من المجموعة الثالثة) الطريقة التي أنتجت القيمة، ويعمل كتسمية. يعني اختيار الإصدار الخاطئ تخزين معلومات مؤقتة غير ضرورية، أو فقدان ضمانات الطلب لأداء قاعدة البيانات، أو سوء فهم أدوار أمان المعرف. تتناول هذه المقالة كل إصدار، والمشكلة الملموسة التي يحلها، وعندما يواجهها المطورون عمليًا، وتوفر إطار عمل لاتخاذ القرار لاختيار الإصدار المناسب لمتطلبات النظام المحددة لديك.

الإصداران v1 وv6: العقدة الزمنية بالإضافة إلى — التخطيط الأصلي المستند إلى الوقت والنسخة المعاد ترتيبها والتي يتم فرزها بشكل صحيح

يجمع الإصدار 1 بين الطابع الزمني 60 بت ومعرف العقدة (في الأصل عنوان MAC، على الرغم من أن التطبيقات الحديثة تستخدم قيمًا عشوائية لتجنب تسرب معلومات الأجهزة). يسجل الطابع الزمني 100 فواصل زمنية تبلغ نانو ثانية منذ أكتوبر 15، 1582. يمكن لحقل العقدة أن يكشف متى تم إنشاء المعرف ومكان نشأته جغرافيًا، ولهذا السبب تتجنب التطبيقات الحديثة عناوين MAC. يقوم الإصدار 6 بإعادة ترتيب نفس الطابع الزمني ومعلومات العقدة لتحسين إمكانية الفرز عن طريق نقل البتات الزمنية عالية الترتيب إلى المقدمة، مما يجعل معرفات UUID v6 مرتبة بشكل صحيح بترتيب معجمي. إذا كان تطبيقك يحتاج إلى UUIDs التي يتم فرزها بشكل طبيعي حسب وقت الإنشاء مع موقع الفهرس المتميز، فإن الإصدار 6 هو الخيار الحديث.

الإصدار 2: DCE الأمان — المتغير الذي نادرًا ما يستخدم والذي يتضمن معرفات POSIX

نادرًا ما يتم استخدام الإصدار 2 في الأنظمة الجديدة. فهو يقوم بتضمين معرفات المستخدم أو المجموعة POSIX في تخطيط UUID، مما يجعله مفيدًا فقط في البيئات القديمة حيث تحمل هذه المعرفات معنى تنظيميًا. يفترض تصميم الإصدار الثاني نموذجًا حاسوبيًا محددًا (DCE الأمان) وهو أمر غير شائع في الأنظمة الموزعة الحديثة. تقوم معظم المؤسسات بربط UUIDs بالمستخدمين أو المجموعات في طبقة التطبيق الخاصة بهم من خلال عمليات ربط قاعدة البيانات أو جداول البحث، وليس عن طريق تشفير معرف المستخدم في المعرف نفسه. يسهل هذا الفصل بين الاهتمامات تغيير نماذج الترخيص، وترحيل بيانات المستخدم، والحفاظ على مسارات التدقيق. يؤدي تشفير بيانات الاعتماد مباشرة في UUIDs إلى إنشاء اقتران محكم ويجعل الأنظمة أكثر صعوبة في التطور.

الإصداران 3 و5: مستندان إلى الاسم - معرفات حتمية مجزأة من مساحة اسم واسم يحتوي على MD5 أو SHA-1

الإصدارات 3 و5 UUIDs حتمية: نفس مساحة الاسم والاسم ينتجان دائمًا نفس المعرف، وهو مثالي لتمثيل التعيينات المستقرة من البيانات الخارجية. يستخدم الإصدار 3 MD5 والإصدار 5 يستخدم SHA-1 كخوارزميات تجزئة، مما يعكس أعمار كل منها واعتمادها. عند وصول سجل عميل للاستيراد، سيكون الإصدار 5 UUID المشتق من مساحة اسم ثابتة متطابقًا عبر عمليات الاستيراد المتعددة، مما يمنع السجلات المكررة. تعني هذه الحتمية أن UUID قابل للتكرار ويمكن التنبؤ به لأي شخص يعرف مساحة الاسم والمدخلات. تتألق القيمة العملية في سيناريوهات تكامل البيانات: التوفيق بين سجلات العملاء من أنظمة متعددة، ومنع التكرارات في الواردات المتكررة، وتعيين معرفات ثابتة للعناصر.

الإصدار 4: عشوائي — 122 bits من CSPRNG ولا يهم الاختيار الافتراضي عند الطلب

الإصدار 4 هو الخيار الافتراضي عندما لا يكون الطلب مطلوبًا وتريد إنشاء مستقل بدون تنسيق مركزي. يتكون الإصدار 4 UUID من 122 bits من مصدر عشوائي آمن تشفيريًا، مع تعيين ستة بتات على قيم ثابتة (الإصدار nibble 4 وRFC 9562 بتات متغيرة 10). العشوائية هي بيت القصيد: كل استدعاء ينتج قيمة مختلفة، وتظل الاصطدامات غير محتملة على الإطلاق، ولا يلزم وجود حالة خارجية أو تنسيق. إنه الإصدار الذي ينشئه ToolAcre باستخدام crypto.randomUUID() أو crypto.getRandomValues(). هذا الإصدار مناسب لمراجع الكائنات والبيانات غير المنظمة ومعظم الأدوار خارج المفاتيح الأساسية أو سياقات الفرز.

الإصداران 7 و8: وقت يونكس والمخصص - الإصدار الحديث المرتب زمنيًا لمفاتيح قاعدة البيانات وفتحة الهروب للتخطيطات المخصصة

الإصدار 7، الموحد في RFC 9562، يجلب الخصائص الحديثة المرتبة زمنيًا إلى التنسيق UUID. ويستخدم طابعًا زمنيًا يبلغ 48 بت Unix بالمللي ثانية، و12 bits بدقة أقل من المللي ثانية، و62 بتات عشوائية مدمجة. يعد الطابع الزمني Unix بالمللي ثانية جيدًا حتى العام 10889، ​​مما يجعله مناسبًا للأنظمة. يتم فرز النتيجة بشكل صحيح بترتيب معجمي ويتم وضعها في عمود قياسي 128-بت UUID بدون معالجة خاصة أو تحويل ترميز. إذا كان تطبيقك يحتاج إلى معرفات يتم فرزها حسب وقت الإنشاء ضمن التنسيق القياسي UUID، فإن الإصدار 7 هو أفضل الممارسات الحالية. الإصدار 8 عبارة عن مجموعة موحدة للتنسيقات المحددة بالتنفيذ، وهي مفيدة فقط إذا كنت بحاجة إلى تخطيطات بت محددة لا يغطيها الإصداران 1 و7.

مثال عملي - مسار قرار مطبق على ثلاثة سيناريوهات: مرجع API عام، ومفتاح أساسي، ومعرف ثابت للسجلات المستوردة

توضح ثلاثة سيناريوهات واقعية اختيار الإصدار: أولاً، يجب أن يكون مرجع API العام ثابتًا عبر مثيلات API، ويجب ألا يتسرب وقت الإنشاء، ويجب أن يكون هو نفسه عبر عمليات إعادة تشغيل الخادم بحيث تولد المثيلات المختلفة نفس المرجع لنفس المستند. استخدم الإصدار 5 مع مساحة اسم ثابتة واسم مستند. ثانيًا، يجب أن يكون المفتاح الأساسي للجدول المتزايد باستمرار فريدًا، ويجب ألا يتسبب في تجزئة الفهرس، ويجب أن يكون قابلاً للتوليد بواسطة أي مثيل تطبيق دون تنسيق مركزي. استخدم الإصدار 7 للمعرفات القابلة للفرز مع دعم النظام البيئي القياسي UUID. ثالثًا، تحتاج السجلات المؤرشفة التي تتطلب بحثًا مستقرًا إلى معرفات غير قابلة للتغيير.

الوجبات الجاهزة: اختر حسب الخاصية، وليس حسب العادة - يقوم المولد ToolAcre بإنتاج معرفات UUID عشوائية من CSPRNG للمتصفح للحالات التي تتطلب الإصدار 4

يعتمد اختيار الإصدار على تصميم مخططك ومتطلبات النظام، وليس على العرف أو المعرفة. UUID العشوائية (الإصدار 4) هي الافتراضية لأنها لا تتطلب أي حالة أو تنسيق وتنتج معرفات مستقلة مناسبة لمعظم الأدوار. تعمل الإصدارات المرتبة زمنيًا (الإصداران 6 و7) على حل مشكلات منطقة الفهرس على حساب تسرب المعلومات المؤقتة أو متطلبات مزامنة الساعة. تمنع الإصدارات الحتمية (v3، v5) عمليات الاستيراد المكررة وتمكن التعيينات الخارجية المستقرة على حساب القدرة على التنبؤ - يمكن لأي شخص يعرف مساحة الاسم الخاصة بك إعادة حسابها. ToolAcre ينشئ معرفات UUID عشوائية للإصدار 4 من المولد الآمن للتشفير في المتصفح. عندما تحتاج إلى إصدار مختلف، يؤكد الفحص الجيد أن تحليل المعرفات صالح.