تولید UUID در نسخههای مختلف از v1 تا v7 و مقادیر ویژه (NIL/MAX) برای کاربردهای مختلف.
مرور کلی نسخههای UUID
UUID دارای چندین نسخه است که هر کدام ویژگیهای متفاوتی دارند:
• v1: مبتنی بر زمان و شناسه گره، منظم اما ممکن است اطلاعات را فاش کند
• v3: مبتنی بر نام و نامفضا، با استفاده از هش MD5
• v4: کاملاً تصادفی، پرکاربردترین نسخه
• v5: مبتنی بر نام و نامفضا، با استفاده از هش SHA-1، امنتر از v3
• v6: نسخه بهبودیافته v1، بخش زمان به ترتیب بزرگترین بایت، مناسبتر برای مرتبسازی
• v7: نسخه جدید مبتنی بر زمانمهر یونیکس، ترکیبی از ترتیب زمانی و تصادفی
چگونه نسخه مناسب UUID را انتخاب کنیم
بر اساس سناریوی استفاده، مناسبترین نسخه را انتخاب کنید:
• نیاز به امنیت: v4 (تصادفی) یا v5 (نام مبتنی بر SHA-1) را انتخاب کنید
• نیاز به مرتبسازی: v6 یا v7 (مبتنی بر زمان و آسان برای مرتبسازی) را انتخاب کنید
• نیاز به قطعیت: v3 یا v5 (ورودی یکسان خروجی یکسان تولید میکند) را انتخاب کنید
• نیاز به عملکرد: v1 (سرعت تولید بالا) را انتخاب کنید
• مقادیر ویژه: NIL (همه صفر) یا MAX (همه F) برای موارد مرزی
تصادفی در مقابل قطعی
UUID v4 کاملاً تصادفی است و برای اکثر سناریوهای کاربردی مناسب است. v3 و v5 قطعی هستند، نام و نامفضای یکسان همیشه UUID یکسانی تولید میکنند، مناسب برای مواردی که نیاز به نگاشت سازگار دارند. v1، v6 و v7 شامل اطلاعات زمانی هستند و در شرایط خاص دارای ترتیب هستند.
زمانمندی و ترتیب
v1، v6 و v7 همگی شامل اطلاعات زمانی هستند اما به روشهای مختلف پردازش میشوند. v6 مشکل مرتبسازی زمانی v1 را بهبود بخشیده است، v7 از زمانمهر یونیکس استفاده میکند تا ترتیب زمانی سادهتری ارائه دهد. اگر نیاز به UUID دارید که بر اساس زمان تولید مرتبشده باشد، v6 و v7 انتخابهای بهتری هستند.
ملاحظات امنیتی
v1 ممکن است زمان تولید و اطلاعات گره (آدرس MAC) را فاش کند. v4 کاملاً تصادفی است و بهترین انتخاب برای سناریوهای حساس به حریم خصوصی است. v3 از هش MD5 استفاده میکند که امنیت کمتری نسبت به SHA-1 در v5 دارد. NIL و MAX مقادیر ثابتی هستند و نباید در سناریوهای امنیتی که نیاز به یکتایی دارند استفاده شوند.
کاربردهای UUID
UUID عمدتاً در سناریوهایی استفاده میشود که نیاز به شناسههای یکتا در سطح جهانی دارند: سیستمهای توزیعشده، کلیدهای اصلی پایگاه داده، شناسههای جلسه، نام فایلها، توکنهای API و غیره. انتخاب نسخه مناسب میتواند عملکرد، امنیت و سازماندهی دادهها را بهینه کند.