SQLデータベースの上に構築されたWebアプリケーションがあります。いくつかの異なるタイプのオブジェクトにコメントを追加できます。これらのオブジェクトの一部には、ほとんどの問題追跡システム(ステータス、割り当て、優先度など)でフィールドの変更を追跡する方法と同様に、フィールドレベルの追跡が必要です。誰が変更したのか、以前の値は何だったのか、新しい値は何なのかを示したいと思います。
純粋な設計レベルでは、オブジェクトタイプ、オブジェクトの主キー、変更を行ったユーザーの主キー、フィールド名、および古い値と新しい値。私たちの場合、ユーザーが変更を行うときにコメントを入力した場合、これらにはオプションでコメントIDもあります。
ただし、このデータがどれだけ急速に増大する可能性があるので、これは最高のアーキテクチャですか?このタイプの機能をすでに大規模なアプリケーションに追加するために一般的に採用されている方法は何ですか?
[編集]私はこの質問に賞金をかけ始めています。主な理由は、スケールの処理に関して特に最適なアーキテクチャを見つけたいからです。Tom H.の答えは有益ですが、推奨される解決策はかなりサイズ効率が悪いようで(多くの列が変更されていなくても、オブジェクトの新しい状態ごとに新しい行が表示されます)、ユーザーが作成したフィールドへの変更も追跡できます。特に、一般的な問題追跡システム(JIRAなど)がこれをどのように実装したかを説明できる回答を受け入れる可能性があります。