Cosmos DB Geo-replication - SQL on the edge episode 14
As Microsoft Azure's NoSQL service offering, Cosmos DB has received a lot of investment and development effort. Microsoft considers Cosmos as a "ring zero" service, which means that it is available by default from all regions as soon as they open for public usage. Considering its global availability, it only makes sense that the Cosmos team considered geo-replication capabilities from the very beginning and it wasn't just something added on to the service after the fact. What is geo-replication? Geo-replication is the process of keeping multiple copies of a database synchronized over large geographical distances. This is not high availability where we usually have copies of the database in the same data center or independent data centers that are close to each other. With geo-replication, we can have one copy of the database in the East coast of the USA replicating another copy in the West coast across the entire country. We can even replicate from the East coast of the USA all the way to the Tokyo Azure region if we want! Geo-replication therefore can be thought of as mainly a disaster recovery feature but it also opens up other interesting scenarios:
- Reducing read latency: you can place read copies of the database close to users locations.
- Graceful DR Degradation: if you have multiple geo-replicated regions you can set priorities to failover first to a region close to your main user base, then another a bit further and so on.
- Data Sovereignty: Cosmos DB offers geo-fencing by allowing the user to specify the failover regions. For example, if your data is not allowed to leave Canada, then you can setup your database to only permit failover between Canada Central and Canada East. This way, even in the event of a disaster, you know that you are compliant with your regulatory requirements.
// create a connection policy object
ConnectionPolicy connectionPolicy = new ConnectionPolicy();
//set the proper regions
connectionPolicy.PreferredLocations.Add(LocationNames.CanadaCentral); // first preference
connectionPolicy.PreferredLocations.Add(LocationNames.CanadaEast); // second preference
// initialize connection with your endpoint, your access key and the policy object we just created
DocumentClient docClient = new DocumentClient(
https://mycosmosdb.documents.azure.com:443/,
"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
connectionPolicy);
// test the connection
await docClient.OpenAsync();
Demo Now that we have a good understanding of Cosmos DB's geo-replication, let's check out a demo of setting up the geo-replication on the Azure Portal and test the impact of using a closer read-only copy of the database for lower latency queries. Let's check it out!
Share this
You May Also Like
These Related Stories
Cloudscape podcast 2 in review - a deeper dive into the latest in Microsoft Azure
Cloudscape podcast 2 in review - a deeper dive into the latest in Microsoft Azure
May 9, 2018
4
min read
Cosmos DB consistency models – SQL on the edge episode 16
Cosmos DB consistency models – SQL on the edge episode 16
May 3, 2018
2
min read
Microsoft Ignite 2018 special cloudscape podcast
Microsoft Ignite 2018 special cloudscape podcast
Oct 26, 2018
1
min read
No Comments Yet
Let us know what you think