2012-03-23 15 views
5

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

संभावनाओं के बारे में मैंने सोचा: सिद्धांत विस्तार "लॉगगेबल" - एक अलग तालिका में परिवर्तन बचाता है, लेकिन यह नहीं पता कि यह इस प्रविष्टि की मात्रा को बर्दाश्त कर सकता है या नहीं।

प्रत्येक तालिका के लिए एक MySQL ट्रिगर जो नई तालिका में परिवर्तन सहेजता है?

लेकिन परिवर्तनों को सहेजने का सबसे अच्छा अभ्यास क्या है?

उत्तर

5

आप या तो MySQL ट्रिगर्स या उल्लिखित DoctrineExtension Loggable सुविधा का उपयोग कर सकते हैं। दोनों काम, दोनों में विपक्ष और पेशेवर हैं। MySQL ट्रिगर एक अलग तालिका में लिख सकता है (mysql trigger FAQ देखें)।

चलाता:

  • ++ ढांचे, काम करता है ++ जब आप हाथ से या एक स्क्रिप्ट द्वारा डेटा संशोधित करना चाहते हैं स्वतंत्र
  • प्रोग्रामिंग भाषा।
  • - आपको प्रत्येक तालिका के लिए ट्रिगर लिखना होगा या SQL में कुछ सामान्य समाधान का पता लगाना होगा (मैं उस पर सहायता नहीं कर सकता)।
  • - आप, संग्रहित प्रक्रियाओं तथा PL/SQL से परिचित नहीं हैं, तो अच्छी तरह से, वहाँ वक्र सीख रहा है

सिद्धांत एक्सटेंशन:

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

यदि किसी और चीज को सिद्धांत स्विच करने का मौका कम है, तो मैं सिद्धांत एक्सटेंशन के साथ शुरू करूंगा। यह एक उपकरण है जिसके बाद एसक्यूएल से निपटने में मदद करने के लिए सही उद्देश्य है।

0

ऐसी चीज को आमतौर पर "डेटा कैप्चर बदलें" कहा जाता है। यह MySQL के संदर्भ में के बारे में पूछा गया है से पहले पर एसओ:

Change Data Capture in MySQL

हो सकता है कि इस सवाल का जवाब आप कर सकते हैं।

विभिन्न विक्रेता इसे अलग-अलग डिग्री में निर्मित करते हैं।

+0

मैं इसे सुधारने की कोशिश करूंगा। निश्चित रूप से "परिवर्तन डेटा कैप्चर" वाक्यांश अकेले इसके लायक है, क्योंकि ओपी इसे ले जा सकता है और इसके साथ चल सकता है। – duffymo

1

मैं ट्रिगर्स के साथ जाने का सुझाव दूंगा, खासकर यदि आप अपनी लॉगिंग कार्यक्षमता को स्वतंत्र रहने के लिए चाहते हैं - यानी, यह काम करेगा, भले ही आप अपने ऐप को एक अलग ढांचे या पूरी तरह से अलग प्रोग्रामिंग भाषा पर फिर से लिखने का निर्णय लेते हैं।

पीएस मुझे नहीं पता कि MySQL में ट्रिगर्स का समर्थन कितना बढ़िया है, क्योंकि मैंने MySQL से पहले PostgreSQL पर स्विच किया था।

0

निम्नलिखित आलेख में चरणबद्ध स्पष्टीकरण + ट्रिगर्स का उपयोग करके संस्करण करने का नमूना कोड है।

http://www.jasny.net/articles/versioning-mysql-data/