私は現在、リレーショナルデータベースで変更されたタプルを追跡する必要があるプロジェクトに取り組んでいます。これには、更新されたタプルだけでなく、挿入および削除されたタプルも含まれる必要があります。私の質問は、これを達成するための最良の方法は何でしょうか?私は自分自身のアイデアをいくつか持っていますが、私が考えていなかったより簡単でより良い方法があるかもしれません。あるいは、これを正確に行うプロジェクトがすでに存在します。
プロジェクトの最終的な目標は、さまざまなベンダーのリレーショナルデータベースで機能することですが、最初の実装ではMySQLデータベースを使用します。他のデータベースシステムは後でサポートできます。しかし、MySQLで機能するソリューションを別のデータベースに簡単に適応させることができれば素晴らしいと思います。
私の最初のアイデアは、ログファイルを解析することでした。ただし、これらのログファイルに実際に変更されたタプルが含まれているかどうかはわかりません。さらに、これらのログファイルが常に利用できるとは限らないことも想像できます(共有ホスティングなど)。
私の2番目のアイデアは、アプリケーションレベルでクエリをインターセプトすることでした。INSERT、DELETE、またはUPDATEクエリが実行されると、これらのクエリを解析でき、影響を受けるタプルを事前に決定できます。INSERT操作の場合、これは単に挿入されたタプルであり、DELETEまたはUPDATE操作の場合、新しいSELECTステートメントでWHERE句を適用することでタプルを識別できます。
最後に、開発のこの段階ではパフォーマンスは重要な要素ではないことを付け加えておきます。
詳細が必要な場合は、喜んで提供させていただきます。