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_members
tabel tidak benar-benar mengubahgroups
tabel, sementara Anda mungkin ingin menyimpannya sebagai titik waktu untukgroups
daripada mempelajarigroup_members
perubahan.
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.