Many distributed NoSQL databases (and Cosmos DB specifically) are unique in their ability to scale to massive size but still maintain millisecond request latencies and also remain highly efficient in performance AND cost. However, achieving this takes knowledge. Finding an optimal design also requires some trial and error too as you will have to test at scale to validate your design will scale.
For those who are new to distributed NoSQL databases (and especially if you have years of experience in designing and using relational databases) and want to undestand how to design a database for scale and performance we recommended consuming this content below to learn some of these key concepts and techniques before getting too far in your design.
Generally speaking, deep undestanding of relational database design will not help in this regard. In fact, in most cases applying relational concepts and techniques are anti-patterns here. Additionally, some of the concepts are unintuitive.
We hope you find this content helpful.
Articles:
- Data modeling in Azure Cosmos DB
- How to model and partition data on Azure Cosmos DB using a real-world example
Videos:
- Modeling and Partitioning - 2 min intro
- How to model and partition data in Cosmos DB - This takes a relational database (the SQL Server Adventure Works sample) and remodels it for NoSQL
- Data Modeling in Azure Cosmos DB - This talks about modeling a book store scenario
Microsoft Learn Labs: (Essentially are HOL's for the second video above)
GitHub Repo:
- Cosmic Works - this is the code and data set for the Adventure Works Video above