🛠️

Whiz Tools

Build • Create • Innovate

ژنراتور شناسایی‌های منحصر به فرد قابل مرتب‌سازی بر اساس زمان

شناسایی‌های منحصر به فرد قابل مرتب‌سازی بر اساس زمان (KSUID) برای استفاده در سیستم‌های توزیع‌شده، پایگاه‌های داده و برنامه‌هایی که به کلیدهای منحصر به فرد و قابل مرتب‌سازی بر اساس زمان نیاز دارند، تولید کنید. KSUIDها یک زمان‌سنجی را با داده‌های تصادفی ترکیب می‌کنند تا شناسایی‌های مقاوم در برابر برخورد و قابل مرتب‌سازی ایجاد کنند.

ژنراتور KSUID

📚

مستندات

تولید کننده KSUID

مقدمه

KSUID (شناسه منحصر به فرد قابل مرتب‌سازی K) یک فرمت شناسه منحصر به فرد است که مزایای متعددی نسبت به UUID (شناسه منحصر به فرد جهانی) و سایر سیستم‌های شناسایی ارائه می‌دهد. این ابزار به شما امکان می‌دهد که KSUIDها را به سرعت و به راحتی تولید کنید.

KSUID چیست؟

KSUID یک شناسه ۲۰ بایتی قابل مرتب‌سازی است که شامل:

  1. یک timestamp ۳۲ بیتی (۴ بایت)
  2. ۱۶ بایت تصادفی

زمانی که به عنوان یک رشته نمایش داده می‌شود، یک KSUID در base62 کدگذاری می‌شود و ۲۷ کاراکتر طول دارد.

ساختار یک KSUID

ساختار یک KSUID را می‌توان به شرح زیر تقسیم کرد:

  1. Timestamp (۴ بایت): این نمایانگر تعداد ثانیه‌ها از زمان Unix epoch (۱ ژانویه ۱۹۷۰، ساعت ۰۰:۰۰ UTC) است. timestamp به KSUIDها این امکان را می‌دهد که به‌طور تقریبی بر اساس زمان تولید مرتب شوند.

  2. مؤلفه تصادفی (۱۶ بایت): این یک عدد تصادفی امن از نظر رمزنگاری است که منحصر به فرد بودن را حتی زمانی که چندین KSUID در همان ثانیه تولید می‌شوند، تضمین می‌کند.

  3. کدگذاری Base62: ۲۰ بایت ترکیبی (timestamp + random) سپس با استفاده از base62 (A-Z، a-z، 0-9) کدگذاری می‌شود تا رشته نهایی ۲۷ کاراکتری تولید شود.

فرمول KSUID

یک KSUID می‌تواند به‌صورت ریاضی به‌صورت زیر نمایش داده شود:

KSUID=Base62(TR)KSUID = Base62(T || R)

که در آن:

  • TT timestamp ۳۲ بیتی است
  • RR مؤلفه تصادفی ۱۲۸ بیتی است
  • || به معنای الحاق است

timestamp TT به‌صورت زیر محاسبه می‌شود:

T = \text{floor}(\text{current_time} - \text{KSUID_epoch})

که در آن KSUID_epoch برابر با ۱۴۰۰۰۰۰۰۰۰ (۲۰۱۴-۰۵-۱۳T۱۶:۵۳:۲۰Z) است.

نمودار ساختار KSUID

Timestamp (۴ بایت) مؤلفه تصادفی (۱۶ بایت)

موارد استفاده از KSUIDها

KSUIDها به‌ویژه در سناریوهای زیر مفید هستند:

  1. سیستم‌های توزیع‌شده: زمانی که به شناسه‌های منحصر به فرد در چندین سرور یا سرویس بدون هماهنگی نیاز دارید.

  2. داده‌های قابل مرتب‌سازی بر اساس زمان: زمانی که می‌خواهید داده‌ها را بر اساس زمان ایجاد مرتب کنید بدون اینکه یک timestamp جداگانه ذخیره کنید.

  3. کلیدهای پایگاه داده: به‌عنوان کلیدهای اصلی در پایگاه‌های داده، به‌ویژه در پایگاه‌های داده توزیع‌شده که اعداد خودافزایشی مناسب نیستند.

  4. شناسه‌های امن برای URL: برای ایجاد شناسه‌های کوتاه، منحصر به فرد و امن برای URL برای منابع در برنامه‌های وب.

  5. همبستگی لاگ: برای همبستگی ورودی‌های لاگ در سرویس‌های مختلف در معماری میکروسرویس‌ها.

مزایای KSUIDها

KSUIDها مزایای متعددی نسبت به سایر سیستم‌های شناسایی ارائه می‌دهند:

  1. قابلیت مرتب‌سازی: بر خلاف UUIDها، KSUIDها می‌توانند به‌طور زمانی مرتب شوند که برای ایندکس‌گذاری پایگاه داده و تحلیل لاگ مفید است.

  2. نیازی به هماهنگی نیست: بر خلاف شناسه‌های خودافزایشی، KSUIDها می‌توانند به‌طور مستقل توسط سرورهای مختلف تولید شوند بدون اینکه خطر برخورد وجود داشته باشد.

  3. نمایه فشرده: در ۲۷ کاراکتر، KSUIDها هنگام نمایش به‌عنوان رشته‌ها، فشرده‌تر از UUIDها هستند.

  4. timestamp درون‌ساخته: timestamp درون‌ساخته امکان مرتب‌سازی و فیلتر کردن مبتنی بر زمان را بدون نیاز به یک فیلد timestamp جداگانه فراهم می‌کند.

  5. امن برای URL: کدگذاری base62 باعث می‌شود که KSUIDها برای استفاده در URLها بدون نیاز به کدگذاری اضافی امن باشند.

  6. احتمال برخورد کاهش یافته: مؤلفه تصادفی ۱۶ بایتی احتمال برخورد را به‌طرز قابل توجهی کاهش می‌دهد، حتی در نرخ‌های تولید بالا.

نحوه استفاده از این تولید کننده

  1. هر پارامتر اضافی را در صورت نیاز وارد کنید (به عنوان مثال، timestamp سفارشی).
  2. روی دکمه "تولید KSUID" کلیک کنید تا یک KSUID جدید ایجاد شود.
  3. KSUID تولید شده در فیلد خروجی نمایش داده می‌شود.
  4. می‌توانید با تکرار مراحل ۱-۳ چندین KSUID تولید کنید.
  5. از دکمه "کپی" در کنار هر KSUID برای کپی کردن آن به کلیپ بورد خود استفاده کنید.
  6. به‌طور اختیاری، از ویژگی "صادرات" برای دانلود لیستی از KSUIDهای تولید شده استفاده کنید.

به یاد داشته باشید که هر KSUID منحصر به فرد است و باید فقط یک بار استفاده شود. هر بار که به یک شناسه منحصر به فرد نیاز دارید، یک KSUID جدید تولید کنید.

مثال‌های کد

در اینجا مثال‌هایی از تولید KSUIDها در زبان‌های برنامه‌نویسی مختلف آورده شده است:

1## پایتون
2import ksuid
3
4new_id = ksuid.ksuid()
5print(f"KSUID تولید شده: {new_id}")
6

منابع

  1. مخزن KSUID در گیت‌هاب Segment: https://github.com/segmentio/ksuid
  2. "تولید شناسه‌های منحصر به فرد خوب" توسط پیتر بورگون: https://peter.bourgon.org/blog/2019/05/20/generating-good-unique-ids.html
  3. مشخصات KSUID: https://github.com/segmentio/ksuid/blob/master/README.md