Earlier quoted context omitted.
It makes sense if each client gets to add their own fields.
Using the builtin type for that purpose is going to work way better. This depends on the DB you're using but is generally referred to as a "JSON" field (why ? Because they're a response to MongoDB, which calls is that). Oracle and SQL server have very similar things. In Mysql, it is JSON data type [1], in Postgres JSON/JSONB [2]. Creating indexes across them is doable, through a workaround (involving what is generall…
Using an EVA, you can have a "keys (id, key_name)" table, and then only use the IDs in the values table, reducing that waste.
By the way, you don't need views for indexing on JSONB fields, it's supported out of the box in PG.