データベースから毎日 200K の範囲のデータを削除する必要があります。私たちのアプリケーションは、Oracle DB と Hibernate ORM ツールを使用した Java/Java EE ベースです。
次のようなさまざまなオプションを検討しました
- 休止状態のバッチ処理
- ストアド プロシージャ
- データベースのパーティショニング
当社の DBA は、データベースのパーティション化が最善の方法であると提案しているため、パーティション化されたテーブルを毎日簡単に再作成および削除できます。問題は、毎日削除したいデータと保持したいデータの 2 種類があることです。このデータがテーブル「Trade」に格納されているとします。パーティショニングにより、2 つのテーブル "Trade" ができました。DB との間で取引をフェッチ/保存するための既存の Hibernate ベースの DAO レイヤーがあります。データベースを分割することを決定した場合、休止状態を介して 2 つのテーブルのどちらに取引を行うかを制御するにはどうすればよいでしょうか。基本的に私が望むのは、その日の終わりまでに取引を削除し、パーティション化されたテーブルに移動し、保持したい取引をメインテーブルに入れる必要があるということです。これが Hibernate でどのように可能になるかを提案してください。
私たちが間違った道を進んでいる場合に備えて、誰かがより良いアプローチを提案できれば幸いです。