The data format translation solution in Cosmos DB engine could be applicable in many more places, not just for cloud NoSQL database. But how exactly it is done for hierarchical data models like JSON? Maybe using JSONPath to convert tree to array of key/value pairs?
A technical overview of Azure Cosmos DB | Blog | Microsoft Azure
"Azure Cosmos DB natively supports multiple data models. The core type system of Azure Cosmos DB’s database engine is atom-record-sequence (ARS) based.
- Atoms consist of a small set of primitive types e.g. string, bool, number etc.,
- records are structs (composed of types stored in Atom) and
- sequences are arrays consisting of atoms, records or sequences.
The database engine of Azure Cosmos DB is capable of efficiently translating and projecting the data models onto the ARS based data model. The core data model of Azure Cosmos DB is natively accessible from dynamically typed programming languages and can be exposed as-is using JSON or other similar representations. The design also enables natively supporting popular database APIs for data access and query. Azure Cosmos DB’s database engine currently supports DocumentDB SQL, MongoDB, Azure Table Storage, and Gremlin graph query API."