Under the hood, Cosmos DB internally stores data in a format called Atom-Record-Sequence (ARS), which is highly optimized for partitioning and replication. Hence, no matter the NoSQL data type and API, the data ends up stored in this internal format.
Cosmos DB provides support for five different APIs with SDKs for many programming languages and platforms. Based on the data model we use with our database, we must use a specific API to interact with the Cosmos DB database service. The following table summarizes the five APIs that are available based on the four data models:
NoSQL database type |
Available APIs |
Key/value |
Table API |
Column, wide-column, or column-family |
Cassandra API |
Document |
SQL API MongoDB API |
Graph |
Gremlin API |
Â
Based on the information provided in the previous table, if we work with a document database, we can work with either the SQL API or the MongoDB API. If we are migrating an existing application that works with MongoDB to Cosmos DB, we can take advantage of the use of the MongoDB API to migrate the application to the new database service. If we are building an application from scratch, we might consider the use of the SQL API, which provides a Cosmos DB dialect of SQL to work against a document database. We will cover both scenarios in this book. We will work with the SQL API with .NET and C#, and we will work with the MongoDB API with Node.js.
The following diagram shows graphics that represent each of the four explained flavors of NoSQL database and the APIs that can be used for each of them: