आप एक साधारण पूर्णांक के बजाय एक लंबी, स्ट्रिंग आईडी का उपयोग कब करेंगे? [बन्द है]


54

मैं उदाहरण के रूप में Youtube का उपयोग करना चाहूंगा: वे आईडी का उपयोग रूप में करते हैं PEckzwggd78

वे सरल पूर्णांक का उपयोग क्यों नहीं करते हैं?

या imgur.com - वे 9b6tMZSछवियों और दीर्घाओं के लिए भी आईडी का उपयोग करते हैं । अनुक्रमिक पूर्णांक नहीं।

  • वे पूर्णांक (विशेष रूप से अनुक्रमिक वाले) का उपयोग क्यों नहीं करते हैं?

  • किन मामलों में पूर्णांक के बजाय इस तरह की स्ट्रिंग आईडी का उपयोग करना एक बुद्धिमान निर्णय है?


47
क्या आपको लगता है कि आईडी सिर्फ साधारण पूर्णांक नहीं हैं? मैं बहुत सी वेब सेवाओं को जानता हूं जो डीबी में पूर्णांक का उपयोग करती हैं लेकिन उन्हें कुछ बेस 64 एन्कोडिंग में प्रदर्शित करती हैं ताकि यूआरएल अच्छे दिखें। दिलचस्प बात यह है कि, यूट्यूबर आईडी लगभग 64 बिट पूर्णांक में मैप करता है।
जोसेफ

2
@rwong लेकिन OPs सवाल यह है कि वे संख्यात्मक आईडी का उपयोग क्यों नहीं करते हैं और उत्तर हो सकता है: वे संख्यात्मक आईडी का उपयोग करते हैं, वे बस बेस 10 या बेस 2 के बजाय बेस 64 में प्रदर्शित करते हैं। मैं नहीं जानता कि निश्चित रूप से, हालांकि, इसलिए मैं ओपी से पूछ रहा हूं कि विशेष रूप से उन्हें क्या लगता है कि आईडी 6464 पूर्णांक में सरल नहीं हैं।
जोसेफ


3
के रूप में है कि एक ही नहीं है यह
the_lotus

जवाबों:


101

Youtube दो कारणों से अनुक्रमिक आईडी का उपयोग नहीं कर सकता है:

  1. इसके डेटाबेस लगभग निश्चित रूप से वितरित किए जाते हैं, जिससे क्रमिक क्रमांकन जटिल हो जाता है।

  2. इसमें एक गोपनीयता विकल्प "अनलिस्टेड वीडियो" है: वे जो खोज परिणामों में दिखाई नहीं देते हैं, लेकिन यदि आप आईडी जानते हैं तो उपलब्ध हैं।

इसलिए, वीडियो आईडी यथोचित यादृच्छिक और अप्रत्याशित होनी चाहिए। क्या आईडी केवल अंकों द्वारा दर्शाई जाती है, या अक्षरों और अंकों के संयोजन से, अप्रासंगिक है: एक प्रतिनिधित्व से दूसरे में एक मामूली मानचित्रण है।


11
न्यूमेरिक आईडी का अनुक्रमिक होना जरूरी नहीं है
सोपेल

28
@ मुझे लगता है कि IMil की बात यह है कि YouTube को ऐसे आईडी जनरेट करने की आवश्यकता है जो विरल हैं। दूसरे शब्दों में, यदि यह अनुमान लगाया जाता है कि आपको केवल 2^40वस्तुओं को संग्रहीत करने की आवश्यकता होगी , तो कुछ आर्किटेक्चर में 2^80या 2^120बिट्स का स्थान चुनने के लिए वैध कारण हैं । कारणों के उदाहरण हैं: टक्कर के लिए तकनीकी रूप से जाँच के बिना टकराव को कम करना; राज़ ("असूचीबद्ध वीडियो") को खोजने के लिए रहस्य बनाने के हिस्से के रूप में कुंजियों की दुर्लभता का उपयोग करना, आदि
rwong

13
@ सवाल यह था कि "वे पूर्णांक (विशेष रूप से अनुक्रमिक वाले) का उपयोग क्यों नहीं करते हैं?" मैं समझाता हूं कि: 1) अनुक्रमिक आईडी अवांछित हैं; 2) पूर्णांक और तार मूल रूप से एक ही चीज हैं
आईएमआईएल

3
"इसलिए" खंड तार्किक रूप से अनुसरण नहीं करता है लेकिन दो गिने हुए अंक सही हैं। यादृच्छिकता एक आवश्यक परिणाम क्यों नहीं है, इसका एक उदाहरण के रूप में: समान अंतराल के साथ क्रमिक क्रमांकन कई स्वतंत्र डेटाबेसों में अद्वितीय आईडी प्रदान करने के लिए काम करेगा जैसे कि परिणाम एक डेटावेयरहाउस में जोड़ा जा सकता है - यह शार्डिंग का एक रूप है। यह है, मान लीजिए कि आप 10000 से अधिक क्षेत्रीय डेटाबेस का अनुमान लगाते हैं (शायद आपके पास अभी 10 ही हैं इसलिए 10000 पर्याप्त है)। तब प्रत्येक db में अद्वितीय अंतिम 4 अंकों के साथ 10000 से एक पहचान स्तंभ की गिनती हो सकती है, मर्ज पर कोई टक्कर नहीं होगी।
davidbak

2
@davidbak यादृच्छिकता के लिए आवश्यकता इस प्रकार है (2)। वास्तव में विभिन्न डेटाबेस इंस्टेंसेस के लिए गैर-अतिव्यापी सीमाएँ असाइन करके विशिष्टता प्राप्त की जा सकती है, लेकिन यह आईडी को पूर्वानुमान योग्य छोड़ देगा।
आईएमआईएल

75
  • आईडी के रूप में: वे Base64 उपयोग कर रहे हैं (अक्षरों का उपयोग a- z, A- Z, 0- 9, -, और _)। इससे उन्हें प्रति वर्ण 6 बिट की जानकारी मिल सकती है। YouTube 11-वर्ण वीडियो आईडी का उपयोग करता है, जिसका अर्थ है कि वे 2 6 * 11 , या 7 * 10 19 आईडी से अधिक उत्पन्न कर सकते हैं । जैसा कि टॉम स्कॉट ने कहा , " यह पृथ्वी पर पृथ्वी के हर एक मानव के लिए लगभग 18,000 वर्षों तक हर मिनट एक वीडियो अपलोड करने के लिए पर्याप्त है।" बेस 64 के साथ काम करना भी आसान है, क्योंकि 64 2 की शक्ति है, जिसका अर्थ है कि प्रत्येक वर्ण सटीक संख्या में बिट्स का प्रतिनिधित्व करता है। हम एक ही कारण के लिए हेक्साडेसिमल (बेस 16) का उपयोग करते हैं।

  • आईडी की गैर-अनुक्रमिक प्रकृति पर: इसका मतलब है कि उन्हें उन सभी सर्वरों के बीच एक सिंक्रनाइज़ काउंटर की आवश्यकता नहीं है जो वीडियो को आईडी असाइन करते हैं। वे बस एक यादृच्छिक संख्या उत्पन्न कर सकते हैं, जांचें कि क्या यह पहले से ही उपयोग में है, और वहां से जाएं। यहां तक ​​कि वे प्रत्येक सर्वर को IDs के ब्लॉक को चुनने और डुप्लिकेट चेकिंग को समाप्त करने के लिए आवंटित कर सकते हैं। मुझे नहीं पता कि वे ऐसा कर रहे हैं, लेकिन वे कर सकते थे।

  • गैर-अनुक्रमिक आईडी का एक और कारण यह है कि यह वह है जो "असूचीबद्ध" वीडियो काम करता है। ये ऐसे वीडियो हैं जो खोज परिणामों में या सुझावों के अनुसार दिखाई नहीं देंगे, लेकिन यदि आपको लिंक मिल गया है तो यह सुलभ है। यदि आप अनुक्रमिक गिनती का उपयोग कर रहे हैं, तो आप बस एक वीडियो पर जा सकते हैं, एक-एक करके आईडी बढ़ा सकते हैं, और असूचीबद्ध वीडियो का विचार अब टूट गया है।

  • गैर-अनुक्रमिक आईडी प्रतियोगियों से जानकारी छिपाने में भी मदद करती है, जैसे कि वीडियो की कुल राशि, या प्रति समय अपलोड किए गए वीडियो की संख्या।

मैं टॉम स्कॉट के वीडियो की अत्यधिक अनुशंसा कर सकता हूं । उनकी जानकारी लगभग हमेशा दिलचस्प और सटीक दोनों होती है।


6
यह भी बताते हैं कि बेस 64 एन्कोडिंग के 11 अक्षर 66 बिट्स की जानकारी संग्रहीत करते हैं, जिसका अर्थ है कि वे आसानी से 64 बिट पूर्णांक को ऐसे स्ट्रिंग में मैप कर सकते हैं। आंतरिक रूप से, वे वैसे भी 64 बिट इंट का उपयोग कर सकते हैं (लेकिन ऐसा करने की आवश्यकता नहीं है)।
बर्नहार्ड हिलर

1
तुलना के लिए, पारंपरिक दशमलव प्रतिनिधित्व को बेस 64 के साथ 9 वर्णों तक "वर्ण" के रूप में 20 वर्णों की आवश्यकता हो सकती है।
dan04

टॉम स्कॉट वीडियो इसे पूरी तरह से समझाता है।
एजीबी

13
  • इंटेगर उस पैमाने को ठीक नहीं करते हैं, "सामान्य" 32-बिट अहस्ताक्षरित पूर्णांक केवल 4 बिलियन से अधिक होगा।

  • वे शायद यह जानना न चाहें कि उनके पास कितने आइटम हैं या वे जिस दर से बढ़ रहे हैं, उस पर नज़र रखते हैं।

  • पत्र अंकों की तुलना में अधिक जानकारी रख सकते हैं, आपको उसी "संख्या" को व्यक्त करने के लिए कम अक्षरों की आवश्यकता होती है। एक बड़े अनुक्रमणिका डेटाबेस के लिए यह जोड़ सकता है।


7
1) एक का उपयोग कर सकते हैं int 64
Rakori

4
२) क्यों? ........... वे वैसे भी सभी सार्वजनिक हैं। जो सार्वजनिक नहीं हैं - सुलभ नहीं हैं। वह यह है
Rakori

3
3) क्या आप विस्तृत कर सकते हैं? क्या जानकारी व्यक्त करें?
राकोड़ी

2
1 के लिए: वही int32 और int64 के लिए चला जाता है। जबकि int64 संभावित रूप से बड़ा है, यह काफी बड़ा नहीं हो सकता है।
नेफो

3
डेटाबेस में आप एक संख्या को एक संख्या के रूप में संग्रहित करेंगे। तो एक 32 बिट इंट 32 बिट ले जाएगा। पाठ में घनत्व कम होगा (कितना
घटिया

8

1) कुछ वेबसाइट अपने आईडी में अक्षरों का उपयोग क्यों करते हैं? क्या वे तार हैं?

हम नहीं जानते कि क्या वे वेबसाइटें अपने डेटाबेस में स्ट्रिंग के रूप में आईडी स्टोर करती हैं। संख्या और तार वास्तव में कंप्यूटर के समान हैं। एक स्ट्रिंग सिर्फ एक संख्या है, बस एक अलग आधार के साथ दिखाया गया है। 'A' = 0x41 = 65 = 0b1000001, कंप्यूटर के लिए यह सब एक ही है। लेकिन अगर आप इसे प्रदर्शित करते हैं, तो आधार जितना बड़ा होगा, प्रतिनिधित्व उतना ही कम होगा, और छोटे URL मनुष्यों के लिए पढ़ना और साझा करना आसान होगा। YouTube और Imgur जैसी साइटें आधार 62 (अक्षर, ऊपरी और निचले मामले, प्लस अंक) या बड़े (एक डैश या अन्य मान्य URL वर्ण जोड़ते हैं) का उपयोग करती हैं, जो बड़ी संख्या के लिए अपेक्षाकृत कम है। आप क्या उपयोग करना पसंद करेंगे, youtu.be/23489234892348234933या youtu.be/B9k6KMrv8vh?

2) गैर-अनुक्रमिक आईडी का उपयोग क्यों किया जाता है?

IMil द्वारा उत्तर इसे अच्छी तरह से समझाता है:

Youtube दो कारणों से अनुक्रमिक आईडी का उपयोग नहीं कर सकता है:

  • इसके डेटाबेस लगभग निश्चित रूप से वितरित किए जाते हैं, जिससे क्रमिक क्रमांकन जटिल हो जाता है।

  • इसमें एक गोपनीयता विकल्प "अनलिस्टेड वीडियो" है: वे जो खोज परिणामों में दिखाई नहीं देते हैं, लेकिन यदि आप आईडी जानते हैं तो उपलब्ध हैं।

ये भी बताते हैं कि आईडी इतनी बड़ी क्यों है: (YouTube 23,489,234,892,348,234,933 अलग-अलग वीडियो की मेजबानी नहीं करता है, जाहिर है)

  • आईडी बनाते समय, यदि आप गलती से एक ही आईडी को दो बार जनरेट करते हैं, तो यह एक समस्या है, इसलिए आपको जन्मदिन की समस्या को रोकने के लिए एक बड़ी आईडी की आवश्यकता है

  • अगर लोग किसी वीडियो के लिए इस्तेमाल की जा रही वैध आईडी का मौका बहुत छोटा नहीं है, तो लोग केवल असूचीबद्ध वीडियो के URL का अनुमान लगा सकते हैं।


3
> "YouTube 23,489,234,892,348,234,933 अलग-अलग वीडियो होस्ट नहीं करता है, जाहिर है" मुझे यकीन नहीं है कि यह स्पष्ट है या नहीं;)
unperson325680

People can just guess the URL of unlisted videos if the chance of any given valid ID being used for a video isn't very, very small.- आप कैसे जानते हैं कि एक असूचीबद्ध वीडियो उसके लेखक को छोड़कर सभी के लिए सुलभ नहीं है? भले ही किसी और ने इसकी आईडी का अनुमान लगाया हो
रकौरी


2
@progo मेरा मतलब है कि अगर दुनिया में हर एक व्यक्ति ने औसतन YouTube पर 3.3 बिलियन वीडियो अपलोड किए हैं ...?)
जसमीजन

5

क्यों न केवल पूर्णांकों, विशेष रूप से अनुक्रमिक वाले? और कब, किन मामलों में पूर्णांक के बजाय ऐसी स्ट्रिंग आईडी के लिए एक बुद्धिमान निर्णय है?

  • बेहतर UTF-8 स्थान - जब आप किसी संख्या को एक स्ट्रिंग में बदलते हैं तो आपको प्रति वर्ण (0-9) में अधिकतम 10 संयोजन मिलते हैं, लेकिन जब आप किसी भी अल्फा संख्या वर्ण की अनुमति देते हैं तो आपको प्रति वर्ण 62 संयोजन मिलते हैं (az, AZ, 0-9) ), इसलिए अल्फ़ान्यूमेरिक स्ट्रिंग्स का उपयोग करके यदि आप न्यूमेरिक स्ट्रिंग्स का उपयोग करते हैं, तो आप कम यूरल्स का उत्पादन कर सकते हैं। यह उन साइटों के लिए महत्वपूर्ण है जहां उपयोगकर्ता यूट्रल साझा कर रहे हैं - जैसे कि Youtube और Imgur।
  • अनुक्रमिक पूर्णांकों का उत्पादन करना अधिक कठिन होता है। क्रमिक रूप से बढ़ते पूर्णांक का उत्पादन करने के लिए आपके पास या तो एक थ्रेड होना चाहिए जो संख्याओं का उत्पादन करता है, या एक वितरित सिस्टम में कई मेजबानों का समन्वय करता है, और जब आप Youtube या Imgur जैसी उच्च मात्रा का अनुप्रयोग चलाते हैं, जो एक यादृच्छिक रूप से उत्पन्न स्ट्रिंग के रूप में अच्छी तरह से पैमाने पर नहीं होता है। (यह कहने के लिए नहीं कि वे बेतरतीब ढंग से पैदा कर रहे हैं )

एक अलग रूप में रूप में, यह ज़रूरी नहीं है कि आंतरिक प्रतिनिधित्व है एक स्ट्रिंग। वे बहुत कम url के लिए अल्फ़ान्यूमेरिक स्ट्रिंग के रूप में एक संख्यात्मक पहचानकर्ता को एन्कोडिंग कर सकते हैं।


1
2) एक स्ट्रिंग आईडी के मामले में, लेकिन आपको यह सत्यापित करना होगा कि एक नया रिकॉर्ड डीबी में डालने से पहले ही एक स्ट्रिंग आईडी तैयार की गई है। एक अंतर आईडी के साथ फिर क्या अंतर है?
रकौरी

@ रोरिन भी UUIDv4 के रूप में सरल रूप में कुछ का उपयोग करते समय टकराव की संभावना न्यूनतम है। पर्याप्त यादृच्छिकता का उपयोग करें और मौका काफी गैर-मौजूद है, ताकि दोहराव को वास्तव में मान्य करने की आवश्यकता न हो।
एंडी

1
@davidpacker और वह कैसे पूर्णांक बनाने से भिन्न है?
सोपेल

@ सोपेल जैसा कि सैमुअल ने कहा है, पूर्णांक स्ट्रिंग्स की तुलना में अधिक जगह ले लेंगे, यानी लंबे समय तक रहेंगे। अन्यथा, वास्तव में कोई अंतर नहीं है।
एंडी

1
@davidpacker केवल जब मुद्रित
Sopel

2

आपके कहे अनुसार किया है कि यह क्योंकि हुड सब कुछ के तहत एक सार्वभौमिक अद्वितीय ID सिर्फ नंबरों का उपयोग कर उपयोग करने के लिए आसान होगा सिर्फ 0और 1है और आपको अधिक सटीक 128 बिट या अधिक करने के लिए जा रहा करने के लिए संख्या का विस्तार कर सकते हैं।

मुझे लगता है कि मुख्य कारण यह है कि, कुछ मनमाने ढंग से तय सीमा जैसे uint32(सिर्फ एक उदाहरण के लिए), यदि आप पत्रों का उपयोग करते हैं तो आपके पास कुल मिलाकर एक छोटी आईडी हो सकती है।

मुझे लगता है कि यह URL के लिए एक एस्थेटिक्स कारण है। 4,129,873,773अक्षरों के साथ होने के बजाय यह बहुत छोटा है Fu837t(बस मेरे द्वारा बनाया गया काल्पनिक)। एक उपयोगकर्ता अपने मित्र को देने के लिए URL को याद रखने में सक्षम हो सकता है। Youtube जैसे प्लेटफार्मों में आमतौर पर UUIDs 32 बिट से अधिक होते हैं, क्योंकि वे अंतरिक्ष से जल्दी बाहर निकल जाते हैं।


3
मुझे लगता है कि यह जवाब है। तार का उपयोग न तो अधिक कुशल है और न ही विशिष्टता बनाए रखने के लिए आसान है। इसका कारण यह है कि इसका url के रूप में प्रतिनिधित्व करना आसान है
सोपेल

यदि कोई उपयोगकर्ता Fu837t याद रखने में सक्षम है, लेकिन क्या वह 2390 याद नहीं रख सकता है?
रकोड़ी

4
@ राकोरी: Fu837t की तुलना 2223955238 से होगी, इसलिए हाँ। 2390 को "Vg" के रूप में एन्कोड किया जाएगा, इसलिए: हाँ भी।
मूइंग डक

@MingDuck, नहीं। आप कैसे जानते हैं कि स्ट्रिंग आईडी बनाने के लिए एल्गोरिथ्म क्या है?
राकोरी

3
@ राकोरी यह एक एल्गोरिथ्म नहीं है, यह एक एन्कोडिंग है। विभिन्न एन्कोडिंगों के बीच संख्याओं को स्थानांतरित करने के लिए एल्गोरिदम हैं, लेकिन जिसका उपयोग किया जाता है वह तब तक कोई फर्क नहीं पड़ता जब तक कि एन्कोडिंग अच्छी तरह से परिभाषित हो। यूआरएल सुरक्षित base64 एन्कोडिंग अच्छी तरह से जाना जाता है और मानकीकृत है
जोसेफ

2

एक छोटा URL वांछनीय है क्योंकि यह लिंकिंग और साझा करने को सरल बनाता है (जैसे कि आप किसी एसएमएस में लिंक साझा कर सकते हैं, यह टाइप करने के लिए तेज़ है और इसी तरह)। Youtube या Imgurl जैसी सेवाएँ चाहती हैं कि आप URLs को आकस्मिक रूप से साझा करें, इसलिए यह एक महत्वपूर्ण विचार है।

संख्यात्मक आईडी के बजाय अल्फ़ान्यूमेरिकल आईडी का उपयोग करने के लिए आपको उसी बिट-आकार की आईडी को व्यक्त करने के लिए कम वर्णों की आवश्यकता होती है। उदाहरण के लिए 6 अंक आपको एक लाख यूनिक आईडी देते हैं लेकिन 6 अल्फ़ान्यूमेरिक वर्ण (बेस 64 सेट का उपयोग करके) आपको 68 बिलियन अतिरिक्त पहचानकर्ता प्रदान करते हैं।

हम सभी जानते हैं, अल्फ़ान्यूमेरिकल पहचानकर्ता अनुक्रमिक संख्या हो सकते हैं, बस आधार 64 जैसे अल्फ़ान्यूमेरिक प्रारूप में एन्कोडेड। लेकिन अक्सर वाणिज्यिक सेवाएं लोगों को आईडी के अनुमान लगाने से रोकने और ग्राहकों की राशि जैसी व्यावसायिक जानकारी का खुलासा करने से बचने के लिए अनुक्रमिक कोड निकालती हैं।


1

गैर-संख्यात्मक आईडी का उपयोग करने के कई कारण हैं, लेकिन यह भी समझें कि वर्णमाला वर्णों के साथ सभी मान वास्तव में तार नहीं हैं। हर मिनट ( रेफ ) पर 300 घंटे के वीडियो अपलोड करने के आदेश पर YouTube के पास वीडियो की एक अविश्वसनीय संख्या की प्रतिष्ठा है । उन वीडियो का प्रतिनिधित्व करने वाले अद्वितीय पूर्णांक काफी लंबे हो सकते हैं, इसलिए बेस 64 यूआरएल एन्कोडेड नंबर ( रेफरी ) जैसे कुछ का उपयोग करें ।

पहचानकर्ता के प्रकार:

  • सरल पूर्णांक: (12345, 981027489382493)
  • बेस 16 पूर्णांक: 123456789abcdef - हेक्स के रूप में भी जाना जाता है
  • बेस 64 पूर्णांक: 9b6tMZS
  • पठनीय तार: 12032017-मेरा-भयानक-लेख -01 पढ़ें

वे सभी अपनी ताकत और कमजोरियां हैं। जितने अनूठे चरित्र आप अपने पहचानकर्ताओं के लिए उपयोग कर सकते हैं, उतने कम वर्ण आपको किसी संख्या का प्रतिनिधित्व करने के लिए चाहिए। बेस 64 नंबर एक बहुत अच्छा समझौता है क्योंकि एक स्थापित संस्करण है जो URL के लिए काम करता है और संख्या 6 से 8 (यानी 3/4 आकार) का प्रतिनिधित्व करने के लिए आवश्यक वर्णों की संख्या को संकुचित करता है।

पढ़ने योग्य तार ब्लॉगों के लिए काम करते हैं क्योंकि वे खोज क्षमता बढ़ा सकते हैं, और रिकॉर्ड की संख्या छोटा होने पर अद्वितीय शीर्षक उत्पन्न करना बहुत आसान है।


1

सामग्री हैश

"हैश" शब्द मौजूदा, अच्छे, उत्तरों में नहीं मिलता है, इसलिए यहाँ हम चलते हैं:

अक्सर, डेटा को एक स्वतंत्र, कृत्रिम आईडी के बजाय इसकी सामग्री हैश द्वारा पहचाना जा सकता है। यह विशेष रूप से सॉफ्टवेयर में स्पष्ट है जैसे gitकि ZFS जैसी फाइल सिस्टम जहां सामग्री हैश का उपयोग करने की यह विशेष संपत्ति न केवल सामान को आसान बनाती है (उदाहरण के लिए डी-डुप्लीकेशन), बल्कि इसमें अन्य अच्छे गुण भी होते हैं जैसे तुच्छ कैशिंग, एक सुरक्षित इतिहास, गीली सड़न का पता लगाना आदि।

हेक्स आमतौर पर हेक्स संख्या (या एक बड़ा अक्षर स्थान) के रूप में आते हैं, इसलिए आप पूर्णांक आईडी नहीं देखते हैं। वहाँ बस रहे हैं कोई पूर्णांक (उन मामलों में)।

यदि आपके डेटा ऑब्जेक्ट अपरिवर्तनीय हैं (जैसे कि ZFS या git); वे छवियों को संग्रहीत करने के लिए बहुत अच्छा होगा, उदाहरण के लिए, बड़े सीडीएन पर। मुझे नहीं पता कि वे विशेष आईडी वास्तव में हैश हैं, लेकिन यह निश्चित रूप से समझ में आता है (और जैसा कि माइकल केजर्लिंग ने कहा था, शॉर्ट आईडी संभवतः स्पष्ट कारणों के लिए हैश नहीं हैं - तुलना के रूप में, git SHA-1 मान का उपयोग करता है जो 20% या 40 है हेक्स अंक)।


1
कम से कम Youtube वीडियो आईडी हैश होने के लिए बहुत कम हैं। जन्मदिन का विरोधाभास लागू होता है; संक्षेप में, औसतन, n बिट्स के हैश स्थान के साथ, आपको 2 ^ (n / 2) फ़्लेब्स देखने के बाद टकराव दिखाई देने लगेगा। आईडी में ~ 60-70 बिट्स के साथ, यह विशिष्टता के 30-35 बिट्स या कुछ बिलियन प्रविष्टियां हैं। मुझे पूरा यकीन है कि वे अब तक की तुलना में अधिक वीडियो होस्ट करते हैं। और, ज़ाहिर है, अधिकांश हैश ठीक पूर्णांक हैं; वे सामान्य रूप से दशमलव रूप में मुद्रित नहीं होते हैं, इसका कोई असर नहीं पड़ता है कि वे पूर्णांक हैं या नहीं। मोटे तौर पर, एक ही डेटा को शायद फ्लोटिंग-पॉइंट बाइनरी डेटा के रूप में व्याख्या किया जा सकता है ...
एक CVn

3
@ MichaelKjörling: खैर, YouTube वीडियो आईडी क्रिप्टोग्राफ़िक हैश होने के लिए बहुत कम हैं , लेकिन बहुत सारे हैश फ़ंक्शंस हैं जिनके 64 बिट्स आउटपुट या उससे कम हैं - CRC-16/32/64, Java hashCode(), आदि, बेशक, छोटा हैश, अधिक संभावना यादृच्छिक टक्कर हैं।
dan04

यदि आप चाहते थे कि लोग URL को याद रखें, तो आपने इसे महत्वपूर्ण नहीं बनाया होगा। और हर अक्षर के सामने "ऊपरी" या "निचला" कहने का मतलब केवल संख्याओं की तुलना में बहुत कम कुशल है।
लीनो नोव

0

ठीक एक कारण यह है कि पात्रों को पात्रों के रूप में भेजा जाता है और किसी भी तरह पूर्णांक के रूप में नहीं भेजा जाता है। इसका कारण यह है कि HTTP Get कैसे काम करता है।

जब आप कहते हैं, "क्यों नहीं एक पूर्णांक का उपयोग करें?" खैर, पूर्णांक को फिर से काट दिया जाता है और प्रत्येक अंक को एक चरित्र के रूप में भेजा जाता है और आप किसी भी तरह से वर्णों की एक स्ट्रिंग के साथ समाप्त होते हैं। तो एक चरित्र के लिए सभी विकल्पों का उपयोग क्यों न करें?

मानव कारक भी है:

उदाहरण के लिए imgur लें: https://imgur.com/ ***** / s6UqP

s6UqP,

प्रत्येक वर्ण के लिए सीमा है: z कैपिटल के माध्यम से, z सब-कैपिटल के माध्यम से, और स्ट्रिंग में हर स्थिति के लिए 0 से 9 = 26+ 26+ 10 = 62 विकल्प। पांच पदों के साथ कि 916132832 संभावित संयोजन हैं। यदि आप केवल संख्याओं का उपयोग करेंगे, तो आपको 9 अंकों की आवश्यकता होगी।

लोग स्मृति में लगभग 7 वस्तुओं को पकड़ सकते हैं, 9 अंक बहुत अधिक हैं, 5 वर्ण उल्लेखनीय हैं।

जादुई संख्या 7


यह Gfycat को याद करता है: वे तीन शब्दों, दो विशेषणों और एक जानवर के नाम का उपयोग करते हैं। क्योंकि कई संभावनाएं हैं ( 1502 एडजस्टिव और 1751 जानवर ) उनके पास केवल तीन वस्तुओं का उपयोग करके 3 बिलियन से अधिक संयोजन हैं।
गुस्तावो रोड्रिग्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.