Saya hanya ingin menyebutkan beberapa poin:
Gunakan pembuat kode Anda tidak dapat memiliki satu prosedur untuk melacak semua tabel, Anda harus membuat pemicu yang serupa tetapi berbeda pada setiap tabel yang dilacak. Jenis pekerjaan ini paling cocok untuk pembuatan kode otomatis. Di tempat Anda, saya akan menggunakan transformasi XSLT untuk menghasilkan kode dari XML, dan XML dapat dihasilkan secara otomatis dari metadata. Ini memungkinkan Anda mempertahankan pemicu dengan mudah dengan membuatnya kembali setiap kali Anda membuat perubahan pada logika/struktur audit atau tabel target ditambahkan/diubah.
Pertimbangkan perencanaan kapasitas untuk audit. Tabel audit yang melacak semua perubahan nilai, sejauh ini, akan menjadi tabel terbesar dalam database:tabel tersebut akan berisi semua data saat ini dan semua riwayat data saat ini. Tabel seperti itu akan meningkatkan ukuran basis data sebanyak 2-3 kali lipat (x10, x100). Dan tabel audit akan dengan cepat menjadi penghambat segalanya:
- setiap operasi DML akan memerlukan kunci di tabel audit
- semua operasi administrasi dan pemeliharaan harus mengakomodasi ukuran database karena audit
Memperhitungkan perubahan skema . Sebuah tabel bernama 'Foo' dapat dijatuhkan dan kemudian tabel yang berbeda bernama 'Foo' dapat dibuat. Jejak audit harus mampu membedakan dua objek yang berbeda. Lebih baik gunakan pendekatan dimensi yang berubah secara perlahan.
Pertimbangkan kebutuhan untuk menghapus secara efisien catatan audit. Ketika periode penyimpanan yang ditentukan oleh kebijakan subjek aplikasi Anda jatuh tempo, Anda harus dapat menghapus catatan audit jatuh tempo. Ini mungkin bukan masalah besar sekarang, tetapi 5 tahun kemudian ketika catatan pertama jatuh tempo, tabel audit telah berkembang menjadi 9,5 TB, itu mungkin menjadi masalah.
Pertimbangkan kebutuhan untuk meminta audit . Struktur tabel audit harus disiapkan untuk merespon secara efisien pertanyaan tentang audit. Jika audit Anda tidak dapat ditanyakan maka tidak ada nilainya. Kueri akan sepenuhnya didorong oleh persyaratan Anda dan hanya Anda yang mengetahuinya, tetapi sebagian besar catatan audit ditanyai untuk interval waktu ('perubahan apa yang terjadi antara pukul 19.00 dan 20.00 kemarin?'), berdasarkan objek ('perubahan apa yang terjadi pada rekaman ini dalam tabel?') atau oleh penulis ('perubahan apa yang dilakukan Bob dalam database?').