वहाँ डेटाबेस में पंक्तियों की पूर्ववत / परिवर्तन दोबारा के लिए किसी भी पुस्तकालय / ढांचा है?

वोट
2

मेरी शीर्षक हो सकता है स्पष्ट नहीं है। मैं डेटाबेस तालिकाओं पर संस्करण नियंत्रण किसी तरह का रहा हूँ, विकी की तरह की तरह तोड़फोड़ फ़ाइलों पर करता है,।

मैं पता लगाने के लिए परिवर्तन लॉग ऑन करना चाहते हैं। मैं निकालने और रिवर्स में diff चलाना चाहते हैं। (एक SVN -r विलय 101: 100 की तरह पूर्ववत करें)। मैं इतिहास पर एक अनुक्रमित खोज पड़ सकता है।

मैं पढ़ा है पूर्ववत इंजन के लिए डिजाइन पैटर्न , लेकिन यह पैटर्न से संबंधित है। वहाँ कुछ भी बिना पहिया बदलने मैं पुन: उपयोग कर सकते हैं?

संपादित करें: उदाहरण के लिए, बैंक खाता लेनदेन। मैं कॉलम शेष (और अन्य) तालिका में अद्यतन किया है। एक उपयोगकर्ता उसके द्वारा एक गलती 10 दिनों के बाद मिल जाएगा, और वह रद्द करने के लिए / विशिष्ट लेनदेन रोलबैक, दूसरों को बदले बिना चाहते हैं।

मैं इसे कैसे आवेदन स्तर में शान से कर सकते हैं?

09/12/2008 को 15:08
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


7 जवाब

वोट
2

आप प्रत्येक रिकॉर्ड है कि आप पता लगाने के लिए चाहते हैं के लिए एक संशोधन दृष्टिकोण का उपयोग कर सकते हैं। यह एक रिकार्ड के हर संशोधन के लिए अपनी तालिका में एक पंक्ति को बनाए रखना शामिल होगा। रिकॉर्ड एक साझा 'आईडी' द्वारा एक साथ बंधे किया जाएगा और 'संशोधन स्थिति' (जैसे नवीनतम "स्वीकृत" रिकॉर्ड प्राप्त करें) पर पूछे जा सकता है।

आपके आवेदन स्तरीय में, आप इन रिकॉर्ड को व्यक्तिगत रूप से संभालने के लिए और, यदि आवश्यक हो तो जब तक आप सभी आवश्यक जानकारी रिकॉर्ड के रूप में पहले के एक राज्य के लिए वापस रोल कर सकते हैं।

[ID] [Revision Date] [Revision Status] [Modified By] [Balance]
1     1-1-2008         Expired           User1         $100
1     1-2-2008         Expired           User2         $200
2     1-2-2008         Approved          User3         $300
1     1-3-2008         Approved          User1         $250
09/12/2008 को 16:40
का स्रोत उपयोगकर्ता

वोट
2

मार्टिन Fowler में विषय को शामिल किया गया चीजें हैं जो समय के साथ बदल के लिए पैटर्न । फिर भी पैटर्न और नहीं एक वास्तविक ढांचे लेकिन वह उदाहरण डेटा और यह कैसे उपयोग करने के लिए दिखाता है।

09/12/2008 को 16:19
का स्रोत उपयोगकर्ता

वोट
1

पंडिताऊ बिंदु। आपके बैंक खाते उदाहरण पिछले एक लेखा परीक्षक / नियामक प्राप्त नहीं होता।

एक खाते में किसी भी गलत प्रविष्टियों रिकार्ड के लिए वहाँ छोड़ दिया जाना चाहिए। एक समान और विपरीत सुधार लेन-देन खाते में लागू किया जाएगा। वास्तविक लेन-देन वापस रोलिंग लेकिन मूल त्रुटि और इसके सुधार की एक बहुत ही स्पष्ट निशान छोड़े प्रभाव में।

09/12/2008 को 16:05
का स्रोत उपयोगकर्ता

वोट
0

मैं हालांकि मैं चलाता और rowversions उपयोग करने से पहले पूर्ण पूर्ववत / लेखा परीक्षा इतिहास की स्थापना की है, एक विशिष्ट पैटर्न के बारे में पता नहीं कर रहा हूँ।

वहाँ आप लॉग के माध्यम से ट्राउल और वास्तविक परिवर्तन देखते हैं कि एमएस Sql के लिए क्षुधा की एक जोड़ी है।

मैं यह नहीं मिल सकता है अब हालांकि - मैं लॉग नेविगेटर एमएस एसक्यूएल 2000 मुझे एक विशिष्ट ऐतिहासिक लेन-देन को पूर्ववत करने देने के लिए उपयोग किया जाता है के साथ वापस बुलाया एक का उपयोग किया है।

http://www.lumigent.com और http://www.apexsql.com लॉग देखने के लिए उपकरण है, लेकिन मुझे लगता है कि या तो आप उन्हें वापस रोल करने देता नहीं है।

मुझे लगता है कि यह करने के लिए सबसे अच्छा तरीका है इसे ध्यान में रखकर अपने आवेदन लिखने के लिए है - जो आप कैसे करना है पर पहले से ही यहाँ अच्छा सुझाव के एक जोड़े की है।

10/12/2008 को 11:20
का स्रोत उपयोगकर्ता

वोट
0

विभिन्न टिप्पणियों के आधार पर आपकी समस्या के लिए एक संभव समाधान एक "तिथि प्रभावी" तालिका बनाने के लिए किया जाएगा।

मूल रूप से आप हर मेज पर वैध-से-डेट और वैध करने की तारीख कॉलम जोड़ें।

"वर्तमान" रिकॉर्ड हमेशा "2999/12/31" या कुछ arbiteraly उच्च मूल्य का एक valid_to_date होना चाहिए। जब एक मूल्य के आप के साथ "वैध करने की तारीख" आज की तारीख करने के लिए और सम्मिलित एक नई पंक्ति को बदलने में परिवर्तन एक वैध-से-डेट आज की और एक वैध करने की तारीख "2999/12/31" के सभी कॉपी वर्ष पंक्ति से कॉलम अगर वे नहीं बदला गया है।

आप "का चयन करें सभी स्तंभों को छोड़कर-वैध-xx की तारीख मेज से जहां वैध करने की तारीख = '2999/12/31'" के साथ दृश्य बना सकते हैं

जो आपके सभी मौजूदा प्रश्नों अपरिवर्तित काम करने के लिए अनुमति देगा।

इस डेटा गोदाम के वातावरण में और विनिमय दरों जहां प्रभावी तिथि महत्वपूर्ण है की तरह बात के लिए एक बहुत ही आम tecnique है।

पूर्ववत तर्क स्पष्ट होना चाहिए।

10/12/2008 को 11:07
का स्रोत उपयोगकर्ता

वोट
0

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

वहाँ इस तरह के एक डेटाबेस डिजाइन करने के लिए सूक्ष्मता भी पर्याप्त मात्रा में है, लेकिन वहाँ इस विषय पर बहुत अच्छी किताब हैं:

विकास एसक्यूएल में समय उन्मुख डेटाबेस अनुप्रयोग रिचर्ड T स्नॉडग्रास द्वारा

डाउनलोड के लिए उपलब्ध:

http://www.cs.arizona.edu/people/rts/tdbbook.pdf

एक डेटाबेस लेनदेन का उपयोग करते हुए एक बुरा विचार हो क्योंकि ताले यह डेटाबेस में पैदा करेगा होगा - मूल रूप से डेटाबेस लेनदेन यथासंभव कम किया जाना चाहिए।

अनुप्रयोग परत में कुछ भी, जब तक यह कुछ हठ तंत्र ही है, आवेदन के पुनरारंभ होने से बच नहीं होगा (हालांकि कि एक आवश्यकता नहीं हो सकता है)।

09/12/2008 को 18:02
का स्रोत उपयोगकर्ता

वोट
0

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

09/12/2008 को 17:05
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more