我们有一个需求,每天从数据库中删除 200K 范围内的数据。我们的应用程序基于 Java/Java EE,使用 Oracle DB 和 Hibernate ORM 工具。
我们探索了各种选择,例如
- hibernate 批处理
- 存储过程
- 数据库分区
我们的 DBA 建议数据库分区是最好的方法,这样我们每天都可以轻松地重新创建和删除分区表。现在的问题是我们有两种数据,一种我们想每天删除,另一种我们想保留。假设此数据存储在表“Trade”中。现在有了分区,我们有 2 个表“Trade”。我们已经有基于 Hibernate 的 DAO 层来从 DB 获取/存储交易。当我们决定对数据库进行分区时,我们如何通过hibernate控制交易到两个表中的哪一个。基本上我想要,交易需要在一天结束前删除,进入分区表和我想保留的交易,在主表中。请建议如何使用 Hibernate 实现这一点。我们可能会添加一个额外的列来标识要删除的交易,但我们如何确保这些交易应该使用 hibernate 进入分区交易表。
如果有人可以建议任何更好的方法,以防我们走错路,我将不胜感激。
最佳答案
When we decide to partition the database, how can we control the trades to go in which of the two tables through hibernate.
这就是Hibernate Shards是为了。
关于java - 使用 Hibernate 分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2736767/