I'm developing an addon, a part of which would require support for dynamic attributes. By dynamic attributes I mean that I, as a developer, won't be deciding the attributes for a content type. The set of attributes that would apply to a content type would be decided by the end-user. And this "set" would vary depending upon other factors, such as the parent node. 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.