HStore vs. multiple tables with inheritance - do I have a good use case for HStore?
That would certainly eliminate the need to have JOINs but I feel like it would be logical to have individual experiments be separate in some way. Also, it will be very common that one experiment is requested in its entirety


Both of those are good arguments for using table partitioning. PostgreSQL implements this with inheritance and constraint exclusion.


  I’ve thought about having additional tables for storing meta-data/annotations relating to individual data points in individual experiments. Some of this would fit very nicely into the HStore experiments table


Nothing stops you having an hstore field for annotations, or a separate join table of hstore fields for them.


  Different users will be inputting experimental data, I would use schema for this


Why? Surely the same argument applies, that you'll want to do cross-user aggregation too?

I'd just partition by experiment and have the user ID as part of the table's key.


  There will be different experiment types – I think the best way to handle this would be storing these in entirely different databases


Why?

Do you ever think you might need to query across them or aggregate them? If so, do not store them in different DBs.

If they store similar kinds of data, just have them in the main table, and have some optional columns.

If they store mostly different kinds of data (mostly or entirely different columns) then use different tables in the same DB.