2012-02-21 12 views
5

मैं एक नई परियोजना के डेटाबेस डिज़ाइन के साथ व्यस्त हूं, और मुझे यकीन नहीं है कि यूयूआईडी या सामान्य तालिका-अद्वितीय ऑटो-वृद्धि आईडी का उपयोग करना है या नहीं।वेब प्रोजेक्ट के लिए यूयूआईडी का उपयोग करना उचित कब है?

अभी तक, मेरे द्वारा बनाई गई साइटें सभी एक ही सर्वर पर चलती हैं, और बहुत भारी यातायात कभी भी चिंता का विषय नहीं रहा है। हालांकि, यह वेब एप्लिकेशन अंततः कई सर्वरों पर एक साथ चल जाएगा, एक एपीआई की सेवा करेगा, और प्रति सेकेंड हजारों अनुरोधों को संसाधित करने की आवश्यकता है, और मैं यह सुनिश्चित करना चाहता हूं कि अब जो डिज़ाइन मैं चुनता हूं वह बाद में इनमें से किसी भी संभावना को अपंग नहीं करता है।

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

तो, में कम: क्या विचार मैं निर्णय लेने से किया जाए या नहीं, सभी डेटाबेस मॉडल के लिए UUIDs उपयोग करने के लिए इतना है कि किसी भी एक वस्तु एक स्ट्रिंग द्वारा विशिष्ट रूप से पहचाना जा सकता है में देना चाहिए रहे हैं, और जब यह करने के लिए उचित है तालिका-दर-तालिका ऑटो-वृद्धि के बजाय इसे प्राथमिक कुंजी के रूप में उपयोग करें?

नोट: मैं this question (When are you truly forced to use UUID as part of the design?) देखा है, और सभी उत्तर पढ़ा है, लेकिन वे ज्यादातर का जवाब "UUIDs कैसे शायद ही कभी टकराने है" के बजाय "जब यह उचित उन्हें इस्तेमाल करने के लिए है"।

उत्तर

2

एक विचार जिसे मैंने यूयूआईडी बनाम ऑटो-वृद्धि ids पर निर्णय लेने के दौरान उपयोग किया है, यह है कि क्या वे उपयोगकर्ता-दृश्यमान होने जा रहे हैं, और यदि ऐसा है, तो क्या मैं चाहता हूं कि उपयोगकर्ता यह जान लें कि मेरे पास कितनी तालिका है । उदाहरण के लिए, अगर मैं सार्वजनिक रूप से अपनी साइट पर पंजीकृत उपयोगकर्ताओं की संख्या नहीं बनाना चाहता था, तो मैं ऑटो-वृद्धि उपयोगकर्ता आईडी निर्दिष्ट नहीं करता।

और आपके द्वारा उठाए गए एक अन्य विशिष्ट बिंदु को संबोधित करने के लिए, अभी भी एकाधिक सर्वरों के साथ स्वत: वृद्धिशील आईडी का उपयोग करना संभव है (हालांकि अंतर्निहित MySQL के साथ नहीं)। आपको बस अलग-अलग ऑफसेट पर सभी आईडी शुरू करने की आवश्यकता है, और तदनुसार वृद्धि। यही है, अगर आपके पास 3 सर्वर थे, तो आप सर्वर ए को 1 पर, सर्वर बी 2 पर शुरू कर सकते हैं, और सर्वर सी 3 पर शुरू कर सकते हैं, और फिर 1 के बजाय प्रत्येक बार 10 से आईडी बढ़ा सकते हैं। इस तरह, आप कोई टकराव की गारंटी नहीं दे सकते।

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

1

यूयूआईडी या GUID विशेष रूप से वेब के लिए बहुत उपयोगी हो सकते हैं। यदि आप UserId को स्टोर करने के लिए ऑटो-वृद्धि मूल्यों का उपयोग करते हैं तो कोई भी आपके वेब पृष्ठों का स्रोत देख सकता है और इसके उपयोग की सादगी देख सकता है। फिर वे डेटा प्राप्त करने के लिए किसी भी पूर्णांक मूल्य का प्रयास कर सकते हैं जिसे वे देखना नहीं चाहते हैं।

GUID किसी भी अनुक्रमिक प्रारूप में नहीं बनाए गए हैं, इसलिए यदि आप उन्हें एक के बाद एक सही बनाते हैं, तो अनुक्रम आसानी से अनुमानित नहीं किया जा सकता है।

मुझे नहीं लगता कि रंगीन 1 = ब्लू, 2 = लाल, 3 = हरा जैसे सरल लुकअप प्रकार डेटा के लिए GUID का उपयोग करना आवश्यक है।

GUID सत्र और राज्य प्रबंधन के लिए भी बहुत उपयोगी हैं।

यह मेरा $ 0.02

है
संबंधित मुद्दे