है यदि आप न्यूनतम/अधिकतम/औसत क्वेरी कर रहे हैं, तो क्या आप कच्ची तालिका में पंक्तियों की एक श्रृंखला में समेकन तालिकाओं का उपयोग करना पसंद करते हैं?समेकित करने के लिए कुल मिलाकर या नहीं, यह डेटाबेस स्कीमा डिज़ाइन प्रश्न
यह स्पष्ट रूप से एक बहुत ही खुला प्रश्न है और कोई भी सही जवाब नहीं है, इसलिए मैं सिर्फ लोगों के सामान्य सुझावों की तलाश में हूं। मान लें कि कच्चे डेटा तालिका में टाइमस्टैम्प होता है, एक संख्यात्मक विदेशी कुंजी (उपयोगकर्ता आईडी कहें), और एक दशमलव मान (खरीद राशि कहें)। इसके अलावा, मान लें कि तालिका में लाखों पंक्तियां हैं।
मैंने दोनों किया है और फाड़ा है। एक तरफ एकत्रीकरण तालिकाओं ने मुझे काफी तेज प्रश्न दिए हैं लेकिन अतिरिक्त तालिकाओं के प्रसार की लागत पर। एक समेकित सीमा के लिए वर्तमान मूल्यों को प्रदर्शित करने के लिए या तो कच्चे डेटा तालिका में पूरी तरह से वापस जाने या अधिक बढ़िया अनाज वाले संयोजनों को जोड़ने की आवश्यकता होती है। मैंने पाया है कि आवेदन कोड में ट्रैक रखने के लिए किस समेकन तालिका को क्वेरी करना है जब आप सोचेंगे कि अधिक काम है और स्कीमा परिवर्तन की आवश्यकता होगी, क्योंकि मूल एकत्रीकरण सीमा हमेशा पर्याप्त नहीं होगी ("लेकिन मैं देखना चाहता था पिछले 3 वेतन अवधि में हमारी बिक्री! ")।
दूसरी ओर, कच्चे डेटा से पूछताछ दंडनीय रूप से धीमी हो सकती है लेकिन मुझे डेटा श्रेणियों के बारे में बहुत लचीला होने देता है। जब सीमा सीमा बदल जाती है, तो मैं समेकन तालिकाओं को पुनर्निर्माण करने के बजाय बस एक क्वेरी बदलता हूं। इसी प्रकार एप्लिकेशन कोड को कम अपडेट की आवश्यकता होती है। मुझे संदेह है कि अगर मैं अपने अनुक्रमण के बारे में समझदार था (यानी हमेशा अच्छा कवरिंग इंडेक्स होता है), तो मैं कच्चे डेटा से चयन करने के दंड को कम करने में सक्षम होगा लेकिन इसका मतलब पैनासिया नहीं है।
क्या वैसे भी मैं दोनों दुनिया के सर्वश्रेष्ठ हो सकता हूं?
यह किस डेटाबेस के लिए है? –
मैं आमतौर पर MySQL का उपयोग करता हूं लेकिन उम्मीद है कि लोगों की युक्तियां सभी SQL डेटाबेस पर लागू होंगी। – pr1001
@ pr1001: यह एक हद तक एक सामान्य समस्या है, लेकिन कुछ डेटाबेस इस समस्या को आसान बनाने के लिए तंत्र प्रदान करते हैं (उदाहरण के लिए ओरेकल के "भौतिक दृश्य"), इसलिए यह "सही" डेटाबेस-विशिष्ट होने के लिए डिग्री – skaffman