نکات کلیدی
- 01یکی یا تا 100 UUID را یکیباره تولید کنید — ایدهآل برای fixtureهای test، داده seed و پیکربندی.
- 02UUID v4 کاملاً تصادفی است؛ UUID v7 یک تمبر زمانی میلیثانیه برای مرتبسازی زمانشناختی در پایگاه داده تعبیه میکند.
- 03هر UUID با استفاده از Web Crypto API مرورگر تولید میشود — بدون fallback تضعیفشده Math.random().
- 04کوچک/بزرگ را تبدیل کنید، تیرهها را برداشت کنید یا قوسهای فلزی اضافه کنید تا محیط دقیق خود را مطابقت دهند.
UUIDها چیست و چرا مهم هستند
UUID (Universally Unique Identifier)، گاه GUID نامیده میشود، یک شناسه 128-بیتی است که برای جهانی فریاد بیتاریخ بدون هماهنگی مرکزی طراحی شده است. پایگاههای داده، APIها، سیستمهای رویداد و برنامههای توزیعشده UUIDها را برای اختصاص IDها به رکوردها، اشیاء و رویدادها بدون نیاز به یک شمارش خودکار مشترک یا دور سفر به سوی دنباله پایگاه داده استفاده میکنند.
UUID متعدد وجود دارد. نسخه 4 کاملاً تصادفی است — انتخاب معمول برای IDهای عاممنظوری. نسخه 7، یک استاندارد جدیدتر، یک تمبر زمانی میلیثانیهای دقیق در بایتهای اول تعبیه میکند تا IDهای تولیدشده به ترتیب زمانشناختی مرتب شوند. این سپتخت بهطور درامآتیک کارایی insertion را در B-tree database indexes بهبود میبخشد، جایی که UUID تصادفی تقسیمهای صفحه پرهزینه را ایجاد میکند.
چگونه UUID تولید کنید
- 01
v4 یا v7 را انتخاب کنید
UUID v4 را برای یک شناسه کاملاً تصادفی یا UUID v7 اگر UUIDهای مرتبشدهاز طریق زمان برای primary key پایگاه داده نیاز دارید انتخاب کنید.
- 02
مقدار را تنظیم کنید
لغزنده را بکشید یا عدد را تایپ کنید برای تولید بین 1 و 100 UUID در یک دسته واحد.
- 03
فرمت را سفارشی کنید
کوچککاری یا بزرگکاری را تبدیل کنید، تیرهها را فعال یا غیرفعال کنید (xxxxxxxx-xxxx-...)، و اختیاریاً هر UUID را در قوسهای فلزی بپوشانید ({...}) برای مطابقت با فرمتی که زبان یا فریمورک شما انتظار دارد.
- 04
کپی یا دانلود کنید
برای قرار دادن تمام لیست بر روی clipboard خود یا دانلود گروه به عنوان فایل .txt برای استفاده در fixtureهای test یا اسکریپتهای seed بر روی Copy All کلیک کنید.
گزینههای فرمت UUID در یک نگاه
اکوسیستمهای متفاوت نمایندگی کمی متفاوت از همان مقدار 128-بیتی را انتظار دارند.
- 01Standard با تیرهها: 550e8400-e29b-41d4-a716-446655440000 (فرمت canonical RFC 4122).
- 02بدون تیرهها: 550e8400e29b41d4a716446655440000 (معمول در برخی پایگاههای داده و کلیدهای Redis).
- 03بزرگکاری: 550E8400-E29B-41D4-A716-446655440000 (در برخی Microsoft و Java environments استفاده میشود).
- 04قوسهای فلزی: {550e8400-e29b-41d4-a716-446655440000} (فرمت Microsoft GUID، در .NET و COM استفاده میشود).
- 05تمام فرمتها همان مقدار 128-بیتی را نمایندگی میکند — یکی را انتخاب کنید که سیستم شما انتظار دارد.
رمزگرافمحفوظ و کاملاً محلی
هر UUID با استفاده از crypto.randomUUID (v4) یا crypto.getRandomValues (v7) تولید میشود — Web Crypto API درون هر مرورگر مدرن ساختهشده. بدون Math.random()، بدون seed ضعیف و بدون سرور درگیر. ژنراتور بدون اتصال کار میکند یک بار صفحه بارگذاری شد.
هیچ چیز منتقل یا ذخیره نمیشود. تب را ببندید و UUIDها گم میشوند مگر اینکه آنها را ذخیره کردید. Handytool مقادیر تولیدشده را ثبت نمیکند یا حسابی لازم ندارد.
سوالات متداول ژنراتور UUID
UUID چیست؟
UUID (Universally Unique Identifier) یک مقدار 128-بیتی است که برای منحصربهفرد بودن جهانی بدون هماهنگی مرکزی طراحی شده است. UUIDها روش استاندارد برای اختصاص IDها به رکوردهای پایگاه داده، منابع API و رویدادها در سیستمهای توزیعشده هستند.
آیا باید UUID v4 یا UUID v7 را استفاده کنم؟
v4 را برای یک ID کاملاً تصادفی هنگام عدم نیاز برای مرتبسازی استفاده کنید. v7 را به عنوان primary key پایگاه داده استفاده کنید — تمبر زمانی تعبیهشده insertها را پیدرپی میکند، کارایی B-tree index را بهطور قابلتوجهی در مقیاس بهبود میبخشد.
چقدر احتمال UUID برخورد است؟
عملاً غیرممکن. UUID v4 تصادفی دارای 2^122 مقدار ممکن است. شما نیاز به تولید درباره 2.7 quintillion UUIDها برای شانس 1 در میلیارد برخورد داشته باشید.
آیا UUIDهای تولیدشده رمزگرافمحفوظ هستند؟
بله. ژنراتور از Web Crypto API مرورگر (crypto.randomUUID یا crypto.getRandomValues) استفاده میکند، نه Math.random() ضعیفتر. UUID v4 برای استفاده به عنوان session IDها یا tokenهای کوتاهمدت محفوظ است.
آیا میتوانم UUID v7 را برای security tokenها استفاده کنم؟
احتیاطاً. UUID v7 تمبر زمانی creation را تعبیه میکند، که زمانی که تولید شد آشکار میکند. برای tokenهای بلندمدت یا حساس، v4 یا فرمت توکن اختصاصی را ترجیح دهید که اطلاعات زمانی را نشت نمیکند.
آیا UUIDها به سرور ارسال میشوند؟
نه. هر UUID به صورت محلی با استفاده از crypto API مرورگر تولید میشود. هیچ چیز آپلود، ثبت یا ذخیره نمیشود.