うーん、私もこれについて考えていました。
- テーブルごとにテーブルを保持するためのリビジョンを保持することは、個人的にはそれほど問題にはなりませんが、ちょっと。
- ユーザー名は、私が信じるユーザー定義変数で保持できます(セッション開始後、
SET @user='someone'
のようなものを発行します 、そしてそれを使用します。 - INSERT、UPDATE、DELETEの後にトリガーがある限り、前/次の値を取得するのは簡単なクエリです。古い値のみを保存します。
つまり、列(a、b、c)を持つテーブルの場合、列(user_id、modtime、a、b、c)を持つテーブルを作成します。
主な欠点:
- バッチ更新は遅い (したがって、慎重にリビジョンを保持するためにテーブルを選択してください)
- データ重複排除デラックス、あなたは/十分なストレージスペースが必要です
- 「関連する」データはリビジョンをトリガーしません(つまり、
group_members
を変更します テーブルは実際にはgroups
を変更しません テーブル、groups
の時点としてそれを保持したい場合がありますgroup_members
を掘り下げるのではなく 変更。
全体として、それは私には良い取引のように思えますが、実際にはめったに見たことがないので、必要があります なぜそれが悪いのか説得力のある理由があるので、私はそれらの答えを待ちます。