تولیدکننده UUID
UUID نسخه ۴، ۷، ۱، ۳ و ۵ بسازید — یکی یا هزار تا با هم — و هر UUID را بررسی کنید.
سازنده UUID — ساخت شناسههای v4 و v7 و v5 و v1 بهصورت آنلاین
یک UUID شناسهای ۱۲۸ بیتی است که دو سامانه میتوانند جدا از هم بسازند و مطمئن باشند هرگز به هم نمیخورد. این ابزار رایگان نسخه ۴ (تصادفی)، نسخه ۷ (مرتب بر اساس زمان)، نسخه ۱ (مُهر زمانی و نود) و نسخههای ۳ و ۵ (ساختهشده از یک نام) را میسازد؛ یکییکی یا تا هزار تا با یک کلیک، به شکل خطبهخط، آرایه JSON، CSV یا مقادیر SQL. هر شناسهای را هم در بخش بررسی جایگذاری کنید، نسخه و واریانت آن را میگوید و مُهر زمانی درون شناسههای v1 و v7 را رمزگشایی میکند.
به UUID، مخصوصاً در دنیای مایکروسافت، GUID هم میگویند. هر دو اصطلاح به یک رشته ۳۶ کاراکتری اشاره دارند: ۳۲ رقم هگزادسیمال در پنج گروه که با خط تیره از هم جدا شدهاند، مثل f47ac10b-58cc-4372-a567-0e02b2c3d479.
چرا بهجای شناسه افزایشی از UUID استفاده کنیم
شناسه ترتیبی پایگاه داده را باید یک مرجع مرکزی صادر کند؛ یعنی کلاینت تا وقتی سرور پاسخ ندهد شناسه رکورد را نمیداند. UUID این وابستگی را حذف میکند. یک اپلیکیشن موبایل میتواند آفلاین رکورد بسازد، یک Worker میتواند پیش از نوشته شدن سطر به آن ارجاع بدهد و دو دیتاسنتر بدون شمارهگذاری مجدد ادغام میشوند. شناسههای ترتیبی اطلاعات هم لو میدهند: آدرس /invoice/1042 تقریباً حجم فاکتورهای شما را به رقیب نشان میدهد، اما UUID چیزی نمیگوید.
نسخههای UUID که با آنها روبهرو میشوید
| نسخه | روش ساخت | کاربرد رایج |
|---|---|---|
| v1 | مُهر زمانی بههمراه شناسه نود | سامانههای قدیمی؛ اینجا نود بایتهای تصادفی است و هرگز مکآدرس شما نیست |
| v3 / v5 | هش MD5 یا SHA-1 از فضاینام و یک نام | شناسه قطعی: یک فضاینام و نام یکسان همیشه یک UUID یکسان میدهد |
| v4 | ۱۲۲ بیت تصادفی | انتخاب پیشفرض وقتی فقط یک مقدار یکتا لازم دارید |
| v7 | مُهر زمانی یونیکس ۴۸ بیتی بههمراه تصادف | کلید دیتابیس: بر اساس زمان ساخت مرتب میشود و ایندکس مرتب میماند |
روش ساخت و بررسی UUID در همین صفحه
- نسخه را انتخاب کنید: v4 برای کار عمومی، v7 برای کلید دیتابیس، v5 یا v3 برای ساختن شناسه از یک نام، و v1 برای قالبهای قدیمی.
- تعداد را تعیین کنید؛ از یک تا هزار.
- شکل خروجی را انتخاب کنید: هر خط یکی، آرایه JSON، CSV، یا مقادیر SQL آماده برای INSERT.
- اگر مقصد لازم دارد، گزینه حروف بزرگ، بدون خط تیره، آکولاد یا پیشوند
urn:uuid:را بزنید و بعد کپی یا دانلود کنید. - هر شناسهای را در بخش بررسی UUID جایگذاری کنید تا اعتبار و محتوایش خوانده شود.
کدام نسخه را انتخاب کنیم
اگر دلیل خاصی ندارید v4 را بردارید: کاملاً تصادفی است، هیچ فرادادهای حمل نمیکند و پیشفرض تقریباً همه کتابخانههاست. وقتی شناسه قرار است کلید اصلی یک جدول پرترافیک باشد v7 را بردارید؛ مُهر زمانی میلیثانیهای اول میآید، پس ردیفهای تازه بهجای پخششدن در ایندکس، ته آن مینشینند و مقادیر بهصورت رشته ساده هم بهترتیب زمانی مرتب میشوند. اگر یک ورودی همیشه باید یک شناسه ثابت بدهد — مثلاً شناسهای که از یک URL یا نام مشتری ساخته میشود — سراغ v5 بروید؛ v3 همان ایده با MD5 قدیمی است و فقط برای سازگاری به کار میآید. v1 بیشتر برای خواندن دادههای قدیمی است: زمان ساخت و بهطور سنتی مکآدرس دستگاه را در خود دارد.
دستهها اینجا یکنواختاند: هزار UUID نسخه ۷ را با یک کلیک بسازید، باز هم به ترتیب ساختهشدن مرتب میمانند، چون دوازده بیت بعد از فیلد نسخه بهجای نویز یک شمارنده دارند. UUID نیل — همه صفر — هم در فهرست هست، چون جاینگهدار متعارف «بدون مقدار» است.
بخش بررسی چه چیزی نشان میدهد
هر شناسهای را در بخش بررسی UUID جایگذاری کنید؛ با خط تیره یا بی آن، با آکولاد یا با پیشوند urn:uuid:. ابزار قالب را تأیید میکند، نسخه و واریانت را نام میبرد و شکل استاندارد و هگز خام را نشان میدهد. برای مقدار v1 یا v7 مُهر زمانی درونی را به تاریخ خوانا به وقت UTC تبدیل میکند؛ معمولاً سریعترین راه فهمیدن اینکه یک رکورد کِی ساخته شده. برای v1 بایتهای نود را هم چاپ میکند و میگوید بیت مالتیکست آنها را تصادفی نشان میدهد یا یک مکآدرس واقعی. مقدار سالم با UUID معتبر علامت میخورد و هر نسخه سطر مخصوص خودش را اضافه میکند: قابل مرتبسازی برای v7، آنتروپی برای v4 (۱۲۲ بیت تصادفی و هیچ چیز دیگر) و ساختهشده از برای v3 و v5، چون یک فضای نام و یک نام همیشه همان UUID را میسازند. اگر واریانت NCS یا رزروشده برای آینده نشان داده شود، معمولاً یعنی آن مقدار اصلاً بهعنوان یک UUID استاندارد ساخته نشده، هرچند شکلش درست است.
UUID هر روز کجا به کار میآید
- کلید اصلی در پایگاههای داده توزیعشده و سامانههایی که میان دستگاهها همگامسازی میکنند.
- شناسههای همبستگی و درخواست که یک فراخوانی را در چند میکروسرویس و چند فایل لاگ دنبال میکنند.
- کلیدهای Idempotency که اجازه میدهند یک پرداخت یا فراخوانی API بدون اجرای دوباره تکرار شود.
- نام فایل برای آپلودها تا دو کاربر بتوانند
photo.jpgبفرستند بدون آنکه فایل هم را بازنویسی کنند. - شناسه نشست، دستگاه و نصب در اپلیکیشنهای موبایل و دسکتاپ.
- شناسه پیام و رویداد در صفها، Webhookها و سامانههای رویدادمحور.
آیا ممکن است دو UUID یکسان شوند
در تئوری بله، در عمل نه. یک UUID نسخه ۴ شامل ۱۲۲ بیت تصادفی است، یعنی حدود ۵.۳ در ۱۰ به توان ۳۶ مقدار ممکن. باید یک قرن تمام، ثانیهای میلیاردها شناسه بسازید تا تصادم محتمل شود؛ چیزی که هیچ برنامهای به آن نزدیک نمیشود. خطر واقعی ریاضی نیست، بلکه استفاده از منبع تصادف ضعیف است. این ابزار بهجای Math.random از crypto.getRandomValues یعنی مولد امن رمزنگاری مرورگر استفاده میکند.
نکتههای عملی پیش از انتخاب UUID
- فضای ذخیرهسازی: ۱۶ بایت به شکل باینری و ۳۶ کاراکتر به شکل متن. تا جای ممکن از ستون بومی UUID یا BINARY(16) بهجای VARCHAR استفاده کنید.
- ایندکس: مقدارهای تصادفی نسخه ۴ در درخت B پراکنده میشوند و جدولهای بزرگ را قطعهقطعه میکنند. برای جدولهای پرترافیک نسخه ۷ یا یک کلید ترتیبی جداگانه را در نظر بگیرید.
- بزرگی و کوچکی حروف: قرارداد بر حروف کوچک است، اما مقایسه باید بدون حساسیت به حروف انجام شود چون بعضی سامانهها خروجی بزرگ میدهند.
- آکولاد: ابزارهای ویندوز معمولاً GUID را داخل
{...}میگذارند؛ پیش از ذخیره حذفشان کنید. - آدرس اینترنتی: UUID همانطور که هست برای URL امن است و به کدگذاری درصدی نیاز ندارد.
ساختهشده در مرورگر شما
هر مقدار بهصورت محلی ساخته میشود و هیچجا فرستاده نمیشود، بنابراین شناسههایی که برای سامانههای داخلی میسازید خصوصی و فقط مال خودتان میمانند.
ساخت UUID در کد: جاوااسکریپت، پایتون، جاوا، C#، SQL و خط فرمان
وقتی شناسه را داخل برنامه لازم دارید نه از یک صفحه وب، هر پلتفرم رایجی یک تولیدکننده دارد. فراخوانیهای زیر، جز مواردی که مشخص شده، یک UUID تصادفی نسخه ۴ میسازند.
| پلتفرم | یک خط |
|---|---|
| JavaScript / Node.js | crypto.randomUUID() |
| Python | import uuid; uuid.uuid4() |
| Java | UUID.randomUUID() |
| C# / .NET | Guid.NewGuid()، یا Guid.CreateVersion7() در .NET 9 برای نسخه ۷ |
| PostgreSQL | gen_random_uuid()، یا uuidv7() از PostgreSQL 18 |
| MySQL | UUID() - دقت کنید که این یک نسخه ۱ زمانمحور برمیگرداند |
| خط فرمان لینوکس / macOS | uuidgen |
| PowerShell | [guid]::NewGuid() |
دنبال UUID ماینکرافت هستید؟ آنها را Mojang به هر حساب اختصاص میدهد و با نام بازیکن جستجو میشوند، نه اینکه ساخته شوند - این ابزار شناسههای تصادفی جدید برای سیستمهای خودتان میسازد.
ابزارهای مرتبط
شناسهها معمولاً همراه مقدارهای دیگر میآیند. رمزهای امن را با سازنده رمز عبور بسازید، اثر انگشت داده را با سازنده هش بگیرید، فیلد Subject یک توکن را با رمزگشای JWT بخوانید و زمانها را با مبدل تایماستمپ یونیکس بررسی کنید.