یو یو آئی ڈی جنریٹر
جنریٹ کردہ یو یو آئی ڈی
UUID جنریٹر
تعارف
ایک یونیورسل یونیق آئیڈینٹیفائر (UUID) ایک 128 بٹ نمبر ہے جو کمپیوٹر سسٹمز میں معلومات کی شناخت کے لیے استعمال ہوتا ہے۔ UUIDs کو اوپن سافٹ ویئر فاؤنڈیشن (OSF) کی طرف سے ڈسٹریبیوٹڈ کمپیوٹنگ ماحول (DCE) کے ایک حصے کے طور پر معیاری بنایا گیا ہے۔ یہ شناخت کنندہ خلا اور وقت دونوں میں منفرد ہونے کے لیے ڈیزائن کیے گئے ہیں، جو انہیں تقسیم شدہ نظاموں اور اس سے آگے مختلف ایپلی کیشنز کے لیے مثالی بناتا ہے۔
یہ UUID جنریٹر ٹول آپ کو ورژن 1 (وقت کی بنیاد پر) اور ورژن 4 (بے ترتیب) UUIDs بنانے کی اجازت دیتا ہے۔ یہ شناخت کنندہ مختلف منظرناموں میں مفید ہیں جہاں منفرد شناخت کی ضرورت ہوتی ہے، جیسے کہ ڈیٹا بیس کی چابیاں، تقسیم شدہ نظام، اور نیٹ ورک پروٹوکول۔
UUIDs کیسے کام کرتے ہیں
UUID کا ڈھانچہ
ایک UUID عام طور پر 32 ہیکساڈیسمل اعداد و شمار کے طور پر پیش کیا جاتا ہے، جو پانچ گروپوں میں ہائفنز سے الگ کیے جاتے ہیں، 8-4-4-4-12 کی شکل میں کل 36 کردار (32 عددی کردار اور 4 ہائفنز) کے لیے۔ مثال کے طور پر:
550e8400-e29b-41d4-a716-446655440000
UUID کے 128 بٹس مخصوص میدانوں میں تقسیم کیے گئے ہیں، ہر ایک UUID کے ورژن کے لحاظ سے مختلف معلومات رکھتا ہے:
- 32 بٹس کے لیے time_low میدان
- 16 بٹس کے لیے time_mid میدان
- 16 بٹس کے لیے time_hi_and_version میدان
- 8 بٹس کے لیے clock_seq_hi_and_reserved میدان
- 8 بٹس کے لیے clock_seq_low میدان
- 48 بٹس کے لیے node میدان
یہاں UUID کے ڈھانچے کی وضاحت کرنے والی ایک ڈایاگرام ہے:
UUID کے ورژن
UUIDs کے کئی ورژن ہیں، ہر ایک کی اپنی نسل کا طریقہ ہے:
- ورژن 1 (وقت کی بنیاد پر): موجودہ وقت کے نشان اور کمپیوٹر کے MAC ایڈریس کا استعمال کرتا ہے۔
- ورژن 2 (DCE سیکیورٹی): ورژن 1 کی طرح، لیکن ایک مقامی ڈومین شناخت کنندہ شامل کرتا ہے۔
- ورژن 3 (نام کی بنیاد پر، MD5): ایک نام کی جگہ کی شناخت کنندہ اور نام کو ہیش کر کے تیار کیا جاتا ہے۔
- ورژن 4 (بے ترتیب): ایک بے ترتیب یا جعلی بے ترتیب نمبر کا استعمال کرتے ہوئے تیار کیا جاتا ہے۔
- ورژن 5 (نام کی بنیاد پر، SHA-1): ورژن 3 کی طرح، لیکن SHA-1 ہیشنگ کا استعمال کرتا ہے۔
یہ ٹول ورژن 1 اور ورژن 4 UUIDs تیار کرنے پر توجہ مرکوز کرتا ہے۔
فارمولا
ورژن 1 UUID کی نسل
ورژن 1 UUIDs درج ذیل اجزاء کا استعمال کرتے ہوئے تیار کیے جاتے ہیں:
- ٹائم اسٹیمپ: ایک 60 بٹ قیمت جو 15 اکتوبر 1582 (عیسائی کیلنڈر میں گریگورین اصلاح کی تاریخ) کے بعد سے 100 نانو سیکنڈ کے وقفوں کی تعداد کی نمائندگی کرتی ہے۔
- کلاک سیکوئنس: ایک 14 بٹ قیمت جو کلاک کو پیچھے کی طرف سیٹ کرنے کی صورت میں نقل سے بچنے کے لیے استعمال کی جاتی ہے۔
- نوڈ: ایک 48 بٹ قیمت، جو عام طور پر کمپیوٹر کے MAC ایڈریس سے حاصل کی جاتی ہے۔
ورژن 1 UUID تیار کرنے کے لیے فارمولا اس طرح بیان کیا جا سکتا ہے:
UUID = (timestamp * 2^64) + (clock_sequence * 2^48) + node
ورژن 4 UUID کی نسل
ورژن 4 UUIDs ایک کریپٹوگرافک طور پر مضبوط بے ترتیب نمبر جنریٹر کا استعمال کرتے ہوئے تیار کیے جاتے ہیں۔ فارمولا بس یہ ہے:
UUID = random_128_bit_number
خاص بٹس ورژن (4) اور مختلف قسم کو ظاہر کرنے کے لیے سیٹ کیے گئے ہیں۔
استعمال کے کیس
UUIDs کمپیوٹر سائنس اور سافٹ ویئر انجینئرنگ کے مختلف شعبوں میں بے شمار ایپلی کیشنز رکھتے ہیں:
-
ڈیٹا بیس کی چابیاں: UUIDs اکثر ڈیٹا بیس میں بنیادی چابیوں کے طور پر استعمال ہوتے ہیں، خاص طور پر تقسیم شدہ نظاموں میں جہاں متعدد نوڈز بیک وقت ریکارڈ تیار کر سکتے ہیں۔
-
تقسیم شدہ نظام: بڑے پیمانے پر تقسیم شدہ نظاموں میں، UUIDs وسائل، لین دین، یا واقعات کی منفرد شناخت میں مدد کرتے ہیں۔
-
مواد کی ایڈریسنگ: UUIDs کو مواد کے لیے منفرد شناخت کنندے بنانے کے لیے استعمال کیا جا سکتا ہے جو مواد ایڈریس ایبل اسٹوریج سسٹمز میں ہیں۔
-
سیشن مینجمنٹ: ویب ایپلیکیشنز اکثر صارف کے سیشن کو منظم کرنے کے لیے UUIDs کا استعمال کرتی ہیں، یہ یقینی بناتے ہوئے کہ ہر سیشن کے پاس ایک منفرد شناخت کنندہ ہو۔
-
IoT ڈیوائس کی شناخت: انٹرنیٹ آف تھنگز (IoT) کی ایپلی کیشنز میں، UUIDs کو نیٹ ورک میں انفرادی ڈیوائسز کی منفرد شناخت کے لیے استعمال کیا جا سکتا ہے۔
متبادل
اگرچہ UUIDs وسیع پیمانے پر استعمال ہوتے ہیں، منفرد شناخت کنندے تیار کرنے کے لیے متبادل طریقے بھی ہیں:
-
خودکار بڑھتے ہوئے IDs: سادہ اور واحد ڈیٹا بیس کے نظاموں میں عام طور پر استعمال ہوتا ہے، لیکن تقسیم شدہ ماحول کے لیے موزوں نہیں ہے۔
-
ٹائم اسٹیمپ پر مبنی IDs: وقت کے لحاظ سے ترتیب دیئے گئے ڈیٹا کے لیے مفید ہو سکتے ہیں لیکن اعلیٰ ہم وقتی منظرناموں میں تصادم کے مسائل کا سامنا کر سکتے ہیں۔
-
اسنو فلاکے IDs: ٹویٹر کے ذریعہ تیار کردہ، یہ IDs ٹائم اسٹیمپ اور ورکنگ نمبر کو ملا کر تقسیم شدہ نظاموں میں منفرد IDs تیار کرتی ہیں۔
-
ULID (یونیورسل یونیق لیسیکوگرافکلی سورت ایبل آئیڈینٹیفائر): ایک حالیہ متبادل جو UUIDs سے زیادہ انسانی دوستانہ اور ترتیب دینے کے قابل ہونے کا مقصد رکھتا ہے۔
تاریخ
UUIDs کا تصور پہلے ایپولو نیٹ ورک کمپیوٹنگ سسٹم میں متعارف کرایا گیا اور بعد میں 1990 کی دہائی میں اوپن سافٹ ویئر فاؤنڈیشن (OSF) کی طرف سے معیاری بنایا گیا۔ ابتدائی وضاحت 1997 میں ISO/IEC 11578:1996 کے طور پر شائع ہوئی اور بعد میں 2005 میں ISO/IEC 9834-8:2005 کے حصے کے طور پر نظر ثانی کی گئی۔
UUID کی تاریخ میں اہم سنگ میل:
- 1980 کی دہائی: ایپولو کمپیوٹر اپنے نیٹ ورک کمپیوٹنگ سسٹم کے لیے UUID تصور تیار کرتا ہے۔
- 1997: پہلی UUID وضاحت ISO/IEC 11578:1996 کے طور پر شائع کی گئی۔
- 2005: UUID وضاحت کو نظر ثانی کیا گیا اور ISO/IEC 9834-8:2005 کے حصے کے طور پر شائع کیا گیا۔
- 2009: RFC 4122 UUID کی شکل اور نسل کے الگورڈمز کی وضاحت کرتا ہے جو آج استعمال ہوتے ہیں۔
وقت کے ساتھ، UUIDs تقسیم شدہ نظاموں اور ڈیٹا بیس کے ڈیزائن میں ایک لازمی ٹول بن چکے ہیں، مختلف پروگرامنگ زبانوں اور پلیٹ فارمز میں مختلف نفاذ اور موافقت کے ساتھ۔
کوڈ کے نمونے
یہاں مختلف پروگرامنگ زبانوں میں UUIDs تیار کرنے کے مثالیں ہیں:
import uuid
## ورژن 4 (بے ترتیب) UUID تیار کریں
random_uuid = uuid.uuid4()
print(f"ورژن 4 UUID: {random_uuid}")
## ورژن 1 (وقت کی بنیاد پر) UUID تیار کریں
time_based_uuid = uuid.uuid1()
print(f"ورژن 1 UUID: {time_based_uuid}")
حوالہ جات
- Leach, P., Mealling, M., & Salz, R. (2005). A Universally Unique IDentifier (UUID) URN Namespace. RFC 4122. https://tools.ietf.org/html/rfc4122
- International Organization for Standardization. (2005). Information technology – Open Systems Interconnection – Procedures for the operation of OSI Registration Authorities: Generation and registration of Universally Unique Identifiers (UUIDs) and their use as ASN.1 Object Identifier components. ISO/IEC 9834-8:2005. https://www.iso.org/standard/62795.html
- یونیورسل یونیق آئیڈینٹیفائر. (2023). وکیپیڈیا میں۔ https://en.wikipedia.org/wiki/Universally_unique_identifier
- اسنو فلاکے ID. (2023). وکیپیڈیا میں۔ https://en.wikipedia.org/wiki/Snowflake_ID
- ULID Spec. (n.d.). GitHub. https://github.com/ulid/spec