I attended the Day 2 Keynote at PASS Summit presented by Rimma Nehme on Globally Distributed Databases Made Simple. This was an amazing presentation. It was presented seamlessly, explaining the technicalities of CosmosDB and how the globally distributed database works from the ground up.
Rimma raised the question, do we need another database? Databases need to meet the data needs for today and the future. Data is global, with large volumes of data being created every 60 seconds, which are continually growing and data is interconnected. The balance is shifting in the type of data and we need to have data globally next to users for processing, meaning the architecture needs to be different.
CosmosDB was originally call Project Florence and was named as such because it is the place where the renaissance began. It was built in the cloud database for global distribution, with a fully resource governed stack and schema agnostic service. A single system image is used for all globally distributed resources.
The resource model may have a database account / database that may span clusters and regions. The database is scaled out in terms of containers. It is designed to scale throughput and storage independently. There are two parts to the design. The physical system design is:
The partitioning system design is:
The design is to enable elastically scalable storage, throughput, anywhere, anytime.
Resource governance cannot be an afterthought. The request unit/sec (RU) is the normalized currency.
There are 5 well-defined consistency models in Azure Cosmos DB with clear trade offs: strong; bounded-stateless; sessions; consistent prefix and eventual.
There is native support for multiple data models with more coming in the future.
The talk continued to cover how indexing works in depth and the key points to remember about Cosmosdb are:
The talk concluded with a great quote “It is not the strongest of the species that survives, nor the most intelligent that survives. It is the one that is most adaptable to change.”
The slides can be downloaded.