के लिए संग्रहित प्रक्रिया यह प्रदर्शन के लिए एक लेन-देन संबंधी डेटाबेस में डेटा denormalizing की बात आती है, देखते हैं (कम से कम) तीन अलग अलग दृष्टिकोण: संग्रहित प्रक्रियाओं के माध्यम सेपेशेवरों और ट्रिगर की विपक्ष बनाम असमान्यीकरण
पुश अद्यतन जो सामान्यीकृत लेनदेन डेटा और denormalized रिपोर्टिंग/विश्लेषण डेटा दोनों अद्यतन करें;
द्वितीयक तालिकाओं को अद्यतन करने वाले लेनदेन तालिकाओं पर ट्रिगर्स लागू करें; यह इतिहास हमेशा बनाए रखने के दौरान हमेशा लिया गया मार्ग है;
एक रात की बैच प्रक्रिया में प्रसंस्करण को देखें, संभवतः एक डेटा मार्ट/वेयरहाउस में ईटीएल कर रहा है।
की, इस सवाल के प्रयोजनों कि # 3 विकल्प व्यवहार्य नहीं है के लिए मान लेते हैं क्योंकि डोमेन हर समय सामान्यीकृत डेटा के साथ संगत होनी denormalized डेटा की आवश्यकता है करते हैं। पदानुक्रमित योग, जो मैं अक्सर के साथ सौदा करता हूं, इसका एक उदाहरण है।
मैंने पहले दो दृष्टिकोणों का उपयोग किया है और हाल ही में मैं ट्रिगर-आधारित दृष्टिकोण की तरफ झुका रहा हूं, लेकिन मुझे आश्चर्य है कि क्या कोई "गॉथचास" है जिसे मैंने अभी तक नहीं खोजा है , और सोचा कि यह सवाल पूछने लायक होगा, इसलिए भविष्य में दीर्घकालिक निर्णय लेने पर मुझे कुछ विचारों को ध्यान में रखना होगा।
तो आपके अनुभव में, रीयल-टाइम denormalized डेटा को बनाए रखने के विशिष्ट उद्देश्य के लिए किसी भी उपकरण के पेशेवरों और विपक्ष क्या हैं? आप किस परिस्थिति में एक दूसरे को चुनते हैं, और क्यों?
(पी एस कृपया की तरह "चलाता भी जटिल हैं" या "सभी अद्यतन हमेशा एक संग्रहीत proc के माध्यम से जाना चाहिए" कोई जवाब - यह सवाल के संदर्भ के लिए उपयुक्त हैं।)
denormalizations के लिए भौतिक दृश्य का उपयोग करने के लिए बेहतर नहीं है? – Enrique
@ एरिकिक: भौतिक दृश्य एक जादुई पैनसिया नहीं हैं; ऐसे सभी प्रकार के विचार हैं जिन्हें आप वास्तव में भौतिक रूप से (या स्कीमा बाध्यकारी के साथ भी बना सकते हैं) और यहां तक कि यदि आप कर सकते हैं, तो वे लगभग समान प्रदर्शन विशेषताओं को ट्रिगर्स के रूप में प्राप्त करेंगे। – Aaronaught