The notion of being able to store and retrieve key/value pairs for arbitrary data is a design challenge to embark upon. I am referring to unstructured data that is keyed to a unique id or unique aggregation of an id.
For example, in the non-profit domain, one may want to track contributions from various types of contributors including:
2. Group or Organization
In one application of this is with a non-profit needed to enter contributions at any time for an individual or group and then at the end of a quarter or year, generate a report detailing the contributions specifically for the individual or group as well as an overall report of all contributions for a given time period and year.