Web投票システムを含むプロジェクトがあります。現在の値と関連データは、複数のテーブルに保存されます。履歴データはこのプロジェクトの重要な側面になるため、現在のデータが定期的に移動される監査テーブルも作成しました。
この戦略は非常に非効率的だと思います。毎日データをアーカイブするだけでも、1 日に 1 人か 2 人のユーザーが更新を行うだけでも行数は膨大になります。
私が考えることができる次の代替手段は、変更されたエントリのみを保存することです。これは、特定の日のビューを自動的に作成するロジックを構築する必要があることを意味します。これは、保存される行が少なくなることを意味しますが、かなり複雑になります。
私の最終的なアイデアは、少し慣習的ではありません。履歴データはレポート用であるため、Web ユーザーがすばやくアクセスする必要はありません。私のデータベースには履歴データが含まれていない可能性があると考えています。DB は現在の状態のみを表します。次に、毎日、データベース全体をオブジェクトにロードし (ユーザー/データの数は比較的少ない)、XML や JSON などにシリアル化できます。これらのファイルは、前日と差分をとって保存できます。実際、SVN は私のためにこれを行うことができます。特定の過去 1 日のデータが必要な場合、システムはその日のバージョンを取得し、オブジェクトに逆シリアル化する必要があります。これは明らかにコストのかかる操作ですが、ここではパフォーマンスはそれほど重要ではありません。これにはLINQを使用することを検討しています。これにより、物事が簡素化されると思います。
どのアプローチをとりますか?
ありがとう