ఐడీ ఢీకొనే సంభావ్యత కాలిక్యులేటర్
UUID, ULID, షార్ట్ URL స్లగ్లు, వన్-టైమ్ కోడ్ల వంటి యాదృచ్ఛిక ఐడెంటిఫయర్లను జనరేట్ చేసే ప్రతి సిస్టమ్, రెండు ఐడీలు ఎప్పుడూ ఒకేలా రావు అనే అవకాశంపై నిశ్శబ్దంగా ఆధారపడుతుంది. ప్రసిద్ధ "బర్త్డే పారడాక్స్" వెనుక ఉన్న అదే గణితాన్ని ఉపయోగించి ఈ సాధనం ఆ ప్రమాదాన్ని అంచనా వేస్తుంది: ఢీకొనడాలు (collisions) మన అంతర్ దృష్టి కంటే చాలా త్వరగా జరిగే అవకాశం ఉంటుంది.
ఇది ఎందుకు ముఖ్యం
ఒక నిర్ణీత పరిమాణంలోని స్పేస్ నుండి తగినంత యాదృచ్ఛిక ఐడీలను జనరేట్ చేస్తే, చివరికి రెండు ఐడీలు యాదృచ్ఛికంగా సరిపోతాయి. దీనికి ఎంత తక్కువ ఐడీలు అవసరమో అనేది ఆశ్చర్యకరమైన విషయం. కేవలం 23 మంది ఉన్న గదిలో, 365 సాధ్యమైన రోజుల నుండి ఇద్దరికి ఒకే పుట్టినరోజు వచ్చే అవకాశం ఇప్పటికే 50%. అదే గణితం డేటాబేస్ ఐడీలు, సెషన్ టోకెన్లు, షార్ట్ కోడ్లకు కూడా వర్తిస్తుంది, కేవలం చాలా పెద్ద స్థాయిలో మాత్రమే.
దీన్ని తెలుసుకోవడం వల్ల, మీ సిస్టమ్ దాని జీవితకాలంలో నిజంగా జనరేట్ చేసే ఐడీల సంఖ్యకు ఢీకొనే ప్రమాదాన్ని ఆమోదయోగ్యంగా తక్కువగా ఉంచే ఐడీ స్కీమ్ (బిట్-పొడవు)ను ఎంచుకోవడానికి మీకు సహాయపడుతుంది.
సూత్రం
N (ఇక్కడ N = 2^bits) పరిమాణం గల స్పేస్ నుండి యాదృచ్ఛికంగా జనరేట్ చేయబడిన n ఐడీలకు, కనీసం ఒక ఢీకొనే సంభావ్యత సుమారుగా:
లక్ష్య ఢీకొనే సంభావ్యత p కి చేరుకునే ముందు మీరు ఎన్ని ఐడీలు n జనరేట్ చేయవచ్చో తెలుసుకోవడానికి, సూత్రాన్ని ఇలా పునర్వ్యవస్థీకరిస్తారు:
ఢీకొనే అవకాశం సరిగ్గా 50%కి చేరుకునే ఐడీల సంఖ్య ఒక ఉపయోగకరమైన సూచన పాయింట్ — దీన్ని "బర్త్డే బౌండ్" అని పిలుస్తారు:
ఈ కాలిక్యులేటర్ను ఎలా ఉపయోగించాలి
- డ్రాప్డౌన్ నుండి ఐడీ రకాన్ని ఎంచుకోండి — UUIDv4, UUIDv7, ULID, 8-అక్షరాల Base62 షార్ట్ కోడ్, లేదా 6-అంకెల న్యూమరిక్ OTP వంటి సాధారణ స్కీమ్లకు వాటి తెలిసిన యాదృచ్ఛిక ఎంట్రోపీ ముందుగానే నింపబడి ఉంటుంది.
- మీరు మీ స్వంత ఐడీ స్కీమ్ను రూపొందిస్తుంటే బదులుగా "Custom bit length" ఎంచుకోండి, అది ఉపయోగించే యాదృచ్ఛిక బిట్ల సంఖ్యను నమోదు చేయండి.
- మీ సిస్టమ్ మొత్తంగా (దాని జీవితకాలంలో, లేదా మీకు ముఖ్యమైన ఒక నిర్దిష్ట కాలవ్యవధిలో) జనరేట్ చేస్తుందని మీరు ఆశించే ఐడీల సంఖ్యను నమోదు చేయండి.
- లక్ష్య ఢీకొనే సంభావ్యతను (శాతంగా) సెట్ చేయండి — ఇది మీరు అంగీకరించడానికి సిద్ధంగా ఉన్న రిస్క్ థ్రెషోల్డ్, సాధారణంగా కీలకమైన ఐడెంటిఫయర్లకు 1% లేదా 0.01%.
- సమర్పించి చూడండి: ఆ సంఖ్య వద్ద మీ వాస్తవ ఢీకొనే సంభావ్యత, మీ లక్ష్య రిస్క్కు చేరుకునే ముందు మీరు జనరేట్ చేయగల ఐడీల సంఖ్య, బర్త్డే-బౌండ్ సూచన పాయింట్, మరియు సాధారణ స్థాయిలలో అవకాశం ఎలా పెరుగుతుందో చూపించే ఒక పట్టిక.
పరిష్కరించిన ఉదాహరణ
మీరు ప్రామాణిక UUIDv4 విలువలను జనరేట్ చేస్తున్నారని అనుకుందాం (122 బిట్ల యాదృచ్ఛికత, అంటే N = 2^122), మరియు మీ అప్లికేషన్ జీవితకాలంలో 100 కోట్లు (n = 1,000,000,000) జనరేట్ చేస్తారని ఆశిస్తున్నారు.
సూత్రంలో పెడితే:
ఇది సుమారుగా 10.6 క్విన్టిలియన్లో 1 అవకాశం — ఆచరణాత్మకంగా సున్నా, అందుకే UUIDv4 దాదాపు ఏ నిజమైన వర్క్లోడ్కైనా ఢీకొనే-ప్రమాదం లేనిదిగా పరిగణించబడుతుంది. దీన్ని 6-అంకెల న్యూమరిక్ OTP (N = 10^6, సుమారు 19.9 బిట్లు)తో పోల్చండి: కేవలం 1,177 జనరేట్ చేసినా 50% ఢీకొనే పరిమితిని దాటేస్తుంది, అందుకే OTPలు తక్కువ కాలం మాత్రమే చెల్లుబాటు అవుతాయి మరియు ఒక భాగస్వామ్య గ్లోబల్ పూల్ నుండి కాకుండా ఒకేసారి ఒక వినియోగదారుకు మాత్రమే పరిమితం చేయబడతాయి.
సాధారణ ఐడీ స్కీమ్లు మరియు వాటి ఎంట్రోపీ
| స్కీమ్ | సుమారు యాదృచ్ఛిక బిట్లు |
|---|---|
| UUIDv4 | 122 బిట్లు |
| ULID (యాదృచ్ఛిక భాగం) | 80 బిట్లు |
| UUIDv7 (యాదృచ్ఛిక భాగం) | 74 బిట్లు |
| 8-అక్షరాల Base62 స్ట్రింగ్ | ~47.6 బిట్లు |
| 6-అంకెల న్యూమరిక్ కోడ్ (OTP) | ~19.9 బిట్లు |
మరేదైనా దాని కోసం — వేరే అక్షరమాల/పొడవు గల nanoid, ఒక న్యూమరిక్ పరిధి, లేదా అంతర్గత ఐడీ ఫార్మాట్ — "Custom" ఎంపికను ఉపయోగించి bits = log2(మీ ఐడీ స్పేస్ పరిమాణం) ను లెక్కించండి.