The problem is deciding which data model to use for storing those attributes and the corresponding values. The EAV model comes to mind, which is perfectly fine for storing this data and is highly extensible; but then searching and comparing data would become a nightmare. Or would it not?
Another "solution" is to use a separate single table for storing the metadata: attributes as column names and (nullable) values in rows. Insertion, deletion and searching for data would be very easy; but adding and removing attributes (columns) would be painfully slow on large tables.
Now unless there's some other model which I don't know of, that fits the requirement,
help me choose the lesser of these two evils.