कई डेटाबेसों में, मैं डेटाबेस को डिज़ाइन कर रहा हूं जो प्रत्येक तालिका में पंक्तियों के पिछले संस्करणों का रिकॉर्ड रखना चाहिए।डेटाबेस में इतिहास पंक्ति प्रबंधन
इस समस्या का मानक समाधान प्रत्येक डेटा तालिका, के लिए इतिहास तालिका रखना है और जब भी किसी पंक्ति को डेटा तालिका में अद्यतन करने की आवश्यकता होती है, तो वर्तमान पंक्ति की एक प्रति इतिहास तालिका में डाली जाती है और डेटा तालिका में पंक्ति अद्यतन हो जाता है। मेरे लिए इस समाधान का
नुकसान:
- (तालिका जरूरतों की संरचना में परिवर्तन के मामले में) 1 के बजाय 2 टेबल,
- आवेदन टेबल के दोनों बजाय पता करने की जरूरत है के रखरखाव एक की टेबल के
- नाम तालिका नाम के एक सम्मेलन और इतिहास तालिका नाम (उदाहरण के लिए SOME_TABLE, SOME_TABLE_HIST)
रखने के लिए कम होने की आवश्यकता हो सकती है मैं एक मैं एक अलग समाधान पर विचार कर रहा हूं और जानना चाहता हूं कि यह ठीक है या नहीं। हर तालिका के लिए, हम स्तंभ IS_LAST
- जब एक पंक्ति तालिका में डाला जाता है, यह IS_LAST = 1 के साथ डाला जाएगा जोड़ें।
- जब कोई पंक्ति अपडेट हो जाती है, तो मूल पंक्ति की एक प्रति को IS_LAST = 0 के परिवर्तन के साथ उसी तालिका में डुप्लिकेट किया जाएगा, और मूल पंक्ति आवश्यकतानुसार अपडेट हो जाएगी (अभी भी IS_LAST = 1 रखना)।
मान लीजिए कि मेरे मामले में, पंक्तियों को औसतन 10 बार अपडेट किया जाता है। यह भी मानते हैं कि एप्लिकेशन द्वारा किए गए कार्यों का कम से कम 9 0% केवल पंक्तियों के हाल के संस्करण पर होता है।
मेरा डेटाबेस एक "ओरेकल 10 जी है ताकि" सक्रिय "तालिका पतला रखने के लिए, हम तालिका को 2 विभाजनों में विभाजित कर सकते हैं: IS_LAST = 1 विभाजन, और IS_LAST = 0 विभाजन।
समस्या रखने वाले इतिहास डेटा को हल करने का एक अच्छा तरीका विभाजन कर रहा है?
क्या यह समाधान इन तालिकाओं के लिए अन्य विभाजन क्षमता को सीमित करता है?
धन्यवाद!
यह ओरेकल है, परेशान क्यों? बस उस कॉलम पर विभाजन करें और पंक्ति माइग्रेशन चालू करें। यह बनाया गया है, दो तालिकाओं को फिर से लिखना और बनाए रखना क्यों। –