2011-03-31 14 views
5

मैं अपनी डिजाइन संवेदनशीलताओं को LAMP स्टैक से माइक्रोसॉफ्ट स्टैक में स्थानांतरित करने की कोशिश कर रहा हूं, और मैंने बस कुछ सोचा - मैं एक GUID का उपयोग कब करना चाहूंगा? पुराने, विश्वसनीय ऑटो-वृद्धि वाले int की तुलना में इसका क्या लाभ/कमी है? GUIDs साथGUID बनाम int आईडी ऑटो-वृद्धि

उत्तर

8

आपके अनुभव को कभी भी ऑटोइनक्रमेंटल आईडी से परे कुछ भी चाहिए, यह सुझाव दे सकता है कि GUID अक्सर किसी समस्या की तलाश में समाधान होता है। उनका उपयोग करें जब और यदि आप कभी भी एक आवश्यकता में भाग लेते हैं जहां आपका परिचित पैटर्न काम नहीं करता है। माइक्रोसॉफ्ट अप्रासंगिक है।

मैंने देखा है कि एकमात्र यथार्थवादी परिदृश्य दो स्रोतों से तालिकाओं को विलय कर रहा है।

+0

बीज डेटा के लिए गुड्स खराब हैं –

3

एक समस्या यह है:

क्योंकि वे अनुक्रमिक नहीं कर रहे हैं, डेटाबेस कड़ी मेहनत करने की अनुक्रमणिका अद्यतन करने के लिए होगा। अनुक्रमिक आईडी के साथ, यह आमतौर पर इसे अंत तक जोड़ सकता है (अधिक या कम)। चूंकि GUID यादृच्छिक हैं, इसलिए इसे मौजूदा ब्लॉक में फिट करना होगा। उस ने कहा, हम कुछ तालिकाओं के लिए GUID का उपयोग करते हैं और वे काफी भारी भार के तहत भी ठीक काम करते हैं।

+0

ठीक है कल्पना करने के लिए आसान है, लेकिन जब मैं का उपयोग करना चाहते हैं उन्हें? –

+1

अनुक्रमिक मार्गदर्शिकाएं इस समस्या के आसपास काम करती हैं, उदाहरण के लिए http://stackoverflow.com/questions/170346/what-are-the-performance-improvement-of-sequential-guid-over-standard-guid – Douglas

1

"पुराना, भरोसेमंद ऑटो-वृद्धिशील int" इस बात पर निर्भर करता है कि आपके डेटाबेस को कितना स्केलेबल होना चाहिए। जब आप कम से कम दो स्वामी के साथ सेटअप करते हैं तो ऑटो वृद्धिशील मामूली मामले में काम करना बंद कर देता है। निश्चित रूप से, इसके आसपास काम करना बहुत मुश्किल नहीं है, क्योंकि यह एक आम समस्या है; विभिन्न डेटाबेस इंजन स्वामी के बीच अनुक्रम का समन्वय कर सकते हैं, उदाहरण के लिए केवल एक मास्टर किसी दिए गए अनुक्रम से आवंटित हो सकता है।

जब आप डेटा को खराब करते हैं, तो आमतौर पर कुंजी से शार्ड को जानना वांछनीय है। एक ऑटो incremented आईडी में जानकारी नहीं है कि किस रिकॉर्ड को उस रिकॉर्ड को होस्ट करना चाहिए।

GUID इस समस्या को एक अलग तरीके से हल करता है; दो अलग-अलग स्वामी के पास अलग मेजबान पहचानकर्ता होते हैं (आमतौर पर एक मैक पता)। चूंकि इसका उपयोग एक नए जीयूआईडी की गणना में किया जाता है, इसलिए अलग-अलग स्वामी मार्गदर्शित नहीं कर सकते हैं। इसके अलावा, चूंकि मेजबान आईडी का हिस्सा है, इसलिए इसका उपयोग रिकॉर्ड रखने वाले शर्ड को सीधे पहचानने के लिए किया जा सकता है।

कोई तीसरा विकल्प कोई सरोगेट कुंजी का उपयोग नहीं करना है (न तो ऑटो वृद्धि पूर्णांक और न ही guids)।

+0

एकाधिक GUID को देखना सामान्य है एक ही मेजबान से; या मैक पते के बिना डिवाइस। – dkretz

+0

जिज्ञासा से बाहर, आप डुप्लिकेट कितनी बार देखते हैं? – Dave

+0

वह उत्तर ज्यादातर मेरे सिर पर चला गया। मुझे एक समय में 1 डीबी से अधिक जटिल के साथ काम नहीं करना पड़ा। फिर भी, मुझे अनुसंधान के लिए कुछ शर्तों के साथ +1 प्रदान करने के लिए +1। ;-) –

0

मैं निम्नलिखित कारणों के लिए Guid के बजाय पूर्णांक आईडी का उपयोग करने की सिफारिश करेंगे:

  • इंट आईडी 4 बाइट (32 बिट) तथापि Guid है 16 बाइट (128 बिट) के आकार जो 4 के एक आकार की है बार बड़ा इस मामले में आप प्रदर्शन की समस्याओं और भंडारण implaication
  • डिफ़ॉल्ट GUIDs तक हो सकता है कर रहे हैं अनुक्रमिक नहीं (सावधान हो)
  • यह टेबल
  • के बीच संबंधों और रिश्तों
संबंधित मुद्दे