Open
Description
Signal metadata is stored in a large JSON-encoded text field in a DB table with only one row. This works well enough currently, but it is inefficient in a number of ways. For instance: changing any value (like updating a single signal) requires re-writing the entirety of the JSON string, and we have API methods that decode the JSON (ex 1, ex2) then perform operations on the result then re-encode it before serving it to clients. Among other things, this approach is not good for concurrency and it does not leverage the power of a DBMS.
An improvement would be to give the metadata table a schema that uses individual columns for each metric, and a row for each signal.
This can aid in making it easier to do things like #289.