مولد UUID

به وب سایت اضافه کنید فراداده

ابزارهای دیگر

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

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

شناسه منحصر به فرد جهانی (UUID)، همچنین به عنوان شناسه منحصر به فرد جهانی (GUID) شناخته می شود، به طور گسترده در سیستم های کامپیوتری استفاده شده است.

این یک کد 128 بیتی است که توسط سیستم بر اساس متغیرها و ثابت ها تولید می شود: زمان جاری، آدرس MAC، هش SHA-1، فضای نام MD5. نتیجه نهایی ایجاد یک UUID که به صورت یک کد الفبایی 32 کاراکتری جدا شده با خط فاصله نمایش داده می شود، ممکن است دلخواه به نظر برسد، اما در واقع نتیجه محاسبات پیچیده است. بنابراین، یک کامپیوتر یک کد را "اختراع" نمی کند، بلکه آن را از مقادیر فنی خاصی که در یک زمان معین مرتبط هستند، تشکیل می دهد.

احتمال اینکه UUID یکسان در دو رایانه مختلف در زمان‌های مختلف تولید شود، به صفر می‌رسد، که استفاده از کدهای حاصل را برای شناسایی داده‌های نقطه/محلی بدون ارجاع به مرکز هماهنگی ممکن می‌سازد. امروزه، UUID/GUID هم در شبکه‌های آنلاین و هم در شبکه‌های آفلاین در همه جا وجود دارد و نه تنها در فضای جهانی اینترنت، بلکه در سیستم‌های رایانه‌ای مستقل نیز کار می‌کند.

سابقه UUID

کدهای 128 بیتی UUID برای اولین بار توسط شرکت آمریکایی آپولو کامپیوتر در دهه 1980 استفاده شد. آنها مبتنی بر کدهای 64 بیتی ساده‌تر مورد استفاده در Domain/OS بودند و در محیط محاسباتی Open Software Foundation استفاده گسترده‌ای پیدا کردند.

با ظهور اولین پلتفرم های ویندوز، شناسه منحصر به فرد جهانی تعمیم و استاندارد شد. مایکروسافت طرح DCE را از Apollo Computer اتخاذ کرد و فضای نام URN را در RFC 4122 ثبت کرد. در سال 2005، استاندارد جدید توسط IETF پیشنهاد شد و UUID در ITU استاندارد شد.

پیش از این در سال 2002، هنگام استفاده از UUID به عنوان کلید اصلی در پایگاه داده های محلی، مشکلات عملکرد سیستم شناسایی شد. این موارد در نسخه 4 با افزودن یک پسوند غیر تصادفی بر اساس زمان سیستم رایانه برطرف شد. رویکرد موسوم به COMB (Combined GUID Time Identifier) ​​خطر تکرار کد را افزایش داد، اما در عین حال عملکرد را در هنگام کار با Microsoft SQL Server به طور قابل توجهی بهبود بخشید.

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

مزایای UUID

تولیدکننده‌های کدهای منحصربه‌فرد جهانی نیازی به تطبیق/همگام‌سازی داده‌های متمرکز ندارند و به‌طور رایگان در دسترس همه کاربران هستند. مزایای اصلی UUID عبارتند از:

  • حداقل خطرات "برخورد" (تکرار) کدها. با وجود استفاده گسترده از آنها، احتمال تکرار به صفر می‌رسد.
  • قابلیت پیوستن به آرایه‌های مختلف داده با استفاده از UUID به‌عنوان کلیدهای اصلی (یکتا).
  • توزیع ساده داده ها در چندین سرور پراکنده.
  • قابلیت تولید کدهای آفلاین.

کدهای شناسایی منحصربه‌فرد، که با فرمت xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx نوشته شده‌اند، به سیستم‌های پراکنده اجازه می‌دهند تا اطلاعات را بدون هماهنگی از یک مرکز داده واحد شناسایی کنند: با احتمال تقریباً صفر خطا/تکرار. این ویژگی، همراه با سهولت استفاده و نیازهای اندک برای عملکرد رایانه، UUID را مورد تقاضا و ضروری در طیف گسترده ای از صنایع فناوری اطلاعات و سیستم های محاسباتی مستقل می کند.

شناسه منحصربه‌فرد جهانی

شناسه منحصربه‌فرد جهانی

UUID می‌تواند کدها را با استفاده از الگوریتم‌ها و متغیرها/مقادیر ثابت مختلف تولید کند.

در مجموع 5 نسخه از شناسه وجود دارد که از تاریخ/زمان سیستم و آدرس‌های MAC، پروتکل‌های امنیتی DCE، هش MD5، هش SHA-1 و فضای نام استفاده می‌کنند.

در همه موارد، نتیجه نهایی با فرمت xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx نمایش داده می شود (عددی به شکل هگزا دسیمال، متشکل از حروف لاتین کوچک و اعداد، و تقسیم شده توسط خط فاصله به پنج بلوک: 8-4 -4-4- 12)، M مخفف نسخه، N مخفف نوع UUID است.

بنابراین، سیستم از 36 کاراکتر در یک زمان (26 حرف و 10 عدد) استفاده می کند، بنابراین احتمال تکرار کدهای 32 رقمی با وجود اینکه روزانه توسط میلیون ها کاربر در سراسر جهان تولید می شوند، به صفر می رسد.

نسخه های UUID

نسخه 1

نسخه اول شناسه یکتا، هنگام تولید کد، بر اساس آدرس MAC رایانه و زمان سیستم آن است که مقدار عددی آن را 1 بار در ثانیه تغییر می‌دهد. فرآیند تولید شامل پنج مرحله است:

  • 32 بیت پایینی اطلاعات از تگ UTC گرفته شده است. آنها به 8 کاراکتر هگزادسیمال تبدیل می شوند و 4 بایت را اشغال می کنند.
  • میانگین 16 بیت اطلاعات از یک برچسب UTC گرفته شده و به 4 کاراکتر هگزادسیمال با اشغال 2 بایت تبدیل می شود.
  • 12 بیت بالای اطلاعات از تگ UTC گرفته شده و به 4 کاراکتر هگزادسیمال دیگر تبدیل می شود.
  • 1-3 بیت دیگر روی توالی ساعت می‌افتند و با ارائه درجه‌ای از تصادفی / عدم قطعیت، خطرات برخورد را کاهش می‌دهند. زمان سیستم یا به طور مشروط کاهش می یابد یا به عقب باز می گردد - به طوری که دو یا چند شناسه که همزمان روی یک رایانه کار می کنند "تقاطع" نکنند.
  • 6 بایت باقی مانده یک مقدار ثابت است که بر اساس آدرس MAC دستگاه تولید می شود. این شامل 12 کاراکتر هگزا دسیمال و 48 بیت است.

از آنجایی که الگوریتم نسخه اول UUID به طور جدایی ناپذیری با زمان سیستم مرتبط است، استفاده از دنباله ساعت الزامی است. در غیر این صورت، خطرات ایجاد کدهای یکسان چندین برابر افزایش می‌یابد - در طول دومی که زمان سیستم در یک یا مقدار دیگر "یخ می‌زند".

نسخه 2

نسخه دوم با نسخه اول بسیار متفاوت است و به ندرت در عمل استفاده می شود. به جای دنباله ساعت، از یک شناسه سیستم گره خورده به داده های کاربر یا سایر مقادیر منحصر به فرد استفاده می کند که در رایانه های دیگر تکرار نمی شوند یا به ندرت تکرار می شوند. اثر تصادفی بودن در نسخه دوم به حداقل رسیده است و می توان از آن برای بهبود امنیت یک محیط محاسباتی توزیع شده استفاده کرد.

نسخه 3 و 5

آنها اشتراکات زیادی دارند: آنها از نام ها و نام های منحصر به فرد (از فضای MD5) برای ایجاد کدها استفاده می کنند، یعنی مقادیر غیر تصادفی. فقط نسخه 3 از هش استاندارد استفاده می کند، در حالی که نسخه 5 از هش SHA-1 استفاده می کند. چنین شناسه‌هایی کمتر به متغیرهای تصادفی وابسته هستند.

نسخه 4

تولید این نسخه UUID بیش از 90٪ تصادفی است. دارای 6 بیت برای مقادیر ثابت و 122 بیت برای مقادیر دلخواه است. اجرای الگوریتم به این صورت است که ابتدا 128 بیت اطلاعات به صورت تصادفی تولید می شود و 6 بیت از آنها با داده های نسخه و نوع جایگزین می شوند.

نقش مولد اعداد شبه تصادفی در نسخه چهارم حداکثر است و اگر الگوریتم خیلی ساده ای داشته باشد، خطرات تکرار/برخورد به میزان قابل توجهی افزایش می یابد. با وجود این، این نسخه چهارم است که تا حد زیادی رایج ترین و اغلب در عمل استفاده می شود.

گزینه های UUID

UUID منحصر به فرد چندین بار با توسعه فناوری رایانه اصلاح شده است و امروزه در چندین نسخه ارائه شده است.

گزینه 0

طراحی شده برای کار با پایگاه داده های قالب قدیمی Apollo Network Computing System 1.5 1988. این گزینه با آنها سازگار است و با UUID های تاریخی NCS در تضاد نیست.

گزینه های 1 و 2

برای شناسایی بلوک‌ها و آرایه‌های داده مدرن استفاده می‌شود و در قالب متن متعارف، به جز ترتیب نوشتن بیت‌های متغیر، تفاوتی با یکدیگر ندارند. بنابراین گزینه 1 از ترتیب بایت های big-edian استفاده می کند و گزینه 2 از title-endian استفاده می کند. اولین مورد اصلی است و مورد دوم برای کار با GUID های اولیه مایکروسافت ویندوز رزرو شده است.

گزینه 3

در حال حاضر استفاده نمی شود. این یک نسخه رزرو شده برای استفاده در آینده است - زمانی که امکانات گزینه های قبلی تمام شد.

اکثر سیستم‌ها شناسه را در big-endian کد می‌کنند، اما استثناهایی وجود دارد. به عنوان مثال، مارشال کردن در کتابخانه‌های Microsoft COM/OLE از ترکیبی از endian استفاده می‌کند در حالی که کد را از بلوک‌های title-endian و big-endian تولید می‌کند. اولی سه جزء اول UUID و دومی دو جزء آخر است.