This question is too broad for a concise answer but generally speaking I’d recommend:
- A custom post type
- Custom taxonomies (for grouping)
- Custom fields for arbitrary data (a plugin like Advanced Custom Fields will save a lot of time)
You can query by both the taxonomy & custom fields using tax & meta queries. There’s a premium 3rd party addition for ACF that converts custom fields to real tables if you’re working with huge amounts of data.