On 2/13/25 19:12, Adrian Klaver wrote:
> On 2/13/25 01:53, Achilleas Mantzios - cloud wrote:
>> Now my problem is on the design . We have :
>>
>> a) tags that have primitive values, float4 lets say - this is the
>> majority, e.g. 60% of all tags
>>
>> b) tags that contain alarms data also with defined structure, which
>> have additional data such as time of the initial alarm set,
>> acknowledgement of this alarm , validity of this alarm. Those
>> represent smth like 35% fo all tags
>>
>> c) tags that are basically polymorphic (about 11 of them all in all),
>> each one has different structure, and their fields/cols range a few
>> (1) up to many (25)
>>
>> We have a table for a) and a table for b).
>>
>> If we followed a strict normalized approach then we would create
>> additionally 11 tables each tag of type c) . And we are not
>> guaranteed that the same tags would have the same structure over the
>> whole fleet/manufacturers. So we are thinking of putting all
>> semi-structured data of tags of type c) into one table with a single
>> col of type jsonb .
>>> From what I read timescaledb plays nice with jsonb (or at least not
>>> bad).
>>
>> Do you ppl see any gotcha with this approach ?
>
> The only thing I can see at this time is: 'And we are not guaranteed
> that the same tags would have the same structure over the whole
> fleet/manufacturers.'
>
> That would seem to me to point to a need for a table that maps a
> structure template to a fleet or manufacturer and a corresponding
> field in table c) that holds the fleet/manufacturer information.
Nice idea or just stuff everything (self-contained) inside json and let
the software do the relevant logic, a somewhat more liberal approach.
>
>>
>> For starters we will not convert yet to timescaledb, but store them
>> and handle them like normal tables. At least until we grasp the ins
>> and outs of this.
>>
>>>
>>>>
>>>> Thank you!
>>>>
>>>>
>>>>
>>>>
>>>
>