مولد UUID v4: ابزاری برای تولید شناسههای تصادفی و غیرقابل پیشبینی
این صفحه یک مولد UUID نسخه ۴ (v4) است که به شما امکان میدهد یک یا چند شناسه ۳۶ کاراکتری در قالب استاندارد ۸-۴-۴-۴-۱۲ هگزادسیمال تولید کنید. تعداد شناسهها (تا ۱۰۰ عدد) و ظاهر آنها (حروف بزرگ یا کوچک، با خطفاصله یا بدون آن) تحت کنترل شماست. تمام تولیدات بهصورت لحظهای در مرورگر شما و با استفاده از اعداد تصادفی قوی مرورگر انجام میشود. میتوانید یک شناسه را جداگانه یا همه را یکجا کپی کنید.
چه چیزی این صفحه را متمایز میکند؟
UUID نسخه ۴ از ۱۲۲ بیت تصادفی استفاده میکند و هیچ مهر زمانی درون آن جاسازی نشده است. بنابراین هر مقدار عملاً غیرقابل پیشبینی است و احتمال تصادم (تولید دو مقدار یکسان) بهشدت ناچیز است. برخلاف UUID v7 یا ULID، شناسههای v4 بهطور دلخواه مرتب میشوند و هیچ اطلاعات زمانی ندارند. این ویژگی وقتی از آنها بهعنوان کلید اصلی در پایگاهداده استفاده میکنید، باعث تکهتکه شدن (fragmentation) ایندکسها میشود. همچنین در این صفحه میتوانید ظاهر حروف بزرگ و خطفاصله را تغییر دهید، اما ساختار تصادفی درونی ثابت است. خروجی پیشفرض حروف کوچک با خطفاصله است. تغییر هر گزینه مجموعه شناسهها را دوباره تولید میکند.
ورودیها و خروجیها
ورودیها:
- فرمت (Format): UUID v4 (از بین UUID v4, UUID v7, ULID, NanoID انتخاب میشود). این مقاله تنها به UUID v4 میپردازد.
- تعداد (Count): عددی بین ۱ تا ۱۰۰ (شامل ۱ و ۱۰۰).
- حروف بزرگ (Uppercase): یک کلید روشن/خاموش که در صورت فعال بودن، شناسهها را با حروف بزرگ نمایش میدهد (پیشفرض: خاموش).
- شامل خطفاصله (Include hyphens): یک کلید روشن/خاموش که در صورت فعال بودن، خطفاصلهها را در قالب ۸-۴-۴-۴-۱۲ نگه میدارد (پیشفرض: روشن).
خروجیها:
- شناسههای تولید شده: لیستی از رشتههای UUID v4.
- تعداد شناسهها: عددی که در کنار لیست نمایش داده میشود.
- پیامهای وضعیت:
- "آماده." (حالت اولیه)
- "تولید شد." (پس از تولید)
- "همه کپی شدند!" (پس از کپی همه شناسهها)
قوانین و موارد خاص
- UUID v4 از ۱۲۲ بیت تصادفی در قالب ۳۶ کاراکتری (۳۲ رقم هگزادسیمال + ۴ خطفاصله در صورت فعال بودن خطفاصله) تشکیل شده است.
- احتمال تصادم (تولید دو شناسه یکسان) ناچیز است، اما ترتیب شناسهها دلخواه است و نظم زمانی ندارند.
- تغییر هر یک از پارامترها (تعداد، حروف بزرگ، خطفاصله) بلافاصله مجموعه جدیدی از شناسهها را تولید میکند.
- تعداد باید بین ۱ تا ۱۰۰ باشد؛ مقادیر خارج از این بازه پذیرفته نمیشوند.
- کلیک روی یک شناسه منفرد آن را در کلیپبورد کپی میکند.
- دکمه "کپی همه" همه شناسههای نمایش داده شده را کپی میکند.
- تمام تولیدات بهصورت محلی در مرورگر انجام میشود و هیچ دادهای به سرور ارسال نمیشود.
- اگر قالب را از UUID v4 تغییر دهید، گزینههای حروف بزرگ و خطفاصله ممکن است تغییر کنند (اما این مقاله فقط به UUID v4 میپردازد).
مخاطبان این ابزار چه کسانی هستند؟
- توسعهدهندگانی که به شناسههای یکتا و غیرقابل پیشبینی برای توکنهای امنیتی، شناسه جلسات، یا کلیدهای غیرمتوالی نیاز دارند.
- مدیران پایگاهداده که از معاوضه موجود آگاه هستند: UUID v4 از تصادم جلوگیری میکند اما ممکن است ایندکسها را هنگام استفاده بهعنوان کلید اصلی تکهتکه کند (و ممکن است به جایگزینهای قابل مرتبسازی زمانی مانند ULID یا UUID v7 فکر کنند).
- هرکسی که دادههای آزمایشی، شناسههای خارجی، یا کلیدهای ناشناس تولید میکند، جایی که ترتیب زمانی اهمیتی ندارد و غیرقابل حدس بودن مهم است.
- کاربرانی که میخواهند سریعاً یک دسته از مقادیر UUID v4 (تا ۱۰۰ عدد) تولید کنند و آنها را با حروف بزرگ یا کوچک، با خطفاصله یا بدون آن کپی کنند.
زوایای فنی مهم
۱. ساختار داخلی UUID v4
UUID نسخه ۴ از ۱۲۸ بیت تشکیل شده است، اما تنها ۱۲۲ بیت آن تصادفی است. ۶ بیت باقیمانده برای مشخص کردن نسخه (۴) و نوع (variant) رزرو شده است. دو بیت برای نوع (مقدار 10 باینری) و چهار بیت برای نسخه (0100 برای نسخه ۴). بنابراین نمایش هگزادسیمال نهایی مانند xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx است که در آن 4 رقم بالایی نیمبایت نسخه است و y رقم بالایی نیمبایت نوع (که میتواند 8, 9, a, یا b باشد). این ساختار در استاندارد RFC 4122 تعریف شده است.
۲. کیفیت تصادفی بودن
مرورگرهای مدرن از CSPRNG (مولد اعداد شبهتصادفی رمزنگاریشده) از طریق crypto.getRandomValues() استفاده میکنند. این تابع اعداد تصادفی با کیفیت بالا و مناسب برای کاربردهای امنیتی (مانند توکنها) تولید میکند. همه تولیدات در این صفحه با استفاده از این روش انجام میشود و هیچ دادهای به شبکه ارسال نمیشود.
۳. احتمال تصادم
با ۱۲۲ بیت تصادفی، احتمال تولید دو UUID v4 یکسان بسیار کم است. فرمول تقریبی احتمال حداقل یک تصادم در n شناسه:
P ≈ 1 - exp(-n² / (2 * 2¹²²))
برای n = 10⁹ (یک میلیارد)، احتمال حدود ۰.۰۰۰۰۰۰۰۰۰۲ است. برای مجموعههای کوچک (چند صد تا) این احتمال عملاً صفر است.
۴. تأثیر بر عملکرد پایگاهداده
UUID v4ها بهطور تصادفی توزیع میشوند، بنابراین وقتی بهعنوان کلید اصلی در یک ایندکس B-tree استفاده شوند، باعث تکهتکه شدن زیاد (page splits) میشوند و کارایی نوشتن را کاهش میدهند. برعکس، شناسههای متوالی (مانند auto-increment) یا زمانمحور (UUID v7, ULID) بهصورت ترتیبی نوشته میشوند و ایندکس را فشرده نگه میدارند. بنابراین برای جدولهای پرنوشت، بهتر است از جایگزینهای قابل مرتبسازی زمانی استفاده شود، مگر اینکه غیرقابل پیشبینی بودن اولویت داشته باشد.
۵. مقایسه با شناسههای زمانمحور
- UUID v7: ۴۸ بیت مهر زمانی + ۷۴ بیت تصادفی. قابل مرتبسازی زمانی، ایدهآل برای کلید اصلی در پایگاهداده.
- ULID: ۴۸ بیت مهر زمانی + ۸۰ بیت تصادفی، قابل مرتبسازی با کاراکترهای Crockford's base32.
- NanoID: ۲۱ کاراکتر با ۶۴ بیت تصادفی (با الفبای URL-safe).
UUID v4 برخلاف اینها هیچ نظم زمانی ندارد.
۶. تأثیر کلیدهای حروف بزرگ و خطفاصله
فعال کردن حروف بزرگ فقط نمایش را تغییر میدهد (مثلاً a به A) و تأثیری بر ساختار داخلی ندارد. حذف خطفاصله رشته ۳۶ کاراکتری را به ۳۲ کاراکتر کاهش میدهد، اما همان مقدار بیت تصادفی را حفظ میکند. توجه داشته باشید که برخی سیستمها (مانند وردپرس) از UUID بدون خطفاصله استفاده میکنند.
۷. محاسبه طول بیت و کاراکتر
UUID v4 از ۱۲۸ بیت کل استفاده میکند: ۱۲۲ بیت تصادفی + ۶ بیت ثابت. در نمایش هگزادسیمال، هر نیمبایت (۴ بیت) یک رقم هگز نشان میدهد. بنابراین ۳۲ رقم هگز (۱۲۸ بیت ÷ ۴) تولید میشود. با خطفاصله ۳۶ کاراکتر. اگر خطفاصله حذف شود، ۳۲ کاراکتر داریم. حروف بزرگ و کوچک در هگزادسیمال معادل هستند.
پرسشهای متداول (FAQ)
۱. آیا امکان تولید دو UUID یکسان وجود دارد؟
از نظر نظری بله، اما احتمال آن فوقالعاده کم است. با ۱۲۲ بیت تصادفی، برای ۱۰ تریلیون شناسه احتمال تصادم حدود ۱ در ۱۰۰ میلیارد است. در عمل برای تعداد کم (چند هزار) هرگز اتفاق نمیافتد.
۲. تفاوت UUID v4 با UUID v7 چیست؟
UUID v4 کاملاً تصادفی و غیرقابل پیشبینی است، اما قابل مرتبسازی نیست. UUID v7 شامل مهر زمانی است و میتوان آن را بر اساس زمان مرتب کرد که برای ایندکسهای پایگاهداده مفید است.
۳. چرا وقتی خطفاصله را حذف میکنم طول رشته کم میشود؟
زیرا خطفاصلهها کاراکترهای اضافی هستند که فقط برای خوانایی قرار دارند. حذف آنها تغییری در شناسه اصلی ایجاد نمیکند.
۴. آیا این ابزار از شبکه استفاده میکند؟
خیر. تمام محاسبات درون مرورگر شما و با استفاده از crypto.getRandomValues() انجام میشود. هیچ دادهای به سرور ارسال نمیشود.
۵. حداکثر تعداد تولید همزمان چقدر است؟
تا ۱۰۰ عدد. این محدودیت برای جلوگیری از تأخیر در مرورگر در نظر گرفته شده است.
۶. آیا میتوانم یک شناسه را بهصورت جداگانه کپی کنم؟
بله. با کلیک روی هر شناسه در لیست، آن شناسه به کلیپبورد کپی میشود.
خلاصه
UUID v4 یک استاندارد قدرتمند برای تولید شناسههای تصادفی و یکتا است، اما استفاده از آن بهعنوان کلید اصلی پایگاهداده نیازمند آگاهی از معاوضه عملکردی است. این صفحه ابزاری سریع، امن و کاملاً محلی برای تولید دستهای از این شناسهها فراهم میکند و به شما امکان میدهد قالب خروجی را مطابق نیاز خود سفارشی کنید.