How to distribute timeseries over hypertables

Hi.

I starting with Timescale and need to figure out what is a good way to distribute my time series data in the database.

In a common SQL database I usually store all time series data payload in one big table inside three fields: | ts_id | delivery_date_z | value | And currently in 90% of the use cases each curve (time series) is accessed as a whole. So all values with equal ts_id are returned at once.

95% of my time series are forward curves that are created at least every few hours. E.g. the expected price, for a commodity, for each hour of the day, for the next 5 years (44k values at once). Or the expected end-of-year price for another commodity for this year (1 value at once). And everything between this extremes.

My question is: Does it make sense to store different curves in different hyper tables? Lets say all curves with a hourly granularity into table A and all curves with a yearly granularity into table B. Or maybe to distribute the data in another way. Lets say by curve types, or by the approx count of grid points in a curve. Or maybe even to use only one hyper table?

Hi @albarex, I think your case fits perfectly into continuous aggregates which you can store data in different granularities.
Also, continuous aggregates are stored as hypertables behind the scenes.

For data modeling, consider reading Best Practices for Time-Series Modeling
which can give you a good comparison between wide vs narrow designs.