UUID جنریٹر

اپنے براؤزر میں UUIDs بنائیں: رینڈم v4، ٹائم آرڈرڈ v7، یا ڈیٹرمنسٹک v5۔ ایک بار میں 1000 تک، اور ڈیٹا کبھی آپ کی ڈیوائس سے باہر نہیں جاتا۔

منتخب کرنے کے لیے 'بنائیں' دبائیں
ورژن
اعلی درجے کے اختیارات

کیا آپ کو ایک ایسے شناخت کار کی ضرورت ہے جو کسی اور کے بنائے ہوئے شناخت کار سے نہ ٹکرائے، ایک ایسی مشین پر جس کا آپ نے کبھی نام نہیں سنا ہو، اور کسی سے اجازت لیے بغیر؟ یہ وہ کام ہے جو UUID کرتا ہے۔ یہ ایک 128 بٹ کا نمبر ہے، جو مانوس 8-4-4-4-12 پیٹرن میں 36 حروف کے طور پر لکھا جاتا ہے، اور اس کا پورا ڈیزائن اس بات کو یقینی بناتا ہے کہ ان میں سے کوئی بھی دو نمبر یکساں نہیں ہوں گے حالانکہ کوئی بھی چیز اس بات کو کنٹرول نہیں کرتی کہ کس کو کون سا نمبر ملتا ہے۔ یہ مفت جنریٹر انہیں آپ کے براؤزر میں بناتا ہے: 'ورژن' میں کوئی ورژن منتخب کریں، 'انتخاب کی تعداد' میں بتائیں کہ آپ کو کتنے درکار ہیں، اور 'بنائیں' دبائیں۔ صفحہ ایک واحد v4 کے ساتھ کھلتا ہے، وہ ورژن جو زیادہ تر پروجیکٹس چاہتے ہیں، لہذا پہلا شناخت کار صرف ایک کلک کی دوری پر ہے۔

ہر شناخت کار آپ کے براؤزر کے ذریعے Web Crypto API کا استعمال کرتے ہوئے بنایا جاتا ہے۔ ورژن 4، crypto.randomUUID() استعمال کرتا ہے جہاں براؤزر اسے فراہم کرتا ہے اور بصورت دیگر crypto.getRandomValues() استعمال کرتا ہے — جو کہ JavaScript کے سوڈو-رینڈم فنکشن جیسے کہ Math.random() کے بجائے بے ترتیبی کا ایک مضبوط کرپٹوگرافک ذریعہ ہے۔ ورژن 7 شروع میں ایک 48 بٹ ملی سیکنڈ ٹائم اسٹیمپ رکھتا ہے، پھر ایک 12 بٹ کاؤنٹر جو اسی ملی سیکنڈ کے اندر بڑھتا ہے، اور پھر 62 رینڈم بٹس، جو کہ RFC 9562 میں بیان کردہ ترتیب کا طریقہ ہے؛ یہی کاؤنٹر وجہ ہے کہ ایک ہزار کا بیچ بے ترتیب ہونے کے بجائے ترتیب سے سامنے آتا ہے۔ ورژن 1 ایک ٹائم اسٹیمپ کو رینڈم نوڈ شناخت کار کے ساتھ ملاتا ہے جس میں ملٹی کاسٹ بٹ سیٹ ہوتا ہے، اس لیے یہ آپ کے نیٹ ورک کارڈ کا ایڈریس کبھی نہیں لاتا جیسا کہ 1990s کی ابتدائی نفاذات میں ہوتا تھا۔ ورژن 3 اور 5 بالکل بھی رینڈم نہیں ہیں: وہ MD5 اور SHA-1 بالترتیب استعمال کرتے ہوئے ایک نیم اسپیس کو نام کے ساتھ ہیش کرتے ہیں، اور یہ ہیشنگ بھی آپ کی ڈیوائس پر ہی ہوتی ہے۔ کوئی ڈیٹا سرور پر نہیں بھیجا جاتا، کچھ بھی لاگ نہیں کیا جاتا، اور ایک بار صفحہ لوڈ ہو جانے کے بعد یہ کنکشن بند ہونے پر بھی کام کرتا رہتا ہے۔

'ورژن' وہ فیلڈ ہے جو باقی سب کا فیصلہ کرتا ہے۔ ورژن 4، 122 رینڈم بٹس پر مشتمل ہے اور اس کی کوئی ساخت نہیں ہے — یہ ڈیفالٹ ہے، اور تب صحیح جواب ہوتا ہے جب ایک شناخت کار کا صرف منفرد ہونا ضروری ہو۔ ورژن 7، 62 رینڈم بٹس کو برقرار رکھتا ہے لیکن اس وقت کے ساتھ شروع ہوتا ہے جب اسے بنایا گیا تھا، تاکہ ان کا ایک سیٹ اس ترتیب میں آئے جس میں وہ بنائے گئے تھے؛ یہی وجہ ہے کہ جب شناخت کار نے ڈیٹا بیس کی بننا ہو تو اسی ورژن کا انتخاب کیا جاتا ہے۔ ورژن 1 اصل ٹائم بیسڈ اسکیم ہے، جسے یہاں ان سسٹمز کے لیے رکھا گیا ہے جو اب بھی اس کا مطالبہ کرتے ہیں۔ ورژن 3 اور 5 ایک مختلف جوڑا ہیں: یہ ڈیٹرمنسٹک ہیں، جس کا مطلب ہے کہ ایک جیسی ان پٹ ہمیشہ ایک ہی شناخت کار بناتی ہے، اور وہ دو اضافی فیلڈز لیتے ہیں — 'نیم اسپیس' جو معیاری اسپیسز DNS، URL، OID اور X.500 میں سے ایک ہے یا آپ کا اپنا کوئی 'کسٹم' اسپیس، اور 'نام' جو وہ اسٹرنگ ہے جس کی شناخت کی جا رہی ہے۔ v5 کو URL نیم اسپیس اور https://example.com/a دیں اور آپ کو آج، کل اور کسی اور کی مشین پر بھی وہی UUID ملے گا۔ اسی وجہ سے، جب v3 یا v5 منتخب کیا جاتا ہے تو 'انتخاب کی تعداد' غائب ہو جاتا ہے: ایک ڈیٹرمنسٹک ویلیو کی ایک ہزار کاپیاں، ایک ڈیٹرمنسٹک ویلیو کی ہی ایک ہزار کاپیاں ہوں گی۔ ہر دوسرے ورژن کے لیے، 'انتخاب کی تعداد' 1 سے 1000 تک ہوتا ہے۔

چار سوئچز آؤٹ پٹ کی شکل کو تبدیل کرتے ہیں جبکہ ان کے نیچے موجود 128 بٹس کو تبدیل نہیں کرتے۔ 'بڑے حروف' ہیکساڈیسیمل ہندسوں کو کیپیٹل کے طور پر پرنٹ کرتا ہے، 'ہائفن کے بغیر' وہ مختصر 32 حروف والی شکل دیتا ہے جسے کچھ کالم اور فائلوں کے نام ترجیح دیتے ہیں، اور 'درمیانی قوسین' ویلیو کو { } میں لپیٹ دیتا ہے — وہ شکل جسے Windows اور .NET کی دنیا GUID کہتی ہے۔ 'اعلی درجے کے اختیارات' کے تحت، urn:uuid: وہ سابقہ شامل کرتا ہے جو اسے ایک رسمی URN بناتا ہے؛ یہ آن ہونے پر 'درمیانی قوسین' اور 'ہائفن کے بغیر' کو بند کر دیتا ہے، کیونکہ معیار صرف ایک URN شکل کی اجازت دیتا ہے اور وہ ہائفنز والی مستند شکل ہے۔ 'کاپی کا فارمیٹ' یہ فیصلہ کرتا ہے کہ جب آپ کوئی بیچ لیتے ہیں تو اسے کیسے جوڑا جاتا ہے: ہر لائن پر ایک، کوما سے الگ کیا گیا، یا ہر ویلیو اقتباسات میں اور آخر میں ایک کوما کے ساتھ، جو سیدھے کوڈ میں ارے کے طور پر پیسٹ ہو جاتا ہے۔ نتیجے کے نیچے ایک لائن ہوتی ہے جو بٹس میں رینڈم نیس کی اطلاع دیتی ہے — v4 کے لیے 122، v7 کے لیے 62 — اور، v7 کے لیے، بیچ کے پہلے شناخت کار میں انکوڈ کیا گیا ٹائم اسٹیمپ، تاکہ ویلیو کے اندر موجود وقت پوشیدہ ہونے کے بجائے نظر آئے۔ 'سب کاپی کریں' اور 'فائل میں محفوظ کریں' دونوں 'کاپی کا فارمیٹ' کا احترام کرتے ہیں۔ 'تاریخچہ' آپ کے پچھلے 10 بیچز کو آپ کے اپنے براؤزر میں محفوظ رکھتا ہے: کسی ایک کو واپس لانے کے لیے اس پر کلک کریں، کسی ایک اندراج کو کاپی یا حذف کریں، یا سب صاف کر دیں۔ 'صاف کریں' نتیجے کو خالی کر دیتا ہے اور آپ کی سیٹنگز کو اسی طرح چھوڑ دیتا ہے، اور 50 شناخت کاروں کے بعد، یہ فہرست پچاس قطاروں کے بجائے ایک اسکرول کے قابل بلاک بن جاتی ہے۔

اس صفحے پر سب سے اہم چیز پرائمری کی کے طور پر v4 اور v7 کے درمیان فرق ہے، اور یہ کوئی پسند کا معاملہ نہیں ہے۔ ڈیٹا بیس انڈیکسز B-tree ہیں جنہیں ترتیب وار رکھا جاتا ہے، اور اس ترتیب میں ایک نئی کی کہاں آ کر رکتی ہے، یہ فیصلہ کرتا ہے کہ انسرٹ کرنے میں کتنا کام درکار ہوگا۔ v4 کی رینڈم ہوتی ہے، لہذا لگاتار انسرٹس انڈیکس کے غیر متعلقہ کونوں میں جا گرتی ہیں: جو صفحات بھرے ہوئے تھے وہ آدھے حصوں میں تقسیم ہو جاتے ہیں، ٹری کے جو حصے ڈیٹا بیس میموری میں رکھتا ہے وہ شاذ و نادر ہی وہ حصے ہوتے ہیں جن کی اگلی انسرٹ کو ضرورت ہوتی ہے، اور انڈیکس ان قطاروں کے مقابلے میں بڑا اور زیادہ بکھرا ہوا ہو جاتا ہے جن کی طرف یہ اشارہ کرتا ہے۔ v7 کی موجودہ ملی سیکنڈ سے شروع ہوتی ہے، لہذا لگاتار انسرٹس ٹری کے دائیں کنارے پر ایک ساتھ جا گرتی ہیں، جو کہ وہ پیٹرن ہے جو آٹو انکریمنٹ کرنے والا انٹیجر بناتا ہے اور وہ پیٹرن ہے جس کے گرد انڈیکس کے ڈھانچے بنائے گئے تھے۔ یہی مکمل ٹریڈ آف ہے: v7 آپ کو ایک ترتیب وار کی کا انسرٹ برتاؤ دیتا ہے جبکہ اس خاصیت کو برقرار رکھتا ہے جس کی وجہ سے آپ نے سب سے پہلے UUIDs کا انتخاب کیا تھا، جو یہ ہے کہ کوئی بھی سرور سے پوچھے بغیر ایک شناخت کار بنا سکتا ہے۔ اس کی قیمت یہ ہے کہ تخلیق کا وقت اب شناخت کار کے اندر پڑھا جا سکتا ہے، اور یہ اہمیت رکھتا ہے یا نہیں، یہ آپ کے ڈیٹا کے بارے میں ایک سوال ہے، فارمیٹ کے بارے میں نہیں۔

کوئی بھی چیز کبھی بھی UUID کو انفرادیت کے لیے چیک نہیں کرتی؛ اس کا سائز ہی ضمانت ہے۔ کوئی رجسٹری نہیں، کوئی سرور راؤنڈ ٹرپ نہیں، کوئی لک اپ نہیں — ایک جنریٹر ایک نمبر بناتا ہے اور اسے دے دیتا ہے، اور ان میں سے دو کے نہ ٹکرانے کی وجہ محض یہ ہے کہ ورژن 4 کی 2^122 ممکنہ ویلیوز ہیں، تقریباً 5.3 × 10^36۔ برتھ ڈے پرابلم اسے جانچنے کا ایماندارانہ طریقہ ہے: آپ کو کسی بھی دو کے ملنے کے یکساں امکان سے پہلے تقریباً 2.7 × 10^18 شناخت کاروں کی ضرورت ہوگی، جو کہ 86 سال تک ہر سیکنڈ میں ایک ارب نئے UUIDs ہیں۔ یہ واضح کرنا ضروری ہے کہ یہ کیا وعدہ کرتا ہے اور کیا نہیں۔ یہ ایک شماریاتی ضمانت ہے، ریاضیاتی نہیں، اور یہ صرف اس وقت تک کارگر ہے جب تک اس کے نیچے موجود بے ترتیبی حقیقی ہو — ایک جنریٹر جسے خراب طریقے سے سیڈ کیا گیا ہو، یا ایک ورچوئل مشین جسے اس کے اینٹروپی پول کے ساتھ کلون کیا گیا ہو، اسے اس طرح توڑ دیتا ہے کہ فارمیٹ اس کا پتہ نہیں لگا سکتا۔ ورژن 7 اس سوال کو مزید محدود کرتا ہے: ایک ہی ملی سیکنڈ کے اندر ایک جنریٹر خود کو بالکل بھی نہیں دہرا سکتا، کیونکہ کاؤنٹر رینڈم ہونے کے بجائے بڑھتا ہے، اور آزاد جنریٹرز میں 62 رینڈم بٹس اپنا کام کرتے ہیں۔

UUID ایک شناخت کار ہے، پاس ورڈ نہیں۔ ورژن 4 غیر متوقع ہے، اور یہ لوگوں کو اسے ایک راز کے طور پر برتنے کی ترغیب دیتا ہے — پاس ورڈ ری سیٹ لنک، ناقابل قیاس URL، سیشن ٹوکن، API کی۔ غیر متوقع ہونا حقیقی ہے، لیکن رازداری اس بات کی خاصیت ہے کہ کسی ویلیو کو کیسے ہینڈل کیا جاتا ہے، اور شناخت کاروں کو ڈیزائن کے لحاظ سے لاپرواہی سے ہینڈل کیا جاتا ہے: وہ URLs میں ہوتے ہیں، جو براؤزر ہسٹری، سرور لاگز، ریفرر ہیڈرز اور اینالیٹکس میں چلے جاتے ہیں، اور چیٹ میسجز میں پیسٹ کیے جاتے ہیں۔ باقی ورژنز اس سے بھی بدتر امیدوار ہیں۔ ورژن 1 اور ورژن 7 دونوں تخلیق کے لمحے کو انکوڈ کرتے ہیں، لہذا جس کے پاس بھی یہ ہو وہ تقریباً جانتا ہے کہ اسے کب بنایا گیا تھا اور وہ اس کے ساتھ بننے والی ہر چیز کے دائرے کو محدود کر سکتا ہے۔ ورژن 3 اور 5 جان بوجھ کر ڈیٹرمنسٹک ہیں: کسی ای میل ایڈریس کا v5 UUID کوئی ہیش شدہ راز نہیں ہے، یہ ایک ایسی ویلیو ہے جسے وہی ایڈریس رکھنے والا کوئی بھی شخص ایک سیکنڈ میں حساب لگا سکتا ہے۔ کسی چیز کو نام دینے کے لیے UUID استعمال کریں۔ پاس ورڈ جنریٹر، یا رازوں کے لیے بنائی گئی لائبریری کا ٹوکن استعمال کریں، جب ویلیو کو پوشیدہ رکھنا ہو۔

یہ UUID جنریٹر کیوں منتخب کریں؟

UUIDs وہاں سامنے آتے ہیں جہاں کسی چیز کا نام رکھنا ضروری ہو اس سے پہلے کہ کوئی اس بات کی تصدیق کر سکے کہ نام خالی ہے۔ ایپلیکیشن کوڈ انہیں ان قطاروں کے لیے بناتا ہے جو وہ داخل کرنے والا ہوتا ہے، تاکہ اس چیز کی شناخت ڈیٹا بیس تک پہنچنے سے پہلے ہی ہو جائے اور کلائنٹ اس کا حوالہ دے سکے جبکہ رائٹ کا عمل جاری ہو۔ ڈسٹری بیوٹڈ سسٹمز ان پر زیادہ انحصار کرتے ہیں: کئی سروسز جو ایک ہی ٹیبل میں لکھ رہی ہوں، ہوائی جہاز پر ریکارڈز بنانے والا ایک آف لائن موبائل کلائنٹ، ایک قطار جسے اس پیغام کو پہچاننا ہے جسے اس نے پہلے ہی پروسیس کر لیا ہے — ان میں سے کوئی بھی ایک مشترکہ کاؤنٹر کے لیے اپنی باری کا انتظار نہیں کر سکتا۔ ورژن 5 ایک مختلف ضرورت پوری کرتا ہے، جو ایک مستحکم شناخت کار ہے جو کسی ایسی چیز سے اخذ کیا جاتا ہے جو آپ کے پاس پہلے سے موجود ہے: ایک ہی دستاویز، ایک ہی URL یا ایک ہی اکاؤنٹ ہمیشہ ایک ہی UUID پر میپ ہوتا ہے، لہذا ایک امپورٹ بغیر کسی چیز کو ڈپلیکیٹ کیے دو بار چل سکتا ہے۔ دوسری جگہوں پر وہ محض وہ فارمیٹ ہوتے ہیں جس کا سسٹم مطالبہ کرتا ہے — ایک ارتباطی شناخت کار جو لاگز اور ٹریسز میں سے گزرتا ہے، ایک فائل کا نام جو آپس میں نہیں ٹکرائے گا جب ایک ہزار صارفین کے اپ لوڈز ایک بکٹ میں جمع ہوں گے، ایک Windows رجسٹری کی، ایک ٹیسٹ فکسچر جسے اصلی ڈیٹا کی طرح دکھنا چاہیے۔

کچھ ایماندارانہ حدود کا جاننا ضروری ہے۔ ایک بیچ ایک ورژن ہے: 'ورژن' میں موجود ویلیو اس میں موجود ہر چیز پر لاگو ہوتی ہے، لہذا v4s کی ایک رن اور v7s کی ایک رن دو بیچز ہیں۔ یہ ایک جنریٹر ہے، انسپکٹر نہیں — کسی UUID کو پیسٹ کر کے اس کا ورژن یا اس کا ٹائم اسٹیمپ پڑھنا وہ کام نہیں ہے جو یہ صفحہ کرتا ہے۔ 'فائل میں محفوظ کریں' CSV یا JSON کے بجائے پلین ٹیکسٹ فائل لکھتا ہے۔ ورژن 7 کھلے عام یہ ظاہر کرتا ہے کہ اسے کب بنایا گیا تھا، ملی سیکنڈ تک، جو ایک حقیقی ٹریڈ آف ہے نہ کہ کوئی خامی، اور ورژن 1 بھی اسی طرح وقت لیک کرتا ہے؛ اگر یہ آپ کے ڈیٹا کے لیے مسئلہ ہے، تو ورژن 4 وہ ورژن ہے جو کسی کو کچھ نہیں بتاتا۔ معیار کی دو خصوصی ویلیوز ورژنز نہیں ہیں اور اس لیے 'ورژن' میں اختیارات نہیں ہیں، لیکن آپ انہیں یہاں سے کاپی کر سکتے ہیں: نل UUID، جو 00000000-0000-0000-0000-000000000000 ہے، اور میکس UUID، جو ffffffff-ffff-ffff-ffff-ffffffffffff ہے۔ اس صفحے پر موجود ہر چیز RFC 9562 کی پیروی کرتی ہے، وہ تفصیلات جس نے 2024 میں RFC 4122 کی جگہ لی، لہذا آؤٹ پٹ کو کوئی بھی لائبریری، ڈیٹا بیس یا API قبول کرتا ہے جو UUIDs کو ہینڈل کرتا ہے۔ ان حدود کے اندر ضمانت مضبوط ہے: ہر شناخت کار معیار کے مطابق، کرپٹوگرافک طور پر محفوظ بے ترتیبی سے، آپ کی اپنی مشین پر بنایا گیا ہے، اور کوئی اور اسے کبھی نہیں دیکھتا۔

FAQ

میں UUID کیسے بنا سکتا ہوں؟

'ورژن' میں کوئی ورژن منتخب کریں، 'انتخاب کی تعداد' میں سیٹ کریں کہ آپ کو کتنے درکار ہیں، اور 'بنائیں' دبائیں۔ صفحہ ایک ہی ورژن 4 شناخت کار پر کھلتا ہے، جو کہ زیادہ تر پروجیکٹس چاہتے ہیں، لہذا ایک عام UUID صرف ایک کلک کی دوری پر ہے۔ ہر ویلیو اپنے کاپی بٹن کے ساتھ ظاہر ہوتی ہے، اور 'سب کاپی کریں' ایک ہی وقت میں پورا بیچ لے لیتا ہے۔

UUID v4 اور v7 میں کیا فرق ہے؟

ورژن 4 بغیر کسی ساخت کے 122 رینڈم بٹس پر مشتمل ہے، لہذا ان میں سے دو کا ایک دوسرے سے کوئی تعلق نہیں ہے۔ ورژن 7 پہلے 48 بٹس اس ملی سیکنڈ پر صرف کرتا ہے جب اسے بنایا گیا تھا، ایک کاؤنٹر اور 62 رینڈم بٹس کا اضافہ کرتا ہے، اور اس لیے ترتیب دینے کے قابل ہے: ایک بیچ اسی ترتیب میں سامنے آتا ہے جس ترتیب میں اسے بنایا گیا تھا۔ جب ایک شناخت کار کا صرف منفرد ہونا ضروری ہو تو v4 استعمال کریں، اور جب اسے ڈیٹا بیس کی بھی بننا ہو تو v7 استعمال کریں۔

مجھے کون سا UUID ورژن استعمال کرنا چاہیے؟

ورژن 4 جب تک کہ آپ کے پاس کوئی اور چننے کی وجہ نہ ہو۔ ورژن 7 منتخب کریں اگر شناخت کار پرائمری کی بنتا ہے اور انسرٹ کی کارکردگی اہمیت رکھتی ہے، ورژن 5 اگر آپ کو ایک ہی ان پٹ سے ہمیشہ ایک ہی شناخت کار بنانے کی ضرورت ہے، اور ورژن 1 صرف اس صورت میں جب آپ کو جس سسٹم سے بات کرنی ہے وہ خاص طور پر اس کا مطالبہ کرے۔ ورژن 3، SHA-1 کے بجائے MD5 کے ساتھ ورژن 5 ہے، اور یہ مطابقت کے لیے موجود ہے۔

کیا بنائے گئے UUIDs واقعی رینڈم اور محفوظ ہیں؟

رینڈم نیس کرپٹوگرافک طور پر محفوظ ہے: یہ آپ کے براؤزر کے Web Crypto API سے آتا ہے، crypto.randomUUID() یا crypto.getRandomValues() کے ذریعے، Math.random() سے نہیں۔ غیر متوقع ہونے کے معنی میں محفوظ ہونا راز ہونے کے معنی میں محفوظ ہونے سے ایک مختلف سوال ہے — UUID ایک شناخت کار ہے، اور اسے پاس ورڈ، سیشن ٹوکن یا API کی کے طور پر استعمال نہیں کیا جانا چاہیے۔

کیا میں ایک ساتھ بہت سے UUIDs بنا سکتا ہوں؟

ہاں، ایک بار میں 1000 تک۔ 'انتخاب کی تعداد' سیٹ کریں اور 'بنائیں' دبائیں؛ پچاس ویلیوز کے بعد نتیجہ قطاروں کی لمبی فہرست کے بجائے ایک واحد اسکرول کے قابل بلاک بن جاتا ہے۔ 'سب کاپی کریں' اور 'فائل میں محفوظ کریں' پورا بیچ لے لیتے ہیں، جو اس طرح جڑا ہوتا ہے جیسا کہ 'کاپی کا فارمیٹ' بتاتا ہے — ہر لائن پر ایک، کوما سے الگ، یا ارے میں پیسٹ کرنے کے لیے اقتباسات میں۔

v3 اور v5 مجھے ہر بار ایک ہی UUID کیوں دیتے ہیں؟

کیونکہ وہ اسی لیے ہیں۔ ورژن 3 اور 5 ڈیٹرمنسٹک ہیں: وہ اس نیم اسپیس اور نام کو ہیش کرتے ہیں جو آپ انہیں دیتے ہیں، لہذا یکساں ان پٹس ہمیشہ کسی بھی مشین اور کسی بھی زبان میں یکساں شناخت کار بناتے ہیں۔ یہ انہیں کسی ایسی چیز سے مستحکم شناخت کار اخذ کرنے کے لیے کارآمد بناتا ہے جو آپ کے پاس پہلے سے موجود ہے، اور یہی وجہ ہے کہ جب آپ انہیں منتخب کرتے ہیں تو 'انتخاب کی تعداد' چھپ جاتا ہے۔

نیم اسپیس اور نام کیا ہیں، اور مجھے کون سا نیم اسپیس چننا چاہیے؟

یہ وہ دو ان پٹس ہیں جن سے ورژن 3 یا ورژن 5 UUID کا حساب لگایا جاتا ہے۔ 'نیم اسپیس' بتاتا ہے کہ نام کس قسم کی چیز ہے — ہوسٹ ناموں کے لیے DNS، پتوں کے لیے URL، ان ڈائریکٹری اسکیموں کے لیے OID اور X.500، یا 'کسٹم' اگر آپ اپنا کوئی نیم اسپیس UUID فراہم کرنا چاہتے ہیں، جو کسی ایپلیکیشن کے اندر معمول کا انتخاب ہے۔ 'نام' خود اسٹرنگ ہے۔ مختلف نیم اسپیسز ایک ہی نام کے لیے بالکل مختلف نتائج دیتے ہیں، جو کہ ان کے ہونے کا مقصد ہے۔

ایک ڈیٹا بیس پرائمری کی کے لیے UUID v7، v4 سے بہتر کیوں ہے؟

اس وجہ سے کہ ویلیوز انڈیکس میں کہاں جا گرتی ہیں۔ ایک انڈیکس کو ترتیب وار رکھا جاتا ہے، اور ایک رینڈم v4 کی اس میں کہیں بھی جا گرتی ہے، لہذا انسرٹس پورے ٹری میں صفحات کو تقسیم کرتے ہیں اور میموری میں رکھے گئے حصے شاذ و نادر ہی وہ حصے ہوتے ہیں جن کی اگلی ضرورت ہوتی ہے۔ v7 کی موجودہ ملی سیکنڈ سے شروع ہوتی ہے، لہذا لگاتار انسرٹس انڈیکس کے آخر میں ایک ساتھ جا گرتی ہیں، جس طرح سے ترتیب وار انٹیجر کی برتاؤ کرتی ہے — جبکہ اب بھی کسی بھی سروس کو سنٹرل کاؤنٹر سے پوچھے بغیر شناخت کار بنانے کی اجازت دیتی ہے۔

کیا کبھی دو UUIDs ایک جیسے ہو سکتے ہیں؟

اصولی طور پر ہاں، عملی طور پر نہیں، اور یہ جاننا ضروری ہے کہ کیسے۔ کوئی بھی چیز انفرادیت کی تصدیق نہیں کرتی: ورژن 4 کی محض 2^122 ممکنہ ویلیوز ہیں، تقریباً 5.3 × 10^36، اور آپ کو ان میں سے تقریباً 2.7 × 10^18 درکار ہوں گے — 86 سال تک ہر سیکنڈ میں ایک ارب — ایک واحد ٹکراؤ کے یکساں امکان سے پہلے۔ ضمانت مطلق ہونے کے بجائے شماریاتی ہے، اور اس کا انحصار بے ترتیبی کے حقیقی ہونے پر ہے، جو کہ وجہ ہے کہ یہ جنریٹر ایک عام سوڈو-رینڈم فنکشن کے بجائے Web Crypto API استعمال کرتا ہے۔

کیا میں UUID کو بطور پاس ورڈ، API کی یا سیشن ٹوکن استعمال کر سکتا ہوں؟

نہیں، اور یہ وہ غلطی ہے جس کی سب سے زیادہ قیمت چکانی پڑتی ہے۔ ورژن 4 UUID غیر متوقع ہے، لیکن شناخت کاروں کو ایسے ہینڈل کیا جاتا ہے جیسے وہ پبلک ہوں: وہ URLs، براؤزر ہسٹری، سرور لاگز، ریفرر ہیڈرز اور اینالیٹکس میں چلے جاتے ہیں۔ ورژن 1 اور 7 مزید یہ بھی ظاہر کرتے ہیں کہ انہیں کب بنایا گیا تھا، اور ورژن 3 اور 5 کو کوئی بھی دوبارہ حساب لگا سکتا ہے جو ان پٹس کو جانتا ہو۔ کسی بھی ایسی چیز کے لیے جسے راز رہنا چاہیے، پاس ورڈ جنریٹر یا رازوں کے لیے بنائے گئے لائبریری کا ٹوکن استعمال کریں۔

کیا UUID v7 یہ ظاہر کرتا ہے کہ اسے کب بنایا گیا تھا؟

ہاں، ملی سیکنڈ تک، اور یہ ڈیزائن کے لحاظ سے ہے نہ کہ کسی خامی کی وجہ سے — ٹائم اسٹیمپ ہی v7 کو ترتیب دینے کے قابل بناتا ہے۔ نتیجے کے نیچے والی لائن آپ کو بیچ کی پہلی ویلیو میں انکوڈ کیا گیا وقت دکھاتی ہے، تاکہ آپ بالکل دیکھ سکیں کہ کیا ظاہر ہو رہا ہے۔ ورژن 1 میں بھی ٹائم اسٹیمپ ہوتا ہے۔ اگر تخلیق کا وقت ایک ایسی چیز ہے جسے آپ ظاہر نہیں کرنا چاہتے، تو ورژن 4 وہ ورژن ہے جس میں وقت بالکل نہیں ہوتا۔

کیا UUID v1 میرا MAC ایڈریس ظاہر کرتا ہے؟

یہاں نہیں۔ اصل اسکیم مشین کے نیٹ ورک کارڈ ایڈریس کو نوڈ فیلڈ کے طور پر استعمال کرتی تھی، جہاں سے v1 کی شہرت آتی ہے، لیکن معیار ایک رینڈم نوڈ شناخت کار کی بھی اجازت دیتا ہے جس پر ملٹی کاسٹ بٹ نشان زد ہو، اور یہی وہ چیز ہے جو یہ جنریٹر بناتا ہے۔ آپ کے ہارڈویئر ایڈریس کو کبھی نہیں پڑھا جاتا اور یہ آؤٹ پٹ میں کبھی ظاہر نہیں ہوتا۔

بڑے حروف، ہائفن کے بغیر، درمیانی قوسین اور urn:uuid: کیا تبدیل کرتے ہیں؟

صرف پیشکش — اس کے نیچے 128 بٹس ہر شکل میں یکساں رہتے ہیں۔ 'بڑے حروف' ہیکس ہندسوں کو کیپیٹل کے طور پر پرنٹ کرتا ہے، 'ہائفن کے بغیر' مختصر 32 حروف والا ورژن دیتا ہے، 'درمیانی قوسین' ویلیو کو { } میں لپیٹ دیتا ہے جس طرح Windows اور .NET ایک GUID لکھتے ہیں، اور urn:uuid: وہ سابقہ شامل کرتا ہے جو اسے ایک رسمی URN بناتا ہے۔ urn:uuid: آن ہونے پر دوسرے دو کو آف کر دیتا ہے، کیونکہ معیار صرف ایک URN شکل کی وضاحت کرتا ہے اور وہ مستند ہائفن والی شکل ہے۔