Kenny Luong 2020/04/27 18:21

For the moment, this is just discussion.

The more I think about things, the more I think the gateway should be a lot more hands off with the type of data that it's storing in the backend. By have a generic table with room for generic sensor readings, it takes quite a bit of load off the folks who are maintaining the gateway; there's no longer any need to run migrations when a new type of sensor module is added.

We currently maintain one schema for each generation.

Here is what a table could look like:

Samples that are not valid can be nullified - they don't take up much space: https://stackoverflow.com/questions/12145772/do-nullable-columns-occupy-additional-space-in-postgresql/12147130

The data frames that carry sensor readings from end devices can be constructed as a mostly 1:1 mapping to the database schema.

Downsides:

there is a downside to this approach - the data itself is not very approachable. you'd have to lookup the details in the schema to understand which samples represent which data. Idea: could we use a view to make the elements more readable?

Upsides

the upside is that it will be much easier for folks to inject new types of data into the gateway; for example, taking sensor readings over time for something.

Other Ideas

It would be nice to have another table where we could store raw frames, in case there is a processing error somewhere.

Authors

Contributing authors:

kluong

Created by kluong on 2020/04/27 20:48.