5

Google क्लाउड स्पैनर recommends प्राथमिक कुंजी के लिए monotonically बढ़ते पूर्णांक का उपयोग करने के खिलाफ Autoincrement। यह शीर्ष-स्तरीय तालिकाओं के लिए एक पूर्ण ज्ञान बनाता है क्योंकि यह हॉटस्पॉट बनाएगा। लेकिन interleaved टेबल के बारे में क्या? वे वही नोड पर वैसे भी संग्रहीत किए जा रहे हैं। उन्हें एक क्रमबद्ध क्रम में भी रखा जाता है ताकि यूयूआईडी या कुछ अन्य यादृच्छिक आईडी का उपयोग उप-स्थानिक लगता है, खासकर यदि वे सॉर्ट किए गए क्रम में भी पुनर्प्राप्त किए जा रहे हैं।Google क्लाउड स्पैनर

अधिकतम आईडी पढ़ रहा है और अधिकतम पंक्ति के लिए maxId + 1 को सही समाधान यहां संग्रहीत कर रहा है?

उत्तर

3

इंटरलीव्ड चाइल्ड टेबल पंक्तियों को मूल तालिका की कुंजी के साथ उपसर्ग किया जाता है, इसलिए जब तक पैरेंट कुंजी गैर-अनुक्रमिक नहीं होती है तब तक उन्हें अनुक्रमिक कुंजी के रूप में सोचना ठीक है। इस स्थिति में आमतौर पर ठीक होना चाहिए क्योंकि आप ध्यान देते हैं, यह संपूर्ण कुंजी रेंज एक स्पैन सर्वर द्वारा की जाएगी। यदि आप इस स्थिति में एक स्पैन सर्वर को हॉट स्पॉट करने के बारे में चिंतित हैं तो तालिका को अंतःस्थापित करना सबसे अच्छा होगा।

यह भी ध्यान दिया जाना चाहिए कि यह वास्तव में बढ़ रहा है या कुंजी को कम कर रहा है, जिनकी सिफारिश की जाती है, क्योंकि उनके समान प्रभाव होते हैं, बस सीमा के विपरीत किनारे पर।

+0

उत्तर के लिए धन्यवाद। Interleaved टेबल में बढ़ती संख्या का उपयोग करने के लिए सबसे अच्छा अभ्यास क्या है? क्या यह आसान है: अधिकतम = पढ़ें ("उपरोक्त से अधिकतम MAX (सबआईडी) जहां ParentId = ..."); लिखें ("सबटेबल (सबआईडी, ...) मूल्यों में प्रवेश करें (" + (अधिकतम + 1) + ", ...)") ? –

+1

आम तौर पर यदि आवश्यक हो तो अनुक्रमिक आईडी के लिए कॉलम के साथ यूयूआईडी का उपयोग और उपयोग करना एक अच्छा विचार है। वहां कई खतरे हैं जो वहां रहती हैं, जैसे कि यह सुनिश्चित करना कि आप इसे लेनदेन में करते हैं, तो क्या होता है यदि सबसे हालिया (और अधिकतम) मान हटा दिया जाता है - क्या आप इसका पुन: उपयोग कर सकते हैं या नहीं? काउंटर को स्टोर करने और सुनिश्चित करने के लिए कि आपके पास उचित लेन-देन हैं, एक और तालिका का उपयोग करना शायद बेहतर है। –

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