KSUID జనరేటర్ - సోర్ట్ చేయగల అద్వితీయ గుర్తులను సృష్టించండి
ఆన్లైన్లో K-సోర్ట్ చేయగల అద్వితీయ గుర్తుల (KSUIDs) ను జనరేట్ చేయండి. వెంటనే పంపిణీ సిస్టమ్లు మరియు డేటాబేస్ల కోసం సమయం ద్వారా సోర్ట్ చేయగల, సంఘర్షణ నివారణ ID లను సృష్టించండి.
KSUID జెనరేటర్
దస్త్రపరిశోధన
KSUID జనరేటర్
KSUID (K-Sortable Unique Identifier) అనేది డేటాబేస్ వరుసలు, లాగ్ ఎంట్రీలు లేదా API అభ్యర్థనల వంటి రికార్డులకు లేబుల్గా ఉపయోగించే 27 అక్షరాల కోడ్. ఇది టైమ్స్టాంప్ను యాదృచ్ఛిక డేటాతో కలుపుతుంది. అందువల్ల తరువాత రూపొందించిన IDలు, ప్రతి ID ప్రత్యేకంగానే ఉన్నప్పటికీ, ముందుగా రూపొందించిన IDల తరువాత క్రమబద్ధీకరించబడతాయి. ఈ సాధనం బ్రౌజర్లో ఒకే KSUIDను రూపొందించి, దాన్ని కాపీ చేసుకునే వీలు కల్పిస్తుంది.
KSUID దేనితో రూపొందించబడుతుంది?
KSUID పొడవు 20 బైట్లు, ఇవి రెండు భాగాలుగా విభజించబడతాయి:
- టైమ్స్టాంప్ (4 బైట్లు): KSUID యుగం అని పిలిచే స్థిర ప్రారంభ సమయం నుంచి గడిచిన సెకన్ల సంఖ్య.
- యాదృచ్ఛిక డేటా భాగం (16 బైట్లు): బ్రౌజర్లోని క్రిప్టోగ్రాఫిక్ యాదృచ్ఛిక సంఖ్యా జనరేటర్ ఉత్పత్తి చేసే డేటా.
ఆ 20 బైట్లను తరువాత బేస్62 ఎన్కోడింగ్ ఉపయోగించి పాఠ్యంగా మారుస్తారు. ఈ విధానం సంఖ్యలను 62 అక్షరాలతో సూచిస్తుంది: అంకెలు 0-9, పెద్ద అక్షరాలు A-Z, చిన్న అక్షరాలు a-z. ఫలితం ఎల్లప్పుడూ సరిగ్గా 27 అక్షరాలుగా ప్యాడ్ చేయబడుతుంది; ఉదాహరణకు 0qjBBlJIfbVLKwnJn4xpLGDr00e.
ఒక సెకను తేడాతో రూపొందించిన రెండు KSUIDలను సాధారణ పాఠ్యంగా పోల్చినప్పుడు, టైమ్స్టాంప్ ముందుగా రావడం వల్ల అవి సాధారణంగా రూపొందిన సమయాల క్రమంలోనే క్రమబద్ధీకరించబడతాయి. చివరి 16 బైట్లు యాదృచ్ఛికమైనవి కాబట్టి, ఒకే సెకనులో రూపొందించిన రెండు KSUIDలు కూడా భిన్నంగా ఉండే అవకాశం దాదాపు ఖాయం.
KSUID యుగం
చాలా కంప్యూటర్ వ్యవస్థలు 1 జనవరి, 1970 నుంచి గడిచిన సెకన్లుగా సమయాన్ని లెక్కిస్తాయి (దీనిని "యూనిక్స్ యుగం" అంటారు). KSUIDలు వేరే ప్రారంభ సమయాన్ని ఉపయోగిస్తాయి, అదే KSUID యుగం: యూనిక్స్ యుగం తర్వాత 1,40,00,00,000 సెకన్లు, అంటే 13 మే, 2014, 16:53:20 UTC.
తరువాతి ప్రారంభ సమయాన్ని ఉపయోగించడం వల్ల 4-బైట్ల టైమ్స్టాంప్ ఫీల్డ్ పరిమితి నిండిపోయే ముందు ఎక్కువ ఉపయోగకరమైన సంవత్సరాలను సూచించగలదు. 4-బైట్ల (32-బిట్) కౌంటర్ గరిష్ఠంగా 4,29,49,67,295 సెకన్లను నిల్వ చేయగలదు. KSUID యుగం నుంచి లెక్కిస్తే, ఆ కాల పరిమితి సుమారు 19 జూన్, 2150 నాటికి ముగుస్తుంది.
KSUID సూత్రం
KSUID స్ట్రింగ్ మూడు దశల్లో రూపొందించబడుతుంది.
-
టైమ్స్టాంప్ విలువను కనుగొనండి:
T = floor(current_unix_time_in_seconds) − 1,400,000,000 -
క్రిప్టోగ్రాఫికల్గా సురక్షితమైన యాదృచ్ఛిక సంఖ్యా జనరేటర్ను ఉపయోగించి 16 యాదృచ్ఛిక బైట్లను (
R) రూపొందించండి. -
4-బైట్ల టైమ్స్టాంప్ను మరియు 16 యాదృచ్ఛిక బైట్లను ఒక 20-బైట్ల బ్లాక్గా కలిపి, ఆ బ్లాక్ను బేస్62లో ఎన్కోడ్ చేయండి; ఫలితాన్ని 27 అక్షరాలకు ప్యాడ్ చేయండి:
KSUID = Base62( T ‖ R )
ఇక్కడ ‖ అంటే "ఒకదాని తరువాత మరొకటి ఉంచడం". టైమ్స్టాంప్ బైట్లు ఎల్లప్పుడూ ముందుగా వస్తాయి. అందువల్ల తుది స్ట్రింగ్ సమయం ఆధారంగా సరిగ్గా క్రమబద్ధీకరించబడుతుంది.
ఉదాహరణ పరిష్కారం
KSUIDలోని టైమ్స్టాంప్ భాగం 100000000 అనుకుందాం. KSUID యుగం యూనిక్స్ యుగం తర్వాత 1,40,00,00,000 సెకన్లు కాబట్టి, ఈ టైమ్స్టాంప్ 14 జులై, 2017, 02:40:00 UTC సమయాన్ని సూచిస్తుంది.
ఆ టైమ్స్టాంప్ను 16-బైట్ల క్రమం 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16తో జత చేస్తే (ఉదాహరణను పునరుత్పత్తి చేయగలిగేలా మాత్రమే ఇక్కడ ఉపయోగించారు; వాస్తవ జనరేటర్ బదులుగా యాదృచ్ఛిక బైట్లను ఉపయోగిస్తుంది), బేస్62 ఎన్కోడింగ్ ఇలా ఉత్పత్తి అవుతుంది:
0qjBBlJIfbVLKwnJn4xpLGDr00e
ఆ స్ట్రింగ్ పొడవు 27 అక్షరాలు. ఇది కేవలం అంకెలు, అక్షరాలతో రూపొందినందున URL లేదా ఫైల్ పేరులో నేరుగా ఉపయోగించవచ్చు.
KSUID జనరేటర్ సాధనాన్ని ఎలా ఉపయోగించాలి
- KSUID జనరేటర్ పేజీని తెరవండి.
- "Generate KSUID" బటన్ను ఎంచుకోండి.
- సాధనం ప్రస్తుత సమయం మరియు కొత్త యాదృచ్ఛిక బైట్లను ఉపయోగించి ఒక కొత్త KSUIDను రూపొందించి, దాన్ని పేజీలో చూపిస్తుంది.
- విలువను క్లిప్బోర్డ్కు కాపీ చేయడానికి "Copy KSUID" బటన్ను ఎంచుకోండి.
- ఫలితాన్ని తొలగించడానికి "Reset"ను ఎంచుకోండి. KSUID రూపొందించిన తరువాత మాత్రమే Reset బటన్ కనిపిస్తుంది.
"Generate KSUID"ను క్లిక్ చేసిన ప్రతిసారీ సరిగ్గా ఒక ఐడెంటిఫైయర్ రూపొందుతుంది. అనేక KSUIDలను సృష్టించడానికి, ప్రతి కొత్తదానికి బటన్ను మళ్లీ క్లిక్ చేయండి; ఈ సాధనంలో బ్యాచ్ మోడ్ లేదా ఫైల్ ఎగుమతి సదుపాయం లేదు.
ఈ జనరేటర్ ఆధునిక బ్రౌజర్లలో అంతర్నిర్మితంగా ఉన్న Web Crypto APIపై ఆధారపడుతుంది. ఆ API అందుబాటులో లేకపోతే, ఐడీని రూపొందించడానికి బదులుగా సాధనం లోపాన్ని చూపిస్తుంది. ఎందుకంటే క్రిప్టోగ్రాఫికల్గా సురక్షితం కాని యాదృచ్ఛిక సంఖ్యా జనరేటర్ సులభంగా ఊహించగల లేదా ఒకదానితో ఒకటి ఢీకొనే ఐడెంటిఫైయర్లను ఉత్పత్తి చేయవచ్చు.
UUIDతో KSUID పోలిక
UUID (Universally Unique Identifier) అనేది సాధారణంగా ఉపయోగించే ప్రత్యామ్నాయ ఐడెంటిఫైయర్ ఫార్మాట్. విస్తృతంగా ఉపయోగించే UUID v4 పొడవు 36 అక్షరాలు, దాదాపు పూర్తిగా యాదృచ్ఛిక బిట్లతో రూపొందుతుంది. అందువల్ల రెండు UUIDలలో ఏది ముందుగా రూపొందించబడిందో వాటి ఆధారంగా తెలుసుకోలేం.
KSUID మూడు విధాలుగా భిన్నంగా ఉంటుంది:
- సమయానుసారం క్రమబద్ధీకరించవచ్చు. ప్రారంభంలోని టైమ్స్టాంప్ బైట్ల వల్ల KSUID స్ట్రింగ్లను అక్షరక్రమంలో క్రమబద్ధీకరిస్తే, అవి రూపొందిన సమయ క్రమంలో కూడా క్రమబద్ధీకరించబడతాయి.
- చిన్నది. KSUIDలో 27 అక్షరాలు ఉంటాయి, ప్రామాణిక UUIDలో 36 అక్షరాలు ఉంటాయి.
- విభజకాలు లేవు. UUID సాధారణంగా హైఫన్లతో (
xxxxxxxx-xxxx-...) రాయబడుతుంది; KSUIDలో అవి ఏవీ ఉండవు.
రెండు ఫార్మాట్లను కేంద్ర సర్వర్ను సంప్రదించకుండా వేర్వేరు కంప్యూటర్లలో స్వతంత్రంగా రూపొందించవచ్చు. అందువల్ల భాగస్వామ్య డేటాబేస్లో ఆటో-ఇంక్రిమెంట్ కౌంటర్ వల్ల ఏర్పడే అడ్డంకిని రెండూ నివారిస్తాయి.
తరచుగా అడిగే ప్రశ్నలు
KSUID అంటే ఏమిటి? K-Sortable Unique Identifier. "K" అనేది ఇది క్రమబద్ధీకరించగలదనే విషయాన్ని సూచిస్తుంది (ఫార్మాట్ను రూపొందించిన Segment సంస్థకు చెందిన అసలు డిజైన్ గమనికల్లో "కొంతవరకు క్రమబద్ధీకరించగలది" అని పేర్కొన్నారు).
KSUID ఎంత పొడవు ఉంటుంది? బేస్62లో ఎన్కోడ్ చేసిన 27 అక్షరాలు (అంకెలు 0-9, పెద్ద అక్షరాలు, చిన్న అక్షరాలు).
KSUID యుగం ఏమిటి? 13 మే, 2014, 16:53:20 UTC; ఇది ప్రామాణిక యూనిక్స్ యుగమైన 1 జనవరి, 1970 తర్వాత 1,40,00,00,000 సెకన్లు.
రెండు KSUIDలు ఒకదానితో ఒకటి ఢీకొనగలవా? అది అత్యంత అసంభవమైనది. ప్రతి KSUIDలో 16 యాదృచ్ఛిక బైట్లు (128 బిట్లు) ఉంటాయి. ఇవి క్రిప్టోగ్రాఫికల్గా సురక్షితమైన యాదృచ్ఛిక సంఖ్యా జనరేటర్తో రూపొందించబడతాయి. ఒకే సెకనులో అనేక KSUIDలను రూపొందించినా, పొరపాటున రెండు ఒకేలా రావడానికి గల అవకాశం ఖగోళ పరిమాణంలో చాలా చిన్నది.
KSUID నుంచి రూపొందిన సమయాన్ని తిరిగి తెలుసుకోగలనా? అవును. డీకోడ్ చేసిన విలువలోని మొదటి 4 బైట్లు టైమ్స్టాంప్. ఆ సంఖ్యలోని సెకన్లను KSUID యుగానికి కలిపితే అసలు రూపొందిన సమయం లభిస్తుంది.
ఈ సాధనం ఒకేసారి అనేక KSUIDలను రూపొందించడానికి మద్దతు ఇస్తుందా? లేదు. "Generate KSUID" బటన్ను క్లిక్ చేసిన ప్రతిసారీ సాధనం ఒక KSUIDను రూపొందిస్తుంది. పరిమాణం నమోదు చేసే ఇన్పుట్, అనుకూల టైమ్స్టాంప్ ఫీల్డ్ లేదా ఎగుమతి/డౌన్లోడ్ సదుపాయం లేవు.
KSUIDను URLలో ఉంచడం సురక్షితమేనా? అవును. బేస్62 ఎన్కోడింగ్లో అంకెలు, అక్షరాలు మాత్రమే ఉంటాయి కాబట్టి, URL, ఫైల్ పేరు లేదా డేటాబేస్ కీగా కనిపించడానికి KSUIDకు అదనపు ఎస్కేపింగ్ అవసరం లేదు.
సూచనలు
- Segment యొక్క KSUID GitHub రిపాజిటరీ: https://github.com/segmentio/ksuid
- Peter Bourgon రచించిన "Generating good unique identifiers": https://peter.bourgon.org/blog/2019/05/20/generating-good-unique-ids.html