2009-01-15 8 views
11

मैं यह निर्धारित करने की कोशिश कर रहा हूं कि मुझे ऐतिहासिक लेनदेन डेटा कैसे स्टोर करना चाहिए।ऐतिहासिक डेटा के भंडारण को सर्वोत्तम तरीके से कैसे संभालें?

क्या मुझे इसे एक ही टेबल में स्टोर करना चाहिए जहां रिकॉर्ड हर बार एक नए टाइमस्टैम्प के साथ फिर से मिल जाए?

क्या मुझे ऐतिहासिक डेटा को एक अलग 'इतिहास' तालिका में तोड़ना चाहिए और केवल मौजूदा डेटा को 'सक्रिय' तालिका में रखना चाहिए।

यदि हां, तो मैं इसे कैसे कर सकता हूं? एक ट्रिगर के साथ जो स्वचालित रूप से डेटा को इतिहास तालिका में कॉपी करता है? या मेरे आवेदन में तर्क के साथ? Welbog की टिप्पणी प्रति

अद्यतन:

ऐतिहासिक डेटा की बड़ी मात्रा हो जाएगा (पंक्तियों लाखों - अंत में संभावित लाखों)

मुख्य रूप से खोज और रिपोर्टिंग संचालन ऐतिहासिक डेटा पर चलाया जाएगा ।

प्रदर्शन एक चिंता है। परिणामों को उत्पन्न करने के लिए खोजों को पूरी रात चलाने की ज़रूरत नहीं है।

+0

यह वास्तव में इस बात पर निर्भर करता है कि आप किस डेटा के बारे में बात कर रहे हैं। किस प्रकार के लेनदेन? ऐतिहासिक डेटा पर आमतौर पर कौन से ऑपरेशन चलेंगे? प्रदर्शन कितना महत्वपूर्ण है? – Welbog

उत्तर

8

यदि आवश्यकता पूरी तरह रिपोर्टिंग के लिए है, तो एक अलग डेटा गोदाम बनाने पर विचार करें। यह आपको डेटा संरचनाओं का उपयोग करने देता है जैसे धीरे-धीरे बदलते आयाम जो ऐतिहासिक रिपोर्टिंग के लिए बहुत बेहतर हैं लेकिन लेनदेन प्रणाली में अच्छी तरह से काम नहीं करते हैं। परिणामस्वरूप संयोजन आपके उत्पादन डेटाबेस से ऐतिहासिक रिपोर्टिंग को भी स्थानांतरित करता है जो एक प्रदर्शन और रखरखाव जीत होगी।

यदि आपको इस इतिहास को एप्लिकेशन के भीतर उपलब्ध होने की आवश्यकता है तो आपको किसी प्रकार की संस्करण या तार्किक हटाने की सुविधा लागू करनी चाहिए या सब कुछ पूरी तरह से अनुबंध और पुन: स्थापित करना चाहिए (यानी लेनदेन कभी नहीं हटाया जाता है, बस उलट दिया जाता है और विश्राम किया जाता है)। इस बारे में बहुत सावधानी से सोचें कि क्या आप वास्तव में इसकी आवश्यकता है क्योंकि इसमें बहुत जटिलता शामिल होगी। एक लेनदेन संबंधी एप्लिकेशन बनाना जो ऐतिहासिक स्थिति को सही ढंग से पुनर्निर्माण कर सकता है, वह दिखने से काफी कठिन है। वित्तीय सॉफ्टवेयर (जैसे बीमा अंडरराइटिंग sytems) ऐसा करने में विफल रहता है जो आप सोच सकते हैं।

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

2

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