在我们的 Web 应用程序中,我们有一个 MySQL 表,用于存储发送给用户的通知的详细信息。这些通知一旦被用户阅读,就会被标记为“已关闭”,并且不太可能再次查看,但我们无法永久删除它们。会有很多通知,所以我们需要定期将它们移出“实时”表。我们正在使用 Hibernate Envers。我们似乎可以使用两种策略:
定期从“实时”表中删除“已关闭”通知;这些将通过 Hibernate Envers 在 Notification_AUD 表中存档。这使得在需要时可以直接找到过时的通知,并且符合我们的审计策略,但随着时间的推移 Notification_AUD 表会变得庞大。
维护定期生成的表,用于存储某个日期范围内的过时通知。例如,Notifications_2013_01、Notifications_2013_02 等。这具有不让表变得庞大的优点,但违背了使用诸如 Hibernate Envers 之类的库的目的,因为我们正在滚动我们自己的解决方案。此外,Hibernate 似乎不太支持将单个实体类映射到多个表的概念,因此我们需要使用原生 MySQL 查询,或者可能是一些元数据表才能找到要查找的正确表例如,给定日期范围内的通知。
如果有人有任何智慧可以通过实施任何类似的事情来传授,那么很高兴收到您的来信,或者对您有用的替代策略。
谢谢理查德