Do you need the ability of global distribution of your data and wonder which database is the best for this? Today, I’d like to give you a comparison between Azure SQL Database and Cosmos Database for global distribution.
Cosmos DB is a globally distributed, multi-model database solution with high SLAs around distribution. It’s designed for your applications and supports document and graph databases. Azure SQL DB has the concept of consistent reads and the ability to store your data. But my goal here is to talk about their differences with global replication and global distribution of your data.
- When it comes to distributing, with Cosmos DB you get a primary instance to write against and it gets distributed to all your read-only replicas that you choose around the world.
- You can simply push a button, activate new scenarios and you can run manual failover transactions.
- The big key with Cosmos is that is was built for global distribution. It was designed with the controls that allow it to be globally distributed with SLAs associated with that global distribution.
- Another key thing is that you get one URL and that URL knows where to go and does all the work.
Azure SQL Database
- Makes it possible to globally distribute your Azure SQL Databases.
- You can have a primary replica that stands in the US and add secondary read-only replicas in Europe and Asia for instance. You can have the read closer to the people who are using your global applications.
A couple things to be aware of, with Azure SQL DB you only have 4 read-only secondaries off an individual or SQL DB. In contrast, Cosmos DB can replicate wherever Cosmos DB is in the data center; you just go in and click a button. Also, in Cosmos you can do manual failover operations, or you can code them out, so it can be written to wherever it is in the world, closer to the active people using your application.
Manual failover is not something you would do with Azure SQL DB. All those writes must come to a primary replica and we’d have to feed out the replicas through read. The biggest pain point you may notice is managing the connectivity to your Azure SQL database in a globally replicated scenario.
There are some techniques, as well as tools within Azure to make it easier to use, such as Traffic Manager. You have the option to use an IP address in Traffic Manager and route things through there, but you must set all that up.
With Cosmos DB, that work is done for you because it’s designed from the ground up to be globally replicated. This does not mean you shouldn’t use active global replication with Azure SQL DB. You just need to understand the differences and use cases to make sure you use the database that best fits your needs to distribute your data globally.
If you’d like to talk more about Azure SQL Database or Cosmos DB or any Azure related topic, we are your best resource. Click the link below or contact us—we’re here to help.