از کدام نسخه UUID استفاده کنم؟+−
برای بیشتر شناسههای عمومی، از v4 استفاده کنید - تصادفی است و هیچ اطلاعاتی حمل نمیکند. اگر UUID قرار است کلید اصلی یا شاخص پایگاه داده باشد، معمولاً v7 بهتر است زیرا بهترتیب زمانی مرتب میشود که شاخصها را سریع نگه میدارد. زمانی که میخواهید ورودی یکسان (مانند یک URL یا نام) همیشه همان UUID را تولید کند از v5 استفاده کنید؛ v1 را فقط زمانی استفاده کنید که واقعاً به برچسب زمانی جاسازیشده در شناسه نیاز دارید و توجه داشته باشید که ممکن است زمان ایجاد را فاش کند.
تفاوت v3 و v5 چیست؟+−
هر دو قطعی هستند: با فضاینام و نام یکسان، همیشه همان UUID را تولید میکنند. تنها تفاوت تابع هش است - v3 از MD5 و v5 از SHA-1 استفاده میکند. از آنجا که MD5 از نظر رمزنگاری شکسته شده، v5 انتخاب توصیهشده برای هر چیز جدید است؛ v3 عمدتاً برای سازگاری با سیستمهای قدیمیتر وجود دارد.
چرا v7 بهترتیب زمانی مرتب میشود؟+−
یک UUID نسخه v7 پیش از بیتهای تصادفی با یک برچسب زمانی یونیکس ۴۸ بیتی بر حسب میلیثانیه شروع میشود، بنابراین وقتی UUID ها بهصورت رشتههای ساده (یا بایت) مقایسه شوند، آنهایی که زودتر ساخته شدهاند پیش از آنهایی که بعداً ساخته شدهاند مرتب میشوند. UUID های تصادفی v4 چنین ساختاری ندارند، که میتواند شاخصهای پایگاه داده را تکهتکه کند زیرا مقادیر تصادفی جدید در سراسر بازه کلید درج میشوند نه فقط در انتها.
آیا UUID های تولیدشده در اینجا از نظر رمزنگاری تصادفیاند؟+−
بله. v4 و بخشهای تصادفی v1 و v7 از crypto.getRandomValues در Web Crypto API استفاده میکنند - یک تولیدکننده عدد تصادفی امن از نظر رمزنگاری که در مرورگر شما تعبیه شده، نه Math.random(). هیچچیزی روی سرور تولید یا بهجایی ارسال نمیشود.
احتمال برخورد دو UUID تصادفی نسخه ۴ چقدر است؟+−
این احتمال بهطور کیهانی پایین است. یک UUID نسخه ۴ دارای ۱۲۲ بیت تصادفی است (۶ بیت برای مشخص کردن نسخه و نوع ثابت هستند) که حدود ۵.۳ × ۱۰^۳۶ مقدار ممکن ایجاد میکند. حتی اگر به مدت ۱۰۰ سال، هر ثانیه یک میلیارد UUID تولید شود، احتمال بروز هرگونه برخورد همچنان کمتر از یک در میلیارد باقی میماند - به همین دلیل است که به نسخه ۴ بهعنوان یک شناسه یکتا بدون نیاز به یک رجیستری مرکزی اعتماد میشود.
آیا UUID همان GUID است؟+−
در عمل، بله - GUID (شناسه یکتای جهانی) نامی است که مایکروسافت برای همان قالب شناسه ۱۲۸ بیتی تعریفشده توسط استاندارد UUID (RFC 4122) به کار میبرد. برخی محیطها آن را با حروف بزرگ یا داخل آکولاد ({...}) مینویسند، اما مقدار و ساختار زیربنایی یکسان است، بنابراین UUID تولیدشده در اینجا نیز یک GUID معتبر محسوب میشود.