Hej,
potrzebuję opisać system IoT jakimiś danymi słownikowymi. Niech będzie do np. encja Device i Client.
Poszczególne instancje Device w czasie mogą mieć różne wartości parametrów: Param1, i Param2 i mogą być przypisane do różnych klientów. Po prostu CRUD.
Z systemu IoT przychodzą dane dla Device'a i w momencie przyjścia potrzebuje po prostu opisać je tymi parametrami Param1 i Param2 i Id klienta.
W 99% przypadków dane są wysyłane na bieżąco, ale może się zdarzyć, że przyjdą np. dane zbuforowane z przed tygodnia. Gdzie tydzień temu wartości Param1 i Param2 mogły być zupełnie inne niż teraz.

Pytanie czy warto robić system gdzie tabelka Device będzie posiadała jeszcze przedział czasowy (TimestampFrom/TimestampTo) obowiązywania danych. I tak przy zmianie parametru Param 1 wyglądało by to następująco:

Id | DeviceId | Param 1 | Param 2 | ClientId | TimestampFrom | TimeStampTo
---------------- | -------------------
1 | 1 | "aaa" | "bbb" | 1 | 2020-01-10 | 2020-01-20
2 | 1 | "OOO" | "bbb" | 2 | 2020-01-20 | null

Czy np. biorąc pod uwagę, że jednak większość danych będzie spływać na bieżąco to nie lepiej posiadać w tabelce tylko aktualne dane i np. wykorzystać EventSourcing. W momencie jeżeli przyjdą dane z przeszłości odtwarzać stan z eventów (biorąc pod uwagę, że to będzie sporadyczny przypadek).

Czy jest jeszcze inny, lepszy sposób na to?

pozdrawiam
Maciek