Splync حساس IDs کے لیے دو شناختی استعمال کرتا ہے
Splync کے ڈیٹا بیس میں، ہر صارف اور ہر پروجیکٹ کی شناخت دو مختلف IDs: ایک UUID اور ایک آٹو انکریمنٹ انٹ کے ذریعے کی جاتی ہے۔
آٹو انکریمنٹ انٹ وہ ہے جسے زیادہ تر لوگ جانتے ہیں — یہ محض ایک کاؤنٹر ہے: 1، 2، 3، وغیرہ۔ Splync ان انٹ کو سرور ڈیٹا بیس کے اندر تقریبا ہر ٹیبل کو منظم کرنے کے لیے استعمال کرتا ہے کیونکہ یہ جوائنز کے لیے سادہ، تیز، اور مؤثر ہیں۔ تاہم، ہم کبھی بھی ان اندرونی نمبروں کو ایپ پر ظاہر نہیں کرتے۔ مثال کے طور پر، اگر آپ 42 ویں صارف تھے تو آپ کی اندرونی ID ڈیٹا بیس میں 42 ہوگی۔ لیکن آپ کی iOS ایپ کبھی "42" نہیں دیکھتی۔ اس کے بجائے، ایپ آپ کی نمائندگی کے لیے ایک UUID استعمال کرتی ہے۔ ہم پروجیکٹس پر بھی یہی طریقہ استعمال کرتے ہیں — پروجیکٹ ID ڈیٹا بیس میں "7" ہو سکتا ہے، لیکن ایپ ہمیشہ اسے ایک لمبے UUID کے ذریعے دکھاتی ہے۔
UUID کیا ہے
UUID کا مطلب Universally Unique Identifier ہے۔ Splync RFC 4122 کے مطابق ورژن 4، ویرینٹ 1 UUIDs استعمال کرتا ہے — یہ سب سے زیادہ اپنائے جانے والے معیارات میں سے ایک ہے۔ یہ ایک بے ترتیب پیدا کردہ سٹرنگ ہے، جو کچھ اس طرح نظر آتی ہے 949ca11c-a6ed-48a3-b40a-fa9727494917۔ ایک UUID عام طور پر 32 ہیکساڈیسیمل حروف کے طور پر لکھا جاتا ہے جو پانچ حصوں میں تقسیم ہیں، جو ہائفنز سے الگ ہوتے ہیں۔ یہ عالمی طور پر منفرد ہونے کے لیے ڈیزائن کیا گیا ہے، یعنی یہ مختلف سرورز یا ڈیٹابیسز کے درمیان بھی ٹکرائے گا نہیں۔ ریاضی کے لحاظ سے، تقریبا 16^32 = 2^128 ممکنہ مجموعے ہیں۔ تاہم، چونکہ چھ بٹس ویرینٹ اور ورژن کی نشاندہی کرنے کے لیے مخصوص ہیں، تو ورژن-4، ویرینٹ-1 UUIDs کی کل تعداد تقریبا 2^122، یا تقریبا 5.3 x 10^36 ہے — ایک فلکیاتی طور پر بڑی تعداد جو عملی انفرادیت کو یقینی بناتی ہے۔
1 / 5,300,000,000,000,000,000,000,000,000,000,000,000 کتنی چھوٹی ہے
ہر UUIDv4 جوڑی کے ملنے کا امکان تقریبا 1 میں 5.3 × 10^36 ہوتا ہے۔ یہ عدد اتنا چھوٹا ہے کہ انسانی تخیل میں تقریبا موجود نہیں ہوتا۔ اسے سمجھنے کے لیے 47 ڈائس ایک ساتھ پھینکنے کا تصور کریں۔ تمام ڈائس پر "1" آنے کا امکان تقریبا 1 میں 6^47 ہے، یا تقریبا 1 میں 3.7 × 10^36۔ یہ UUID ٹکراؤ کی طرح ہے۔ اب تصور کریں کہ زمین پر ہر شخص — تقریبا آٹھ ارب — ہر ملی سیکنڈ میں وہ 47 ڈائس ایک ٹریلین سال کے لیے پھینک رہا ہے۔ یہ تقریبا 2.5 × 10^32 کوششیں ہیں۔ اس سب کے بعد بھی، کسی کے لیے 47 ایکس کا ایک ساتھ آنا محض ایک میں دس ہزار کا امکان ہوگا۔ یہ کتنی امکان نہ رکھنے والی بات ہے کہ دو UUIDv4s ٹکرا جائیں۔ یہ "نایاب" نہیں ہے؛ یہ فلکیاتی حد تک ناممکن ہے — ایک ایسی اتفاق کہ ریاضی دان اپنا کافی گرا دیں اور کائنات میں بگس چیک کریں۔
کیا UUID بنانا آسان ہے
پہلی نظر میں، ایک UUID بنانا آسان معلوم ہو سکتا ہے — آخر کار، یہ محض ایک بے ترتیب نظر آنے والا الفا نیومیرک سٹرنگ ہے۔ لیکن خود قلم اور کاغذ کے ساتھ ایک لکھنے کی کوشش کریں۔ آپ 36 حروف لکھ سکتے ہیں، مگر اگر آپ اس مشق کو ہزاروں بار دہرائیں، تو واضح پیٹرنز ابھریں گے۔ شاید آپ کچھ ہندسوں جیسے 3 یا 8 کو پسند کرتے ہیں، اور حروف جیسے x کو کم استعمال کرتے ہیں۔ ایک کمپیوٹر فوراً ان تعصبات کو پکڑ سکتا ہے۔ ایک بدنیت ہیکر آپ کی عادتوں کا تجزیہ کر کے آپ کی "بے ترتیب" خفیہ سٹرنگ کو ایک دن کے اندر کم کر سکتا ہے۔ پھر، اگر آپ بھی ایک کمپیوٹر استعمال کریں اور rand()، کلاسک رینڈم فنکشن، ہر ہندسہ پیدا کرنے کے لیے کال کریں۔ یہ بہتر ہے — لیکن کافی نہیں۔ کئی "بے ترتیب" نمبر جنریٹرز عام پروگرامنگ ماحول میں فریب سے بے ترتیب ہوتے ہیں، یعنی وہ ایک پیش گوئی کے قابل ریاضیاتی ترتیب کی پیروی کرتے ہیں جو ایک اندرونی سیڈ سے شروع ہوتی ہے، جو عام طور پر سسٹم کے وقت پر مبنی ہوتی ہے۔ اگر کوئی اس سیڈ کو دریافت یا اندازہ لگا لے، تو وہ ہر قیمت کو دوبارہ پیدا کر سکتا ہے جو آپ کا جنریٹر کبھی پیدا کرے گا۔
UUID کتنی بے عیب بے ترتیب ہے
مکمل بے ترتیب پن حقیقت میں موجود نہیں — جیسے کہ ایک مکمل ڈائس موجود نہیں، یا ڈائس کی مکمل بے ترتیب پھینک موجود نہیں۔ ہر جسمانی یا ڈیجیٹل عمل کچھ بنیادی قوانین کی پیروی کرتے ہیں۔ پھر بھی، ریاضی دانوں اور انجینئرز نے دہائیوں تک الگورتھمز کو ڈیزائن کرنے میں صرف کیا ہے جو حقیقی بے ترتیبی کے قریب تر آتے ہیں۔ جب Splync ایک نیا ورژن-4 UUID بناتا ہے، تو یہ محض "بے ترتیب نمبر نہیں چنتا" جیسے کہ ڈائس پھینکنے کی طرح۔ یہ آپریٹنگ سسٹم سے غیر متوقعیت کے چھوٹے نشانات مانگتا ہے — مثال کے طور پر، آپ کا CPU ایک کام ختم کرنے کا ٹھیک لمحہ، ہارڈویئر کے اندر ہلکی برقی شور، یا میموری میں بیک گراؤنڈ ٹائمنگ میں اتار چڑھاؤ۔ یہ انٹرپی کے ٹکڑے جمع کیے جاتے ہیں اور 128 بٹس کے ڈیٹا میں ملائے جاتے ہیں — ایک طویل سطر جو ایکوں اور زیرو سے بنی ہوتی ہے۔ نتیجہ ایک کوڈ ہوتا ہے جو کہ ایپ صارفین یا ممکنہ بدنیت حملہ آوروں کے لیے اندازہ لگانا یا دہرانا عملی طور پر ناممکن ہوتا ہے۔
Splync کا دوہرا شناختی طریقہ
Splync حساس شناخت کاروں جیسے کہ صارف IDs اور پروجیکٹ IDs کے لیے UUIDs استعمال کرتا ہے، کیونکہ یہ انتہائی بے ترتیب اور محفوظ ہوتے ہیں۔
ساتھ ہی، اپنے سرور کے اندر، Splync ان UUIDs کو آٹو انکریمنٹ انٹ میں تبدیل کرتا ہے تاکہ بڑے ڈیٹاسیٹس پر تیز تر تلاش اور تجزیہ کیا جا سکے۔ یہ دوہرا شناختی طریقہ حفاظت اور آسانی کے درمیان توازن برقرار رکھتا ہے — بیرونی پرائیویسی کے ساتھ اندرونی کارکردگی۔ Splync کا مقصد ایک تناؤ سے پاک، سادہ، اور محفوظ بجٹ ٹریکنگ ایپ ہونا ہے۔ نظر آنے والے UI کے پیچھے، ہم اپنی آرکیٹیکچر کو بہتر بناتے رہتے ہیں تاکہ چیزیں ہموار، محفوظ، اور خاموشی سے ذہین رہیں۔