إنشاء سجلات التدقيق التي لا تدمر قاعدة البيانات الخاصة بك: نمط الإنتاج

كيفية تصميم سجلات تدقيق قابلة للتطوير وقابلة للاستعلام في PostgreSQL دون تدهور الأداء باستخدام التقسيم وأعمدة JSON والفهرسة الذكية.

22 مايو 2026 1 دقائق قراءة

لقد أضفت تسجيل التدقيق إلى CitizenApp بعد أن سأل العميل الذي دفع المبلغ الأول "من قام بتغيير عنوان هذا المواطن؟" بدا الأمر بسيطًا: أضف جدولًا، وأدخل صفوفًا في كل طفرة، وقد تم ذلك. وبعد ثلاثة أشهر، كان جدول التدقيق يحتوي على 2.3 مليون صف وكانت مهلة الاستعلامات تنتهي.

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

لقد ضربت الأربعة في الإنتاج. زاد حجم جدول التدقيق إلى 40% من إجمالي حجم قاعدة البيانات لدينا، وسينتهي مهلة العميل الذي يحاول عرض سجل التدقيق الخاص به بعد 30 ثانية.

الفكرة الرئيسية: لا يقوم المستخدمون أبدًا بالاستعلام عن سجلات التدقيق الأقدم من 90 يومًا. لماذا التحسين لشيء لا يحدث؟

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

حجم الفهرس : 8 جيجا . وقت الاستعلام عن "البحث عن كافة التغييرات في عناوين البريد الإلكتروني": لا يزال 12 ثانية.

المصدر: dev.to