I'm trying to model data & its flow in a software system which
needs different version of values to be tracked.
The problem is that there is different entity types which are needed
to be tracked over time (versions), so I thought about that and I
ended up to define a global time concept in the system:
A reference to a unique entity will be define as:
Ref(EntityType, UniversalKey, TimeTick) which
is an incremental value per isolated business issue (for example in a project management system, two projects will
TimeTick values, cause those projects are different kind of universe!) and the relation/problem will be
something like this:
Ref(ImportedFile, "Tasks-A", 1) | Ref(TaskDef, "XYZ", 2) | Ref(Processing, "XYZ", 3) | Ref(Result, "XYZ", 4)
Tasks-A will contain numbers of TaskDef, but I just mantioned only one value.
In the above case when a new version of
Tasks-A is available, it's possible that some
TaskDefs has been changed:
Ref(ImportedFile, "Tasks-A", 5) | Ref(TaskDef, "XYZ", 6)
In the response to this the model should be able to match the previously processed
Result with updated
which I'm trying to resolve this by
UniversalKey and track differences with
Right now I'm looking for similar patterns & experiences to get better understanding of possible dark-side of this solution.
- What's the possible dark-sides of this approach? Where I can find more detail on these kind of patterns?
- When data granularity will change, what's a good way to handle the situation? for example consider multiple
Processing! Obviously It needs a way of grouping
Processingand being able to match
TaskDef! Should I split the UniversakKey or add GroupingKey? Any suggestion?