使用Hibernate / MySQL归档过时行的策略

时间:2013-03-08 15:11:19

标签: mysql hibernate hibernate-envers

在我们的Web应用程序中,我们有一个MySQL表,用于存储发送给用户的通知的详细信息。  这些通知一旦被用户读取,就会被标记为“已解除”,并且不太可能再次被查看,但我们无法永久删除它们。会有很多通知,所以我们需要定期将它们从“实时”表中移出。我们正在使用Hibernate Envers。我们似乎可以使用两种策略:

  1. 定期从“直播”表中删除“已被驳回”的通知;这些将通过Notification_AUD表中的Hibernate Envers进行存档。如果我们需要,这可以直接找到过时的通知,并且符合我们的审计策略,但随着时间的推移,Notification_AUD表将会大量增长。

  2. 维护定期生成的表,这些表存储日期范围内的过时通知。例如,Notifications_2013_01,Notifications_2013_02等。这样做的好处是不会让表格变得庞大,但却无法使用像Hibernate Envers这样的库,因为我们正在推出自己的解决方案。此外,Hibernate似乎不太支持将单个实体类映射到多个表的概念,因此我们需要使用本机MySQL查询,或者可能需要一些元数据表才能找到正确的表来查找例如,在给定日期范围内的通知。

  3. 如果有任何人有任何智慧来实施类似的东西,那么很高兴听到您的意见,或者另一种适合您的策略。

    由于 理查德

0 个答案:

没有答案
相关问题