java - SCD (slowly changing dimension) Type 4/6 - 如何在spring boot app, hibernate envers中实现

标签 java spring-boot database-design hibernate-envers spring-boot-jpa

我正在尝试解决如何为我的应用程序创建“日志”并将它们存储到数据库的问题。

假设我有这个数据库结构:

第一个表:

weatherstation_id |气象站名称 | weatherstation_ip_address

第二张表:

传感器_id |传感器名称 |传感器编号 | weatherstation_id

第三张表:

measurement_id |值(value) |测量日期 | weatherstation_id |传感器_id

从这里我应该能够得到“日志”,所以关于气象站和传感器的测量值和信息!在进行测量时!,所以我需要实现不知何故的历史。

我尝试解决这个问题已经两个多星期了,我发现我可能应该使用类似 SCD 的东西。输入 4 或 6。

我想到的一个选项是 spring-data-envers应该处理历史,但在这里我不知道如何将测量“链接”到修订。

第二种选择是自己写,使用JPA Lifecycle Callbacks并在我的 WeatherStationHistory 的 WeatherStation 实体列表中,在进行任何更新或持久化之前,在其中添加当前 WeatherStation 的副本,然后让测量指向此 WeatherStationHistory。

所以我想知道解决这个问题的最佳方法是什么,以及如何在 spring boot 应用程序中实现它。

我希望我已经清楚地描述了我的问题。如果有任何建议,我将不胜感激。

最佳答案

我认为您应该为 SCD 使用数据库级选项。虽然我不知道如果它在应用程序级别实现是否有任何好处。

关于java - SCD (slowly changing dimension) Type 4/6 - 如何在spring boot app, hibernate envers中实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64993719/

相关文章:

java - 如何测试 java.lang.Math 方法是否已被调用?

java - 引用 BufferedReader 对象的 Reader 类型的对象无法访问 readLine() 方法

java - 为什么 File.renameTo(...) 不创建目标的子目录?

java - 为什么我会收到 bean 'com.mypackage.service.blog.BlogService' 的 NoSuchBeanDefinitionException

spring-boot - 带有 Spring Boot 的 ObjectDB

mysql - 带有消息框的数据库设计问题

java - 从 win7 移动到 mac,eclipse 缺少 Sun 导入

spring-boot - 批量运行 Spring-Boot + Camel 测试失败

mysql - 满足多种用户偏好的数据库设计?

mysql - 是否建议在数据库中存储堆栈跟踪信息?