Hmm, saya juga sedang memikirkan hal ini.
- Memiliki revisi tabel per tabel untuk disimpan tidak akan menjadi masalah bagi saya pribadi, tapi hei.
- Nama pengguna dapat disimpan dengan variabel yang ditentukan pengguna, saya percaya, (setelah sesi mulai mengeluarkan sesuatu seperti
SET @user='someone', dan gunakan itu. - Selama ada pemicu setelah INSERT, UPDATE dan DELETE, mendapatkan nilai sebelumnya/berikutnya adalah kueri sederhana, saya hanya akan menyimpan nilai LAMA.
Singkatnya, untuk tabel dengan kolom (a,b,c) saya akan membuat tabel dengan kolom (user_id,modtime,a,b,c).
Kelemahan utama:
- pembaruan batch lambat (jadi pilih tabel Anda untuk menyimpan revisi dengan hati-hati)
- duplikasi data mewah, Anda akan / saya harus memiliki ruang penyimpanan yang cukup
- Data 'terkait' tidak memicu revisi (yaitu:mengubah
group_memberstabel tidak benar-benar mengubahgroupstabel, sementara Anda mungkin ingin menyimpannya sebagai titik waktu untukgroupsdaripada mempelajarigroup_membersperubahan.
Secara keseluruhan itu tampak bagus bagi saya, tetapi karena saya jarang melihatnya dalam praktik, harus menjadi alasan kuat mengapa itu buruk, jadi saya akan menunggu jawaban itu.