I'm trying to figure out how to implement a bi-temporal table for a product catalog on a PostgreSQL database. The catalog table could become quite big over time. I would like to achieve very good performance for frequent queries like "what is the price for product x today" and "what was the price for product x a week ago". I would like to achieve good performance for queries like "what was the price for product x two months ago". I also need to be able to answer queries like "what did I think two weeks ago, what the price for product x was three weeks before that" (hence bi-temporal). Therefore I'm also considering partitioning of the data.
I did find https://pgxn.org/dist/temporal_tables/ to aid in the system-time aspect of the implementation (business time would be "manual") and https://github.com/keithf4/pg_partman for partitioning, but I'm wondering whether the two would work well together and/or whether someone has used these (or alternatives) successfully.