تولیدکننده 🔒 در مرورگر اجرا می‌شود — داده‌ای ارسال نمی‌شود

تولیدکننده UUID

UUID نسخه ۴، ۷، ۱، ۳ و ۵ بسازید — یکی یا هزار تا با هم — و هر UUID را بررسی کنید.

UUIDهای تولیدشده
بررسی UUID

سازنده UUID — ساخت شناسه‌های v4 و v7 و v5 و v1 به‌صورت آنلاین

یک UUID شناسه‌ای ۱۲۸ بیتی است که دو سامانه می‌توانند جدا از هم بسازند و مطمئن باشند هرگز به هم نمی‌خورد. این ابزار رایگان نسخه ۴ (تصادفی)، نسخه ۷ (مرتب بر اساس زمان)، نسخه ۱ (مُهر زمانی و نود) و نسخه‌های ۳ و ۵ (ساخته‌شده از یک نام) را می‌سازد؛ یکی‌یکی یا تا هزار تا با یک کلیک، به شکل خط‌به‌خط، آرایه JSON، CSV یا مقادیر SQL. هر شناسه‌ای را هم در بخش بررسی جای‌گذاری کنید، نسخه و واریانت آن را می‌گوید و مُهر زمانی درون شناسه‌های v1 و v7 را رمزگشایی می‌کند.

به UUID، مخصوصاً در دنیای مایکروسافت، GUID هم می‌گویند. هر دو اصطلاح به یک رشته ۳۶ کاراکتری اشاره دارند: ۳۲ رقم هگزادسیمال در پنج گروه که با خط تیره از هم جدا شده‌اند، مثل f47ac10b-58cc-4372-a567-0e02b2c3d479.

نمودار: بخش‌های UUID نسخه‌ی ۷ با مقدار 01926f3a-7c2b-7d4e-9a1f-3b5c8d2e6f10؛ زمان ۴۸ بیتی به میلی‌ثانیه، رقم نسخه ۷، بیت‌های واریانت و ۷۴ بیت تصادفی.01926f3a-7c2b-7d4e-9a1f-3b5c8d2e6f10نسخهواریانتزمان یونیکس (ms) · 480x01926f3a7c2b = 17284429568432024-10-09 03:02:36.843 UTC12بیت تصادفی · 6248 + 4 + 12 + 2 + 62 = 128
UUID نسخه‌ی ۷ با زمان ساخته‌شدنش به میلی‌ثانیه شروع می‌شود؛ پس شناسه‌های جدید به ترتیب زمان مرتب می‌شوند و با ایندکس دیتابیس خوب کار می‌کنند. اولین رقم گروه سوم نسخه است، اولین رقم گروه چهارم بیت‌های واریانت را دارد و بقیه تصادفی است.

چرا به‌جای شناسه افزایشی از UUID استفاده کنیم

شناسه ترتیبی پایگاه داده را باید یک مرجع مرکزی صادر کند؛ یعنی کلاینت تا وقتی سرور پاسخ ندهد شناسه رکورد را نمی‌داند. UUID این وابستگی را حذف می‌کند. یک اپلیکیشن موبایل می‌تواند آفلاین رکورد بسازد، یک Worker می‌تواند پیش از نوشته شدن سطر به آن ارجاع بدهد و دو دیتاسنتر بدون شماره‌گذاری مجدد ادغام می‌شوند. شناسه‌های ترتیبی اطلاعات هم لو می‌دهند: آدرس /invoice/1042 تقریباً حجم فاکتورهای شما را به رقیب نشان می‌دهد، اما UUID چیزی نمی‌گوید.

نسخه‌های UUID که با آنها روبه‌رو می‌شوید

نسخهروش ساختکاربرد رایج
v1مُهر زمانی به‌همراه شناسه نودسامانه‌های قدیمی؛ اینجا نود بایت‌های تصادفی است و هرگز مک‌آدرس شما نیست
v3 / v5هش MD5 یا SHA-1 از فضای‌نام و یک نامشناسه قطعی: یک فضای‌نام و نام یکسان همیشه یک UUID یکسان می‌دهد
v4۱۲۲ بیت تصادفیانتخاب پیش‌فرض وقتی فقط یک مقدار یکتا لازم دارید
v7مُهر زمانی یونیکس ۴۸ بیتی به‌همراه تصادفکلید دیتابیس: بر اساس زمان ساخت مرتب می‌شود و ایندکس مرتب می‌ماند

روش ساخت و بررسی UUID در همین صفحه

  1. نسخه را انتخاب کنید: v4 برای کار عمومی، v7 برای کلید دیتابیس، v5 یا v3 برای ساختن شناسه از یک نام، و v1 برای قالب‌های قدیمی.
  2. تعداد را تعیین کنید؛ از یک تا هزار.
  3. شکل خروجی را انتخاب کنید: هر خط یکی، آرایه JSON، CSV، یا مقادیر SQL آماده برای INSERT.
  4. اگر مقصد لازم دارد، گزینه حروف بزرگ، بدون خط تیره، آکولاد یا پیشوند urn:uuid: را بزنید و بعد کپی یا دانلود کنید.
  5. هر شناسه‌ای را در بخش بررسی 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.jscrypto.randomUUID()
Pythonimport uuid; uuid.uuid4()
JavaUUID.randomUUID()
C# / .NETGuid.NewGuid()، یا Guid.CreateVersion7() در .NET 9 برای نسخه ۷
PostgreSQLgen_random_uuid()، یا uuidv7() از PostgreSQL 18
MySQLUUID() - دقت کنید که این یک نسخه ۱ زمان‌محور برمی‌گرداند
خط فرمان لینوکس / macOSuuidgen
PowerShell[guid]::NewGuid()

دنبال UUID ماینکرافت هستید؟ آن‌ها را Mojang به هر حساب اختصاص می‌دهد و با نام بازیکن جستجو می‌شوند، نه اینکه ساخته شوند - این ابزار شناسه‌های تصادفی جدید برای سیستم‌های خودتان می‌سازد.

ابزارهای مرتبط

شناسه‌ها معمولاً همراه مقدارهای دیگر می‌آیند. رمزهای امن را با سازنده رمز عبور بسازید، اثر انگشت داده را با سازنده هش بگیرید، فیلد Subject یک توکن را با رمزگشای JWT بخوانید و زمان‌ها را با مبدل تایم‌استمپ یونیکس بررسی کنید.

آموزش‌های مرتبط