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

تولید UUID v7

UUIDهای نسخه ۷ بسازید که بر اساس زمان ساخت مرتب می‌شوند؛ انتخابی ایدئال برای کلید اصلی پایگاه‌داده.

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

تولید UUID v7 مرتب بر اساس زمان

UUID v7 بهترین ویژگی‌های دو دنیا را ترکیب می‌کند: مثل UUID تصادفی بدون هماهنگی یکتاست و مثل شناسه auto-increment بر اساس زمان ساخت مرتب می‌شود. به همین دلیل اکنون نسخه‌ای است که بیشتر پایگاه‌داده‌ها و ORMها برای کلید اصلی توصیه می‌کنند.

این صفحه سازنده UUID را با نسخه ۷ انتخاب‌شده باز می‌کند. ۴۸ بیت اول از ساعت دستگاه شما می‌آید و بقیه از مولد تصادفی امن مرورگر.

نمودار: بخش‌های 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 نسخه‌ی ۷ با زمان ساخته‌شدنش به میلی‌ثانیه شروع می‌شود؛ پس شناسه‌های جدید به ترتیب زمان مرتب می‌شوند و با ایندکس دیتابیس خوب کار می‌کنند. اولین رقم گروه سوم نسخه است، اولین رقم گروه چهارم بیت‌های واریانت را دارد و بقیه تصادفی است.

چرا ترتیب برای پایگاه‌داده مهم است

بیشتر پایگاه‌داده‌های رابطه‌ای کلیدهای اصلی را در B-tree ذخیره می‌کنند. کلید تصادفی v4 در هر درج جایی در میانه ایندکس می‌نشیند، صفحه‌ها را مجبور به تقسیم (page split) می‌کند و ردیف‌های مرتبط را روی دیسک پراکنده می‌کند. کلید v7 تقریباً همیشه از کلید قبلی بزرگ‌تر است، پس ردیف‌های جدید در انتها اضافه می‌شوند؛ درست مثل یک دنباله عدد صحیح. در جدول‌هایی با میلیون‌ها ردیف، تفاوت در سرعت درج و اندازه ایندکس چشمگیر است.

مقایسه v4، v7 و ULID

UUID v4UUID v7ULID
قابل مرتب‌سازی بر اساس زمانخیربلهبله
بیت‌های تصادفی۱۲۲۷۴۸۰
استانداردRFC 9562RFC 9562مشخصات جامعه‌محور
جا شدن در ستون UUIDبلهبلهنیاز به تبدیل
فاش کردن زمان ساختخیربلهبله

خواندن دوباره برچسب زمانی

یک UUID v7 را در inspector زیر ابزار جای‌گذاری کنید تا زمان درونش را رمزگشایی کند. این کار را دستی هم می‌توانید انجام دهید: ۱۲ رقم هگز اول، بدون خط تیره، تعداد میلی‌ثانیه‌ها از سال ۱۹۷۰ است. برای 01926f3a-7c2b-7d4e-… این مقدار 0x01926f3a7c2b = 1728442956843 است، یعنی ۹ اکتبر ۲۰۲۴ ساعت ۰۳:۰۲:۳۶٫۸۴۳ به وقت UTC.

UUID v7 در کد

  • PostgreSQL 18+: uuidv7()
  • Python 3.14+: uuid.uuid7()
  • Java: کتابخانه uuid-creator، با UuidCreator.getTimeOrderedEpoch()
  • Node.js: بسته uuid، با import { v7 } from 'uuid'
  • .NET 9+: Guid.CreateVersion7()

وقتی ترتیب زمانی اهمیتی ندارد، UUID v4 اطلاعات کمتری فاش می‌کند. اگر قالب‌بندی به سبک مایکروسافت لازم دارید، تولید GUID را ببینید.

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