دليل

مولد UUID: دليل شامل

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

ما هو UUID؟

UUID (المعرف الفريد عالمياً) هو رقم 128 بت يستخدم لتحديد المعلومات بشكل فريد في أنظمة الكمبيوتر. يتم كتابة UUIDs عادة كسلسلة من 32 رقماً سداسي عشري، معروض في خمس مجموعات مفصولة بواصلات: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. الخاصية المميزة لـ UUIDs هي تفردها. عند توليدها بشكل صحيح، فإن احتمال أن يتم إنشاء نفس UUID مرتين هو ضئيل جداً بحيث يعتبر مستحيلاً عملياً. هذا يسمح لأنظمة متعددة بإنشاء معرفات بشكل مستقل دون خطر الاصطدامات. على عكس معرفات قاعدة البيانات المتزايدة تلقائياً (1، 2، 3، ...) التي تتطلب تنسيقاً مركزياً، يمكن إنشاء UUIDs بواسطة أي نظام في أي وقت. وهذا يجعلها مثالية للأنظمة الموزعة، وتطبيقات الهاتف المحمول التي تنشئ سجلات دون اتصال بالإنترنت، والخدمات المصغرة التي تحتاج إلى معرفات مستقلة. المساحة الكلية لـ UUID ضخمة: 2^128 قيمة ممكنة (حوالي 340 تريليون تريليون). للمنظور، إذا قمت بإنشاء مليار UUID كل ثانية، فسيستغرق الأمر أكثر من 10 مليارات سنة قبل أن يكون لديك فرصة 50٪ لاصطدام واحد. في الاستخدام العملي، الاصطدامات غير مهمة أساساً. تم توحيد UUIDs في RFC 4122، الذي يحدد خمسة إصدارات مختلفة، كل منها بخصائص وحالات استخدام مختلفة. فهم هذه الإصدارات يساعدك على اختيار النوع المناسب من UUID لتطبيقك.

إصدارات UUID

هناك عدة إصدارات من UUID، كل منها يستخدم طريقة توليد مختلفة. الاختيار الصحيح يعتمد على متطلباتك المحددة. UUID الإصدار 1 (القائم على الوقت) يجمع بين الطابع الزمني الحالي وعنوان MAC للجهاز. هذا يضمن التفرد عبر الزمان والمكان ويسمح بفرز زمني. ومع ذلك، فإن V1 يكشف معلومات - يمكنك استخراج وقت الإنشاء وعنوان MAC، مما يشكل مخاوف الخصوصية. تجنب V1 عندما تحتاج إلى عدم الكشف عن هوية أو عندما تكون عناوين MAC الفريدة غير متاحة. UUID الإصدار 3 و 5 (القائمة على الاسم) توليدية بشكل حتمي من مساحة اسم واسم. يستخدم V3 MD5 (مهمل)، بينما يستخدم V5 SHA-1 (مفضل). بالنظر إلى نفس مساحة الاسم والاسم، ستحصل دائماً على نفس UUID. هذا مفيد عندما تحتاج إلى معرفات متسقة لنفس المدخلات، مثل إنشاء UUIDs من عناوين URL أو أسماء النطاقات. UUID الإصدار 4 (عشوائي) هو الأكثر استخداماً. يتم إنشاؤه بالكامل من أرقام عشوائية (أو شبه عشوائية) باستثناء بضع بتات تحدد الإصدار. V4 بسيط - لا حاجة لطوابع زمنية أو مساحات أسماء أو معلومات نظام. فقط قم بتوليد 122 بت عشوائياً، وقم بتعيين بضع بتات نسخة/متغير، وانتهيت. استخدم V4 عند عدم وجود متطلبات خاصة. UUID الإصدار 6 و 7 (التحديثات الحديثة) تعالج قيود V1. V6 هو V1 مع إعادة ترتيب حقول الطابع الزمني للفرز المعجمي الأفضل. V7 يستخدم طابع زمني Unix بالملي ثانية بالإضافة إلى بيانات عشوائية، مما يوفر خصائص فرز زمني مع أمان أفضل من V1. V7 ممتاز لمفاتيح قاعدة البيانات الأولية حيث تريد UUIDs ولكنك تحتاج أيضاً إلى أداء إدراج جيد. UUID الإصدار 8 (مخصص) يسمح بتطبيقات مخصصة مع الحفاظ على توافق تنسيق UUID القياسي. استخدم V8 عندما تحتاج إلى منطق توليد متخصص يتناسب مع البنية التحتية القائمة على UUID. بالنسبة لمعظم التطبيقات، يعد UUID V4 الخيار الآمن - بسيط وآمن وعملي عالمياً. استخدم V7 إذا كنت بحاجة إلى خصائص الفرز. استخدم V5 للمعرفات الحتمية من الأسماء. تجنب V1 ما لم تكن لديك احتياجات محددة تبرر مخاوف الخصوصية.

استخدام UUIDs في قواعد البيانات

يعد استخدام UUIDs كمفاتيح أولية في قواعد البيانات موضوعاً مثيراً للجدل مع مفاضلات يجب على كل مطور فهمها. الفوائد الرئيسية لـ UUIDs في قواعد البيانات كبيرة. أولاً، يمكنك إنشاء معرفات على جانب العميل قبل إدراج قاعدة البيانات. هذا يبسط منطق التطبيق - لا حاجة لانتظار رد قاعدة البيانات لمعرفة معرف السجل الجديد. يمكن لتطبيقات الهاتف المحمول إنشاء سجلات دون اتصال بالإنترنت والمزامنة لاحقاً دون تضارب المعرفات. ثانياً، UUIDs آمنة عالمياً بدون تنسيق. في أنظمة موزعة مع قواعد بيانات متعددة، يمكن لكل قاعدة بيانات إنشاء UUIDs بشكل مستقل دون خطر الاصطدامات. دمج البيانات من مصادر مختلفة يصبح تافهاً - لا تضارب في المعرفات. ثالثاً، UUIDs تمنع تعداد المعرفات. مع المعرفات المتزايدة تلقائياً، يمكن للمهاجمين تخمين المعرفات الصالحة (محاولة 1، 2، 3، ...) أو استنتاج معلومات العمل (المستخدم 500 مقابل المستخدم 50000). UUIDs لا تكشف عن أي معلومات وغير قابلة للتخمين. ومع ذلك، UUIDs لها عيوب الأداء. معرفات الأعداد الصحيحة المتسلسلة المتزايدة تلقائياً (1، 2، 3) تدرج بكفاءة لأنها تلحق بنهاية الفهرس. UUIDs، كونها عشوائية، تسبب انقسامات صفحات الفهرس وتجزئة، مما يؤدي إلى إبطاء الإدراجات وزيادة استخدام القرص. متطلبات التخزين أكبر. UUID 128 بت يستهلك 16 بايت مقابل 4-8 بايتات للأعداد الصحيحة. في جدول مليون صف، هذا 8-12 ميجابايت إضافية فقط للمفتاح الأساسي. ولكن مع مئات الملايين من الصفوف، يصبح الفرق كبيراً، خاصة عندما تتضمن المفاتيح الخارجية أيضاً UUIDs. حجم الفهرس يتضرر أيضاً. الفهارس الأكبر تعني ذاكرة تخزين مؤقت أقل كفاءة وأداء استعلام أبطأ. قد لا تناسب الفهارس التي كانت ستناسب الذاكرة مع معرفات الأعداد الصحيحة مع UUIDs. UUID V7 يخفف من العديد من مشاكل الأداء هذه. من خلال تضمين طابع زمني في البتات الأكثر أهمية، فإن V7 UUIDs قابلة للفرز تقريباً زمنياً. الإدراجات الجديدة تلحق بمعظمها، مما يقلل من انقسامات الصفحات. إذا كنت تريد UUIDs في قاعدة البيانات، فكر بشدة في V7. استراتيجية هجينة تستخدم معرفات أعداد صحيحة داخلياً (للمفاتيح الأولية والأجنبية، الأداء) و UUIDs خارجياً (للواجهات البرمجية العامة، الأمان). هذا يوفر كلا من الأداء والأمان على حساب الإدارة الإضافية.

جرب الأداة

مولد UUID

مولد UUID

اعرف المزيد

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

مولد UUID

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