2009-04-20 12 views
12

मुझे इस पर कुछ चर्चा धागे मिले- लेकिन कुछ भी नहीं जो एक थ्रेड के तहत सभी तीन तंत्रों की तुलना लाया।ऑडिट ट्रेल को कार्यान्वित करना- स्प्रिंग एओपी बनाम हाइबरनेट इंटरसेप्टर बनाम डीबी ट्रिगर

तो यहाँ मेरे सवाल है ...

मैं डीबी बदलाव डालने \ अपडेट \ व्यापार वस्तुओं के लिए हटाता ऑडिट करने के लिए की जरूरत है।

मैं इस

1) डीबी ट्रिगर

2 करने के लिए) इंटरसेप्टर हाइबरनेट तीन तरीके के बारे में सोच सकते हैं

3) वसंत AOP

(यह सवाल एक स्प्रिंग \ के लिए विशिष्ट है हाइबरनेट \ RDBMS- मुझे लगता है कि यह जावा \ C# या हाइबरनेट \ nhibernate के लिए तटस्थ है- लेकिन यदि आपका उत्तर सी ++ या जावा या हाइबरनेट के विशिष्ट कार्यान्वयन पर निर्भर है- कृपया निर्दिष्ट करें)

इन रणनीतियों में से किसी एक को चुनने के पेशेवर और विपक्ष क्या हैं?

मैं कार्यान्वयन के विवरण के लिए नहीं पूछ रहा हूं। - यह एक डिजाइन चर्चा है।

मैं हम समुदाय विकी का एक हिस्सा

+0

एक और विकल्प है: कम से कम कुछ डेटाबेस में उनकी एक ही ऑडिट सुविधा होती है। प्रो: बहुत निर्भर, शायद उच्च प्रदर्शन; कॉन: अत्यधिक विक्रेता विशिष्ट –

उत्तर

3

मैं केवल ट्रिगर्स और एनएचबेर्नेट के बारे में बात कर सकता हूं, क्योंकि मुझे पता नहीं है कि अब एओओपी टीओप्रिंग एओपी है।

यह हमेशा के रूप में, आपके लिए सबसे महत्वपूर्ण क्या है पर निर्भर करता है।

डीबी से चलाता है

  • , तेजी से
  • हमेशा कहा जाता है देशी एसक्यूएल, स्क्रिप्ट, बाह्य ऐप्लिकेशन से भी।
  • डीबी में डेटा लिखें जिसके बारे में एनएच को पता नहीं है। वर्तमान सत्र में यह गायब होगा। (जो अप्रत्याशित परिणामों का कारण बन सकता है)
  • आमतौर पर आपके सत्र (लॉगिन: लॉगिन नाम) के बारे में कुछ भी नहीं पता है।

NHibernate इंटरसेप्टर/घटनाओं

  • विशिष्ट DBMS नहीं कर रहे हैं।
  • क्या आप व्यावसायिक जानकारी के लिए आसान पहुँच, उपयोगकर्ता सत्र, क्लाइंट मशीन नाम, कुछ गणना या व्याख्याओं, स्थानीयकरण, आदि जैसे
  • आप, कथात्मक विन्यास की अनुमति देने इकाई पर गुण है, जो अगर इकाई की जरूरत को परिभाषित तरह की अनुमति देने के लॉग इन करने के लिए और कैसे।
  • आपको लॉगिंग बंद करने की अनुमति देता है, यह अपग्रेड, आयात, विशेष क्रियाओं के लिए महत्वपूर्ण हो सकता है जो उपयोगकर्ता द्वारा ट्रिगर नहीं किए जाते हैं।
  • आपको व्यवसाय मॉडल के लिए एक इकाई दृश्य देखने की अनुमति देता है। आप शायद उपयोगकर्ताओं के दृष्टिकोण के करीब हैं।
+0

क्या हम उपयोगकर्ता नाम लॉग इन कर सकते हैं जिन्होंने डीबी ट्रिगर का उपयोग कर डेटा बदल दिया है? – Samurai

+0

मुझे कैसे पता होना चाहिए? यदि आप डीबी में उपयोगकर्ता को जानते हैं तो आप केवल यह कर सकते हैं।आम तौर पर आप उपयोगकर्ता सत्र को सर्वर की याद में रखते हैं, और डीबी इसके बारे में नहीं जानता है। –

2

मैं डेटाबेस का उपयोग नहीं करने के लिए किसी भी अच्छा कारण नहीं सोच सकते हैं डेटाबेस में परिवर्तन ऑडिट करने के लिए चलाता है के रूप में इस कर सकते हैं उम्मीद कर रहा हूँ। सम्मिलन, अद्यतन और हटावट संभावित रूप से विभिन्न स्रोतों से डेटाबेस को हिट कर सकती हैं - ट्रिगर इन सभी को पकड़ लेंगे; हाइबरनेट आदि नहीं होगा।

+1

मैं आपके साथ हूं, यह सुनिश्चित करने का एकमात्र तरीका है कि डेटाबेस पर सभी गतिविधियों का लेखा परीक्षा डेटाबेस स्तर पर करना है। – HLGEM

+0

यदि आप डेटाबेस स्विच करना चाहते हैं तो क्या होगा? सभी ट्रिगर्स को फिर से लिखें? –

+0

@ इकरस: यदि आप डेटाबेस स्विच करते हैं तो आपको कई चीजों में से एक होगा जो आपको करना होगा, हां। हकीकत में, व्यवसाय डेटाबेस को ज्यादा स्विच नहीं करते हैं। –

0

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

0

ऑडिट लॉग करने के लिए हाइबरनेट इंटरसेप्टर का उपयोग गहराई से त्रुटिपूर्ण है। मैं उन ब्लॉगों की संख्या से डरता हूं जो इस विधि को अपनी सबसे स्पष्ट दोष को इंगित किए बिना अनुशंसा करते हैं - इंटरसेप्टर ऑडिट रिकॉर्ड करने के लिए एक नए लेनदेन का उपयोग करना है। जिसका अर्थ है कि आप मुख्य लेनदेन को सफलतापूर्वक सहेज सकते हैं और सिस्टम क्रैश हो सकता है जो लेखापरीक्षा लेनदेन रिकॉर्ड करने में विफल रहता है!

+0

आप निश्चित रूप से मुख्य लेनदेन में विफल होने के लिए लॉग लेनदेन क्रैश नहीं चाहते हैं। –

+1

मुझे लगता है कि आप करेंगे। यदि ऐसा नहीं होता है, तो ऑडिटर के परिप्रेक्ष्य से, आपके ऑडिट-लॉग अब वास्तव में क्या हुआ या आपके सिस्टम में नहीं होने के लिए विश्वसनीय "सत्य" नहीं है। एफवाईआई: हमने एक प्रणाली लागू की है जहां हम जवासिस्ट का उपयोग करते हुए हाइबरनेट इकाइयों को व्यवस्थित करते हैं ताकि निपटारे विधि कॉल और परिवर्तन (संग्रह के लिए थोड़ा अधिक जटिल) कैप्चर किया जा सके और लेनदेन से जुड़े "नौकरी" में इसे स्टोर किया जा सके (हाइबरनेट के शीर्ष पर हमारी परत) और लेखापरीक्षा में बहुत अच्छी तरह से कब्जा कर लिया। –

0

एक पुराने सवाल है कि मैं now.There संयोग एक और विकल्प उपलब्ध है और उस Envers जो ver 3.6 के बाद से शुरू हाइबरनेट के साथ उपलब्ध है ..

3

मैं समझता हूँ कि इस से संबंधित 100% नहीं है सवाल है लेकिन यह नए विकल्पों के साथ मूल्य जोड़ता है।

क्या कुछ और तरीके हैं जो आप ऑडिट कर सकते हैं कि क्या हो रहा है।

लेनदेन लॉग पढ़ना: यदि डेटाबेस पूर्ण रिकवरी मोड में है तो INSERT, UPDATE, DELETE और DDL कथन के बारे में सभी विवरण लेनदेन लॉग में लॉग इन हैं।

समस्या यह है कि यह पढ़ने के लिए बहुत जटिल है क्योंकि यह मूल रूप से समर्थित नहीं है और आपको ApexSQL Log या SQL Log Rescue (बाद वाला एक मुफ़्त है लेकिन केवल एसक्यूएल 2000 का समर्थन करता है) की तीसरी पार्टी लेनदेन लॉग रीडर की आवश्यकता होगी।

इस विधि का लाभ यह है कि आपको अपने डेटाबेस को पूर्ण पुनर्प्राप्ति मोड में रखने के अलावा सचमुच कोई बदलाव नहीं करना पड़ता है।

एसक्यूएल सर्वर निशान: ट्रेस ट्रेस फाइलों में सब कुछ कैप्चर करेगा जिसमें चुनिंदा वक्तव्य शामिल हैं जिन्हें कुछ अनुपालन परिदृश्यों के लिए भी आवश्यकता हो सकती है। नकारात्मकता यह है कि निशान टेक्स्ट फाइलें हैं जिन्हें पार्स और व्यवस्थित करने की आवश्यकता होती है।

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