2010-03-23 9 views
14

मैं बस सोच रहा था कि एक स्टोरेज इंजन प्रकार मौजूद है जिसने आपको पंक्ति स्तर की सामग्री पर संस्करण नियंत्रण करने की अनुमति दी है। उदाहरण के लिए, यदि मेरे पास आईडी, नाम, मूल्य और आईडी के साथ एक साधारण तालिका है, तो पीके है, मैं देख सकता हूं कि पंक्ति 354 (354, "ज़क", "टेस्ट") v1 के रूप में शुरू हुई थी (354, "ज़क", "यह मान का संस्करण 2 है") v2, और चयन इतिहास (मान) जैसे कुछ के साथ पंक्ति पर एक परिवर्तन इतिहास देख सकता है जहां आईडी = 354.क्या एक संस्करण नियंत्रण डेटाबेस स्टोरेज इंजन मौजूद है?

यह एक गूढ़ चीज़ है, लेकिन यह हर अलग-अलग इतिहास तालिकाओं को लिखने के लिए हरा देगा और जब भी बदलाव किया जाता है ...

+0

+1 दिलचस्प सवाल। मैं जानना चाहता हूं कि ओरेकल के कुल याद के अलावा कोई समाधान है या नहीं। – APC

उत्तर

3

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

ओरेकल ऑडिटिंग की कई ग्रैन्युलरिटी का समर्थन करता है जो कमांड लाइन से कॉन्फ़िगर करना आसान है।

मुझे लगता है कि आपने MySQL के रूप में टैग किया है, लेकिन किसी भी स्टोरेज इंजन के बारे में पूछा। वैसे भी, अन्य उत्तरों एक ही बात कह रहे हैं, इसलिए मैं इस पोस्ट को मूल रूप से फ्लैशबैक सुविधाओं के बारे में बता रहा हूं।

+0

फ्लैशबैक क्वेरी और फ्लैशबैक तालिका स्थायी डेटा स्टोर नहीं हैं; वे सिर्फ यूएनडीओ टेबलस्पेस से डेटा की वसूली को सक्षम करते हैं। मैं "बस" कहता हूं, जाहिर है ये शक्तिशाली विशेषताएं हैं लेकिन वे एक वास्तविक "डेटा के लिए संस्करण नियंत्रण" समाधान नहीं हैं। – APC

+0

हां। यदि आप मेरा संपादन पढ़ते हैं, तो मैंने आपकी टिप्पणी से पहले कहा था। – codenheim

+0

शायद मुझे इसे पूरी तरह से भ्रामक रूप से संपादित करना चाहिए। एक प्रश्न को त्वरित स्कैन करने से मुझे परेशानी हो रही है। :) – codenheim

1

आप ट्रिगर के साथ समान व्यवहार प्राप्त कर सकते हैं ("सभी डेटाबेस परिवर्तनों को पकड़ने के लिए ट्रिगर्स" की खोज करें) - विशेष रूप से यदि वे SQL92 INFORMATION_SCHEMA लागू करते हैं।

अन्यथा मैं mrjoltcola

संपादित के साथ सहमत हैं: केवल पकड़ लिया मैं MySQL के साथ उल्लेख करें और ट्रिगर करता है कि (के रूप में नवीनतम समुदाय संस्करण मैंने डाउनलोड का) यह उपयोगकर्ता खाते की आवश्यकता है SUPER विशेषाधिकार है, चीजें कुछ बदसूरत बनाने के जो कर सकते हैं

+0

हां, मैंने "संस्करण" के बारे में प्रश्न के पहले भाग को पढ़ा और फ्लैशबैक सोचा, लेकिन फिर एहसास हुआ कि वह दीर्घकालिक लेखा परीक्षा की तलाश में है। मैंने अपना जवाब इस तरह संपादित किया है। धन्यवाद। – codenheim

+0

सहमत - मैंने इसे पहले जैसा ही पढ़ा, लेकिन फिर यह लगा कि ऑडिटिंग करना अधिक आम था –

3

जाहिर है आप एक MySQL समाधान के बाद वास्तव में कर रहे हैं, तो यह शायद आप ज्यादा मदद नहीं करेगा, लेकिन ओरेकल एक सुविधा टोटल रिकॉल (अधिक औपचारिक रूप से फ़्लैश बैक संग्रह) कहा जाता है जो प्रक्रिया आप कर रहे हैं को स्वचालित वर्तमान में हाथ रोलिंग। पुरालेख संकुचित सारणी का एक सेट है जो स्वचालित रूप से परिवर्तनों के साथ आबादी वाला होता है, और सरल AS OF वाक्यविन्यास के साथ पूछताछ योग्य होता है।

स्वाभाविक रूप से ओरेकल होने के कारण वे इसके लिए चार्ज करते हैं: इसे एंटरप्राइज़ संस्करण के शीर्ष पर एक अतिरिक्त लाइसेंस की आवश्यकता है, हां। Find out more (PDF).

0

इसका अनुमान एक अस्थायी डेटाबेस है - जो आपको अतीत में अलग-अलग समय पर पूरे डेटाबेस की स्थिति देखने की अनुमति देता है। मुझे यकीन नहीं है कि पूरी तरह से आपके प्रश्न का उत्तर दें; यह आपको समय 1 पर पंक्ति 1 की सामग्री को देखने की अनुमति नहीं देगा, साथ ही साथ आप एक अलग समय टी 2 पर पंक्ति 2 की सामग्री को देखने की अनुमति देंगे।

1

ओरेकल और एसक्यूएल सर्वर दोनों इस सुविधा को Change Data Capture कहते हैं। इस समय MySQL के लिए कोई समकक्ष नहीं है।

1

मुझे लगता है कि बड़ी तालिका, Google डीबी इंजन ऐसा कुछ करता है: यह एक पंक्ति के प्रत्येक अद्यतन के साथ एक टाइमस्टैम्प को जोड़ता है।

शायद आप Google App Engine को आजमा सकते हैं।

how Big Table works समझाते हुए एक Google पेपर है।

1

कॉच डीबी के प्रत्येक बदलाव के लिए पूर्ण संस्करण है, लेकिन यह एनओएसक्यूएल दुनिया का हिस्सा है, इसलिए शायद आप जो कर रहे हैं उससे एक बहुत ही पागल बदलाव होगा।

1

wikipedia article गूगल के bigtable पर कहा गया है कि यह तालिकाओं के लिए एक समय आयाम जोड़कर संस्करण की अनुमति देता है:

हर तालिका कई आयामों है (जिनमें से एक समय के लिए एक क्षेत्र, संस्करण की इजाजत दी है)।

एक बड़े-प्रकार के डीबीएमएस के कई गैर-Google कार्यान्वयन के लिए लिंक भी हैं।

1

पुस्तक Refactoring Databases इस मामले पर कुछ ऐसी जानकारियां दी है।

लेकिन यह भी बताते हैं वहाँ कोई वास्तविक समाधान है वर्तमान में, अन्य तो ध्यान से बदलाव करने और उन्हें मैन्युअल रूप से प्रबंध।

0

"यह एक गूढ़ बात की तरह है, लेकिन यह इन अलग इतिहास टेबल और कार्यों हर बार एक परिवर्तन किया है लेखन रखने के लिए होने को हरा होगा ..."

मैं लेखा परीक्षा ट्रेल्स फोन नहीं होगा (जो जाहिर है कि आप किस बारे में बात कर रहे हैं) एक "गूढ़ चीज़" ...

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

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

संबंधित मुद्दे