تنفيذ تدقيق تريل - ربيع AOP VS.Ibernate Interceptor VS DB الزناد

StackOverflow https://stackoverflow.com/questions/769084

سؤال

لقد وجدت بضع خيوط مناقشة حول هذا - ولكن لا شيء جلب مقارنة بين آلية الثلاثة تحت موضوع واحد.

حتى هنا هو سؤالي...

أحتاج إلى تدقيق التغييرات DB - أدخل updates deletes إلى كائنات العمل.

أستطيع أن أفكر في ثلاث طرق للقيام بذلك

1) مشغلات DB

2) اعتراضات السبات

3) ربيع AOP

(هذا السؤال محددا للربيع السبات RDBMS- أعتقد أن هذا محايد إلى Java C # أو السبات Nhibernate - ولكن إذا كانت إجابتك تعتمد على C ++ أو Java أو التنفيذ المحدد للعائلة - يرجى التحديد)

ما هي إيجابيات وسلبيات اختيار إحدى هذه الاستراتيجيات؟

أنا لا أطلب تفاصيل التنفيذ - وهذا هو مناقشة التصميم.

آمل أن نتمكن من جعل هذا كجزء من المجتمع Wiki

هل كانت مفيدة؟

المحلول

لا أستطيع التحدث فقط عن المشغلات وتخيبها، لأنني لا أعرف enought ankous abou tspring oop.

ذلك يعتمد على، كما هو الحال دائما، ما هو الأكثر أهمية بالنسبة لك.

DB المشغلات

  • سريعة
  • تسمى دائما، حتى من SQL، البرامج النصية الأصلية، التطبيقات الخارجية.
  • اكتب البيانات في DB التي لا يعرفها NH. سيكون مفقودا في الجلسة الحالية. (الذي قد يؤدي إلى نتائج غير متوقعة)
  • لا تعرف عادة أي شيء عن جلستك (قل: اسم تسجيل الدخول).

اعتراضات أحذية / أحداث

  • ليست محددة DBMS.
  • تتيح لك سهولة الوصول إليك معلومات تجارية، مثل جلسة المستخدم أو اسم آلة العميل أو حسابات أو تفسيرات معينة أو توطينها، إلخ.
  • اسمح لك التكوين التصريحي، مثل السمات على الكيان، الذي يحدد ما إذا كان الكيان يحتاج إلى تسجيل الدخول وكيف.
  • اسمح لك بإيقاف تشغيل التسجيل، قد يكون هذا مهما للترقيات والواردات والإجراءات الخاصة التي لا يتم تشغيلها من قبل المستخدم.
  • اسمح لك بمنظر كيان لنموذج الأعمال. ربما تكون أقرب إلى عرض المستخدمين.

نصائح أخرى

أنا أفهم أن هذا ليس 100٪ يتعلق بالسؤال ولكنه يضيف قيمة مع خيارات جديدة.

هناك طريقتان آخران يمكنك مراجعة ما يجري.

قراءة سجل المعاملات: إذا كانت قاعدة البيانات في وضع الاسترداد الكامل، يتم تسجيل جميع التفاصيل حول إدراج وتحديث وحذف وبيانات DDL في سجل المعاملات.

المشكلة هي أنه من المعقدة للغاية قراءتها لأنه غير مدعوم فقط وأن ستحتاج إلى قارئ سجل طرف ثالث مثل apexsql log. أو SQL Log Rescue. (الأخير واحد مجاني ولكن يدعم فقط SQL 2000).

ميزة هذه الطريقة هي أنك لا تضطر حرفيا إلى إجراء أي تغييرات باستثناء وضع قاعدة البيانات الخاصة بك في وضع الاسترداد الكامل.

آثار SQL Server: ستقوم الآثار بالتقاط كل شيء في ملفات التتبع بما في ذلك تحديد العبارات التي قد تكون هناك حاجة إليها أيضا لبعض سيناريوهات الامتثال. الجانب السلبي هو أن الآثار هي ملفات نصية تحتاج إلى تحليلها وتنظيمها.

لا أستطيع التفكير في أي سبب وجيه لعدم استخدام مشغلات قاعدة البيانات لتغييرات التدقيق في قاعدة البيانات. إدراج وتحديثات وحذف يمكن أن تصل إلى قاعدة البيانات من المصادر المختلفة - سيقوم مشغلات بالقبض على كل هذه؛ السبات إلخ. لن.

أنا tink عندما تفكر في التدقيق، تحتاج إلى النظر في ما هو عليه. أولا، من خلال سجل Havea الذي غير مع من الذي تغير وما الذي تغير حتى تتمكن من تعاطي التغييرات السيئة، يمكنك تحديد مشاكل النظام (يمكننا أن نرى أي من العديد من التطبيقات المختلفة التي تعمل على تحديد التغيير الذي يساعد في تحديده بسرعة واحدة مكسورة) وهكذا يمكنك تحديد من الذي جعل التغيير. يمكن أن يكون الأخير أمرا بالغ الأهمية حقا عندما يتعلق الأمر بالكشف عن الاحتيال. إذا قمت بعمل كل شيء من واجهة المستخدم، فلن ترى المستخدم الذي يرتكب الاحتيال الذي يغير البيانات في الخلفية إلى كتابة التحقق من نفسه. إذا قمت بكل شيء من الواجهة، فمن المحتمل أن يكون لديك أذونات تم تعيينها على مستوى Tabel، وبالتالي فتح الباب للحصول على الاحتيال للبدء. إذا قمت بعمل كل شيء من الواجهة، فلن تعرف أي موظف مخلص حذف جدول المستخدم بأكمله لقيمة الانزعاج الخالص. إذا كنت تفعل كل شيء من النهاية الأمامية، فلن تعرف أي DBA غير كفء بتحديث جميع أوامر العملاء بطريق الخطأ إلى نفس العميل. لا أستطيع أن أدعم استخدام أي شيء باستثناء المشغلات للتدقيق أثناء فقدان جزء جيد من السبب في أنك بحاجة إلى التدقيق في المقام الأول.

باستخدام اعتراضات السبات لأداء سجلات التدقيق معيبة بعمق. لقد فاد على عدد المدونات التي توصي بهذه الطريقة دون الإشارة إلى عيبها الأكثر وضوحا - يتعين على اعتراضي استخدام معاملة جديدة لتسجيل التدقيق. مما يعني أنه يمكنك حفظ المعاملة الرئيسية بنجاح ولديك تعطل نظام يفشل في تسجيل معاملة التدقيق!

سؤال قديم تعادله الآن. هناك خيار آخر متاح وهكذا هو envers وهو متاح جنبا إلى جنب مع السبات ابتداء من Ver 3.6 فصاعدا ..

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top