I thoroughly recommend you to avoid such key-value structures, because of many reasons:
1. You need complex validation even for easiest cases of null/not null, datatype,check.
2. No indexing by any value available.
3. Security issues (everybody may see all rows or otherwise you should create a view for each specific case)
3. Total performance (each time you need 1 "object" you need a number of fetches).
4. Application partitioning (you can not extract some self sufficient part as a separate application as all the data is contained in single table).
5. Routine maintenance: you can not switch some part of application (subsystem) offline for administrative tasks.
We use third-party application that implemented some kind of object model using this approach, and scaling it is real headache. When it was purchased, its main table contained some thousand of rows and the whole application looked like very fast and flexible. Now it contains some millions - and we need a really big box to serve this monster, as all the users work with the same table. When 3 years ago our managers decided to bought cluster to move this application to OPS toimprove performance (God bless that "professionals"!), we came home at 4AM: single node worked much faster because of multiple "hard pings", but how might they explain to big boss what was $***K paid for?
The only place you may use this approach is implementing small lists of values,but even for this case you may hit some problems.
Regards, Dima