मैपिंग सेवा को लागू करने के दो तरीके हैं जैसे कि आप वर्णन करते हैं।
- ग्राहकों दुनिया भर में अद्वितीय आईडी सबमिट करते हैं, या
- सर्वर विश्व स्तर पर उत्पन्न करता है अद्वितीय आईडी
ग्राहकों दुनिया भर में अद्वितीय आईडी
जहाँ तक मुझे पता है, 1. केवल प्रयास किया जाना चाहिए प्रस्तुत Guid
एस के साथ, जब तक कि आप एक छोटी बाइट स्ट्रीम में पर्याप्त रूप से अलग जानकारी को क्रैक करने के लिए समान साधन नहीं बनाते। किसी भी तरह से, अगर आप बाइट्स की एक धारा है कि एक विश्व स्तर पर अद्वितीय पहचानकर्ता का प्रतिनिधित्व करते है, तो आप कुछ इस
// source is either a Guid, or some other globally unique byte stream
byte[] bytes = Guid.NewGuid().ToByteArray();
string base64String = Convert.ToBase64String (bytes).Trim ("=");
की तरह अक्षर या अंक कि यादृच्छिक प्रतीत होता है की एक उपयोगकर्ता के पठनीय स्ट्रिंग प्राप्त करने के लिए ऐसा कर सकते हैं, लेकिन अन्य यादृच्छिक में निहित टकराव से बचा जाता है योजनाओं। Guid
में 16 बाइट्स या 128 बिट्स शामिल हैं, जो पूर्ण बेस 64 एन्कोडिंग के लिए लगभग 19 वर्णों का अनुवाद करते हैं।
इस दृष्टिकोण का लाभ यह है कि ग्राहक केंद्रीय प्राधिकरण के बिना अपना स्वयं का छोटा यूरिस उत्पन्न कर सकते हैं। क्यों न हम स्वीकार करते हैं - - नकारात्मक पक्ष यह मोटी लंबाई अगर आप Guid
के साथ रोल, या अपने स्वयं वैश्विक रूप से अद्वितीय बाइट धारा जो लागू करने है त्रुटियों की संभावना है।
आप इस मार्ग जाना करते हैं, दुनिया भर में अद्वितीय बाइट धाराओं या इस तरह के Google'ing पर विचार करें। ओह, और दूर रैंडम बाइट्स से रहना, अन्यथा आप अपने छोटे उरी जनरेटर के टॉप पर टक्कर संकल्प निर्माण करना होगा।
सर्वर विश्व स्तर पर उत्पन्न करता है अद्वितीय आईडी
फिर, इसके बाद के संस्करण के लिए प्राथमिक लाभ यह है कि ग्राहक की उनकी Uris एक प्रायोरी उत्पन्न हो सकता है है। विशेष रूप से काम करता है, तो आप के बारे में एक लंबा चलने के अनुरोध को जाँच करना चाहते हैं प्रस्तुत करने के लिए कर रहे हैं। यह आपकी स्थिति के लिए विशेष रूप से प्रासंगिक नहीं हो सकता है, और केवल सीमित मूल्य प्रदान कर सकता है।
तो, कि एक तरफ, एक सर्वर केंद्रित दृष्टिकोण है, जिसमें एक भी अधिकार उत्पन्न करता है और आईडी बाहर खैरात और अधिक आकर्षक हो सकता है। यदि यह वह मार्ग है जिसे आप चुनते हैं, तो केवल सवाल यह है कि आप कितनी देर तक अपनी उड़ी पसंद करेंगे?
5 वर्णों का इच्छित लंबाई यह मानकर, और मान लीजिए कि आप जाना एक Base64 एन्कोडिंग के साथ, प्रत्येक आईडी प्रति चरित्र 35 बिट या 2^35 [34 359 738 368] विशिष्ट मान 7 के बराबर बिट्स द्वारा अप करने के लिए 5 अक्षर का प्रतिनिधित्व कर सकते चलो । यह एक काफी बड़ा डोमेन है। *
तो यह किसी दिए गए प्रस्तुत करने के लिए एक मूल्य के लौटने का सवाल बन जाता है। शायद यह करने के लिए एक महान कई कई तरीके हैं, लेकिन मैं कुछ इस तरह के साथ एक "मुक्त सूची" के भीतर अपने डेटाबेस में
निकालें मूल्य मुक्त सूची से जब भस्म जाना,
- की गणना के लिए सभी संभव मूल्यों हैं
- मुक्त सूची मूल्य जोड़े जब जारी किया
संवर्द्धन या अनुकूलन
- शामिल हो सकते हैं पर रेंज [0, 2^35] हर मूल्य की गणना न करें, बल्कि एक प्रबंधनीय सबसेट की गणना, एक समय में कहते हैं कि 100 000 मूल्यों, और जब सभी मूल्यों खपत होती है, बस अनुक्रम में एक और 100 000 मूल्यों पैदा करते हैं और जारी रखने के
- जोड़ें मूल्यों के लिए एक समाप्ति तिथि, और आपकी सेवा, वितरित दिन
- की अवधि समाप्त हो मूल्यों अंत रीसायकल जब parallelizing आपकी सेवा बस
निष्कर्ष वितरित सेवाओं के लिए अपने नि: शुल्क सूची के छोटे परस्पर अनन्य सबसेट ख़ैरात
निष्कर्ष यह है कि आप guara करना चाहते हैं ntee विशिष्टता - तो टक्कर एक बड़ी संख्या नहीं है।
* = 34 35 9 738 368 कच्चे डोमेन का आकार है, यह 0 लंबाई से 5 लंबाई की सभी आईडी है। आप कम से कम और 5 लंबाई की अधिकतम करने के लिए सभी आईडी सीमित में रुचि रखते हैं, तो अपने डोमेन 4 (2^28) को 5 (2^35) कम लंबाई 0 के सभी आईडी के लिए लंबाई 0 के सभी आईडी की तरह दिखता है 2 है^35 - 2^28 = 34 091 302 9 12, जो अभी भी काफी बड़ा है :)
क्या आप चाहते हैं कि आप bit.ly सेवा का उपयोग करें? या क्या आपको अपना कस्टम एक रोल करना है? – keyboardP
यह मेरी अपनी साइट के लिए है और यह यूआरएल शॉर्टिंग सेवा नहीं है बल्कि फाइलों के लिए अद्वितीय लघु यूआरएल बनाने के लिए – nLL
कारण मैंने पूछा था, क्योंकि आप bit.ly api: http://www.emadibrahim.com/ का उपयोग कर सकते थे 200 9/05/07/शॉर्ट-यूआरएल-साथ-बिट-ए-ए-इन-नेट/ – keyboardP