We can't really make the decision for you. You've identified
the issue -- is it more important to be able to do queries
on attributes with reasonable time, or is it more important
that the attributes be flexible to the extent that you don't
need to change tables? Your question about the database
server is important though -- if you go with a database
where you can't 'ALTER TABLE foo DROP COLUMN barattrib',
like older versions of postgres,
you're not going to want attributes to be a table. I would
recommend against a hybrid system -- if you go that way,
you need to worry about the data stores getting out of sync.
Finally, don't worry about the performance too much --
BLOBs and other large formats are likely to be a bigger
performance hit than normal table access, which is
much more of an optimized, well-studied area of database
implementation. In sum,
.