Estoy tratando de resolver el problema de cómo debo crear "registros" para mi aplicación y almacenarlos en la base de datos.
Supongamos que tengo esta estructura de base de datos:
PRIMERA MESA:
weatherstation_id | weatherstation_name | weatherstation_ip_address
SEGUNDA MESA:
sensor_id | sensor_name | sensor_number | weatherstation_id
TERCERA MESA:
measurement_id | value | measure_date | weatherstation_id | sensor_id
¡a partir de esto, debería poder obtener el "registro", por lo que el valor de la medición y la información sobre la estación meteorológica y el sensor ! ¡EN EL MOMENTO EN QUE SE REALIZÓ LA MEDICIÓN! , entonces necesito implementar el historial de alguna manera.
Estoy tratando de resolver esto durante más de dos semanas y descubrí que probablemente debería optar por algo como SCD tipo 4 o 6.
Una opción que me vino a la mente es spring-data-envers , que debería manejar el historial, pero aquí no sé cómo debo "vincular" la medición a la revisión.
La segunda opción es escribirlo por mi cuenta y usar JPA Lifecycle Callbacks y tener en mi lista de entidades WeatherStation de WeatherStationHistory y antes de cualquier actualización o persistir agregar la copia de WeatherStation actual allí y luego tener la medición apuntando a este WeatherStationHistory.
Entonces, lo que quiero saber es cuál es la mejor manera de resolver este problema y cómo implementarlo en la aplicación Spring Boot.
Espero haber descrito claramente mi problema. Estaré agradecido por cualquier consejo.
Creo que debería usar las opciones de nivel de base de datos para SCD. Aunque no sé si hay algún beneficio en esto si se implementa a nivel de aplicación.