मैं अपनी डिजाइन संवेदनशीलताओं को LAMP स्टैक से माइक्रोसॉफ्ट स्टैक में स्थानांतरित करने की कोशिश कर रहा हूं, और मैंने बस कुछ सोचा - मैं एक GUID का उपयोग कब करना चाहूंगा? पुराने, विश्वसनीय ऑटो-वृद्धि वाले int की तुलना में इसका क्या लाभ/कमी है? GUIDs साथGUID बनाम int आईडी ऑटो-वृद्धि
उत्तर
आपके अनुभव को कभी भी ऑटोइनक्रमेंटल आईडी से परे कुछ भी चाहिए, यह सुझाव दे सकता है कि GUID अक्सर किसी समस्या की तलाश में समाधान होता है। उनका उपयोग करें जब और यदि आप कभी भी एक आवश्यकता में भाग लेते हैं जहां आपका परिचित पैटर्न काम नहीं करता है। माइक्रोसॉफ्ट अप्रासंगिक है।
मैंने देखा है कि एकमात्र यथार्थवादी परिदृश्य दो स्रोतों से तालिकाओं को विलय कर रहा है।
एक समस्या यह है:
क्योंकि वे अनुक्रमिक नहीं कर रहे हैं, डेटाबेस कड़ी मेहनत करने की अनुक्रमणिका अद्यतन करने के लिए होगा। अनुक्रमिक आईडी के साथ, यह आमतौर पर इसे अंत तक जोड़ सकता है (अधिक या कम)। चूंकि GUID यादृच्छिक हैं, इसलिए इसे मौजूदा ब्लॉक में फिट करना होगा। उस ने कहा, हम कुछ तालिकाओं के लिए GUID का उपयोग करते हैं और वे काफी भारी भार के तहत भी ठीक काम करते हैं।
ठीक है कल्पना करने के लिए आसान है, लेकिन जब मैं का उपयोग करना चाहते हैं उन्हें? –
अनुक्रमिक मार्गदर्शिकाएं इस समस्या के आसपास काम करती हैं, उदाहरण के लिए http://stackoverflow.com/questions/170346/what-are-the-performance-improvement-of-sequential-guid-over-standard-guid – Douglas
"पुराना, भरोसेमंद ऑटो-वृद्धिशील int" इस बात पर निर्भर करता है कि आपके डेटाबेस को कितना स्केलेबल होना चाहिए। जब आप कम से कम दो स्वामी के साथ सेटअप करते हैं तो ऑटो वृद्धिशील मामूली मामले में काम करना बंद कर देता है। निश्चित रूप से, इसके आसपास काम करना बहुत मुश्किल नहीं है, क्योंकि यह एक आम समस्या है; विभिन्न डेटाबेस इंजन स्वामी के बीच अनुक्रम का समन्वय कर सकते हैं, उदाहरण के लिए केवल एक मास्टर किसी दिए गए अनुक्रम से आवंटित हो सकता है।
जब आप डेटा को खराब करते हैं, तो आमतौर पर कुंजी से शार्ड को जानना वांछनीय है। एक ऑटो incremented आईडी में जानकारी नहीं है कि किस रिकॉर्ड को उस रिकॉर्ड को होस्ट करना चाहिए।
GUID इस समस्या को एक अलग तरीके से हल करता है; दो अलग-अलग स्वामी के पास अलग मेजबान पहचानकर्ता होते हैं (आमतौर पर एक मैक पता)। चूंकि इसका उपयोग एक नए जीयूआईडी की गणना में किया जाता है, इसलिए अलग-अलग स्वामी मार्गदर्शित नहीं कर सकते हैं। इसके अलावा, चूंकि मेजबान आईडी का हिस्सा है, इसलिए इसका उपयोग रिकॉर्ड रखने वाले शर्ड को सीधे पहचानने के लिए किया जा सकता है।
कोई तीसरा विकल्प कोई सरोगेट कुंजी का उपयोग नहीं करना है (न तो ऑटो वृद्धि पूर्णांक और न ही guids)।
एकाधिक GUID को देखना सामान्य है एक ही मेजबान से; या मैक पते के बिना डिवाइस। – dkretz
जिज्ञासा से बाहर, आप डुप्लिकेट कितनी बार देखते हैं? – Dave
वह उत्तर ज्यादातर मेरे सिर पर चला गया। मुझे एक समय में 1 डीबी से अधिक जटिल के साथ काम नहीं करना पड़ा। फिर भी, मुझे अनुसंधान के लिए कुछ शर्तों के साथ +1 प्रदान करने के लिए +1। ;-) –
मैं निम्नलिखित कारणों के लिए Guid के बजाय पूर्णांक आईडी का उपयोग करने की सिफारिश करेंगे:
- इंट आईडी 4 बाइट (32 बिट) तथापि Guid है 16 बाइट (128 बिट) के आकार जो 4 के एक आकार की है बार बड़ा इस मामले में आप प्रदर्शन की समस्याओं और भंडारण implaication
- डिफ़ॉल्ट GUIDs तक हो सकता है कर रहे हैं अनुक्रमिक नहीं (सावधान हो)
- यह टेबल के बीच संबंधों और रिश्तों
- 1. GUID INT पहचान बनाम
- 2. क्या अंतिम आईडी GUID हैं?
- 3. GUID: varchar (36) बनाम uniqueidentifier
- 4. MySQL: bigint बनाम int
- 5. MySQL मध्यम int बनाम int प्रदर्शन
- 6. int बनाम एनएसएनंबर बनाम एनएसआईएनटेगर
- 7. आईडी बनाम अनोखा आईडी बनाम क्लाइंट आईडी बनाम UniqueClientID बनाम StaticClientID?
- 8. सी ++ int बनाम लंबे
- 9. Math.random() बनाम Random.nextInt (int)
- 10. ट्यूपल <int, int> बनाम int [2] मेमोरी उपयोग
- 11. GUID
- 12. GUID
- 13. आईडी
- 14. GUID को सत्यापित करने के लिए एक GUID
- 15. एचटीएमएल डोम्स, आईडी बनाम कोई आईडी नहीं?
- 16. एप्लिकेशन आईडी जनरेटर बनाम डेटाबेस आईडी जेनरेटर
- 17. कोर ऑब्जेक्ट आईडी बनाम स्थायी ऑब्जेक्ट आईडी
- 18. कनवर्ट करें .NET GUID को MongoDB ऑब्जेक्ट आईडी
- 19. PHP सुरक्षा - (int) बनाम FILTER_VALIDATE_INT
- 20. लंबे डबल बनाम लंबे int
- 21. int का स्पष्टीकरण? बनाम पूर्णांक
- 22. ऑटोइनक्रिकमेंट फ़ील्ड्स के लिए: आईडी (आईडी) बनाम आईडी 1 आईडी ऑर्डर आईडी आईडी
- 23. कास्टिंग (int?) शून्य बनाम नया int?() - कौन सा बेहतर है?
- 24. IList <int> बनाम सूची <int>
- 25. int i बनाम int अनुक्रमणिका आदि कौन सा बेहतर है?
- 26. डेटाबेस डिज़ाइन प्राइमे कुंजी, आईडी बनाम स्ट्रिंग
- 27. COUNT (आईडी) बनाम COUNT (*) MySQL
- 28. Django प्रश्न - आईडी बनाम पीके
- 29. थ्रेड आईडी बनाम थ्रेड हैंडल
- 30. this.id बनाम $ (this) .attr ('आईडी')
बीज डेटा के लिए गुड्स खराब हैं –