Storing product price data in the database

The canonical solution for this kind of problems is to use a custom post type and “get” with zero effort admin framework and caching when object caching is used. Any attribute that is needed can be stored as a meta.

Depending on what are your specific needs are, you can register such a post type as private and then it will be displayed on the front end only when your shortcode is used.