In my opinion schema-less data (NoSQL, dynamic objects, globals) does not particularly exist. All that happens when you create schema-less data structures is that data validation and enforcing schema becomes someone else problem. Usually that means application programmer. That's why if possible, consider using strict schemas - the more assumptions about the data you can guarantee, the less validation client application need to do. Also process of data cleansing, reporting and so on become much easier.
That said there are some use cases where using schema-less data is the way to go:
- For new applications/mock-up/PoC, when schema is unknown
- When schema is very extensive and changes often
- When speed is very important and data is retrieved by key (no complex queries)
To sum up, don't use schema if creating it and maintaining it would be a considerably more time-consuming affair than creating and maintaining application/reporting level data validation.
That said I see dynamic objects available in Caché mainly as a means to convert data from/to JSON.
With InterSystems IRIS we introduced DocDB - document database, based on dynamic objects, check it out.
Also mentioning @Stefan Wittmann.