, एक "केवल डालने" डेटाबेस का उपयोग करें, लेकिन आप एक सरल तकनीक का उपयोग कर सकते हैं। ऑडिट डेटा को बनाए रखने के लिए आपको आवश्यक प्रत्येक तालिका के लिए, अभी अपडेट करने के लिए अपडेट किए गए समय के लिए एक अतिरिक्त कॉलम है। जब आप किसी रिकॉर्ड में परिवर्तन करते हैं, तो अपडेट करने के बजाय, बस अपने सभी डेटा के साथ एक डालें; अपडेटेडटाइम कॉलम को वर्तमान समय मिलेगा।
ध्यान दें कि इस विधि का अर्थ है कि आपको अपनी अनूठी बाधाओं को तोड़ना या पुनर्विचार करना होगा; आप प्राथमिक कुंजी रख सकते हैं, लेकिन विशिष्टता आपकी प्राथमिक कुंजी और आपके अपडेटेड टाइम का समग्र हो जाती है।
इस तकनीक का आपको टेबल पर प्रत्येक रिकॉर्ड के लिए ऐतिहासिक डेटा की एक ज्ञात श्रृंखला देने का लाभ है (प्रत्येक रिकॉर्ड किसी दिए गए समय के लिए मान्य है यदि यह रिकॉर्ड का शीर्ष 1 है जहां TimeOfInterest> अपडेटेडटाइम ऑर्डर द्वारा अपडेटेडटाइम डीईएससी) कम ओवरहेड (तालिका पर केवल एक ही कॉलम) के साथ। यह एक विधि को उपयोग करने के लिए एक साधारण वैकल्पिक तालिका के साथ इस विधि का उपयोग न करने वाले तालिकाओं से रूपांतरण के लिए भी काफी अनुकूल है (जिसे आप लगातार नाम दे सकते हैं)। फिर आपको अपनी मौजूदा बाधाओं और अपडेटेडटाइम कॉलम के समग्र उपयोग करने के लिए अपनी अनूठी बाधाओं को बदलने की आवश्यकता है, और कुछ प्रश्नों को बदलने की आवश्यकता होगी।
नोट करें कि आप वास्तव में अपने सभी प्रश्नों को परिवर्तित करने से बच सकते हैं यदि आप उस तालिका का दृश्य बनाते हैं जो प्रत्येक रिकॉर्ड के लिए सबसे हालिया प्रविष्टि देता है; आप एक टेबल के साथ समाप्त होते हैं जो ऐतिहासिक डेटा को पारदर्शी रूप से बनाए रखता है, और एक दृश्य जो चेंजलॉगिंग के बिना नियमित तालिका की तरह दिखता है।
स्रोत
2009-08-24 21:08:22
क्या यह अंतरिक्ष का एक बड़ा अपशिष्ट नहीं है? – Kolten
यदि आपको डेटा की आवश्यकता है, तो आपको ऑडिट ट्रेल की आवश्यकता होने पर आप क्या करते हैं, यह बर्बाद नहीं होता है। – nos
मैं किसी भी आईडी/खोज डेटा या किसी भी अनुक्रम डेटा के लिए दिनांक समय कॉलम के साथ नहीं जाऊंगा। सिस्टम दिनांक किसी भी कारण या एकाधिक ऑपरेशन के लिए बदल सकता है, एक ही दिनांक/समय मूल्य के संकल्प के साथ ही दोनों संभव हो सकते हैं। यदि आपको समय-समय पर अनुक्रम को कैप्चर करने की आवश्यकता है (गारंटीकृत अद्वितीय) या लंबे पूर्णांक का उपयोग करें या ग्रिड का उपयोग करें क्योंकि आपका भी एक श्रृंखला बनाता है (लेकिन आप एक सूचना आइटम के रूप में समय खो देते हैं - नीचे उत्तर भी पढ़ते हैं ...) –