0

これらのテーブルへのデータが別のライブ データ テーブルから入力されるいくつかのテーブルがあります (ライブ テーブルから OTA-Open Test Architecture を使用してデータをプルします)。テーブルのデータを更新するには、定期的に (1 日に 3 ~ 4 回) 行う必要があります。

今私の質問は、これを行うための最良のアプローチは何ですか? 定期的に使用するテーブルを更新する必要がある場合は、現在のデータを削除してライブ テーブルから更新する予定ですが、データが更新されているときに誰かがフロント エンドにアクセスすると、結果が得られないか、間違った結果が得られます。 . では、フロントエンドに影響を与えずにテーブルのデータを更新するにはどうすればよいでしょうか?

Java/JSP/Hibernate/Scriptom/Groovy および Oracle DB を使用しています。

PS:私はこのすべてに慣れていないので、これが正しいアプローチでない場合は修正してください。Live DB へのアクセスは、私にとって選択肢ではありません。ライブ データ テーブルへのアクセスは許可されません。OTA を使用してデータを取得し、フロント エンドに直接表示すると、非常に遅くなります。

4

1 に答える 1

1

すべての Oracle トランザクションには、少なくともREAD COMMITTED分離レベルがあります。つまり、トランザクションの効果は、コミットするまで他のトランザクションから見えないということです。したがって、必要なすべての操作を 1つのトランザクションにカプセル化するだけで、コミットするまで (その時点で結果は部分的ではなくなります)、他のトランザクションにはその結果が表示されません。

それに加えて、ライターはリーダーをブロックしないため、トランザクションがまだ新しいデータを生成している間、他のクライアントは古いバージョンのデータを読み続けることができます。

ところで、Oracle は SERIALIZABLE 分離レベルもサポートしています。これは、ニーズにより関連している可能性があります。これにより、ライブ テーブルを読み取るときに、データベースの「時間内のスナップショット」を取得できます。

于 2013-05-26T19:11:26.340 に答える