2

私は現在、リレーショナルデータベースで変更されたタプルを追跡する必要があるプロジェクトに取り組んでいます。これには、更新されたタプルだけでなく、挿入および削除されたタプルも含まれる必要があります。私の質問は、これを達成するための最良の方法は何でしょうか?私は自分自身のアイデアをいくつか持っていますが、私が考えていなかったより簡単でより良い方法があるかもしれません。あるいは、これを正確に行うプロジェクトがすでに存在します。

プロジェクトの最終的な目標は、さまざまなベンダーのリレーショナルデータベースで機能することですが、最初の実装ではMySQLデータベースを使用します。他のデータベースシステムは後でサポートできます。しかし、MySQLで機能するソリューションを別のデータベースに簡単に適応させることができれば素晴らしいと思います。

私の最初のアイデアは、ログファイルを解析することでした。ただし、これらのログファイルに実際に変更されたタプルが含まれているかどうかはわかりません。さらに、これらのログファイルが常に利用できるとは限らないことも想像できます(共有ホスティングなど)。

私の2番目のアイデアは、アプリケーションレベルでクエリをインターセプトすることでした。INSERT、DELETE、またはUPDATEクエリが実行されると、これらのクエリを解析でき、影響を受けるタプルを事前に決定できます。INSERT操作の場合、これは単に挿入されたタプルであり、DELETEまたはUPDATE操作の場合、新しいSELECTステートメントでWHERE句を適用することでタプルを識別できます。

最後に、開発のこの段階ではパフォーマンスは重要な要素ではないことを付け加えておきます。

詳細が必要な場合は、喜んで提供させていただきます。

4

2 に答える 2

2

トリガーを使用して、INSERT、UPDATE、およびDELETEをキャプチャし、エントリを新しいテーブルに記録します。そのテーブルのタイムスタンプを使用して、トランザクションがいつ発生したかを記録できます。将来的には、そのテーブルに変更情報を問い合わせることができます。

于 2010-01-13T15:15:06.140 に答える
0

これにはデータベースに依存する機能が必要になりますが、アーキテクチャに応じてそれらをカプセル化できますが、データベーストリガーを使用することもできます。これは、監査ということを除いて、通常はお勧めしません。トリガーの種類ごとに、必要な情報をログテーブルに書き込むことができます。ただ1つの提案。

于 2010-01-13T15:15:05.093 に答える