Microsoft’s new Azure Cosmos DB, with its five consistency models to choose from, seems to promise to do everything under the sun. It was recently declared by Microsoft to be the first globally-distributed data service that you can use to elastically scale throughput and storage across any number of geographical regions with guaranteed low latency, high availability, and several consistency models.
CosmosDB may have broad enterprise applications and is definitely an interesting development to watch. It promises to become an option worth considering, particularly by users of Oracle and SQL Server, who are considering migrating to Azure, as Azure Cosmos DB customers will be able to scale throughput and storage across any Azure region.
There are other distributed DB options, of course. Spanner, for example, Google’s internal distributed database service, is available as part of Google Cloud Platform, and can shard data across hundreds of datacenters. And we should also mention CockroachDB, a Spanner clone created and open-sourced by former Google engineers at Cockroach Lab, which is yet another highly scalable distributed database that stores copies of data in multiple locations to improve local data delivery.
The grand question is how many companies require the vastness of such database services, and what are the most practical options for the enterprise. The best option for many businesses can only be determined after a careful analysis of their present systems. They must take into account not only their current needs, but also their long term technology goals and ambitions. All of these factors, plus many more, will eventually determine the adoption of CosmosDB. After all, not all services are destined to take off, no matter how high their quality is.
Google App Engine is a great example of a service with a promising early development, which eventually didn’t quite pan out. There are many speculations about the reasons why it didn’t take off. Was it the pricing, was it the timing, was it the database strategy, or perhaps the marketing of the service…? Perhaps all of the above. One of the lessons here is that no matter how great the technology is, its widespread adoption is never guaranteed.
As more developers are looking for ways to optimize distributed application development, chances are more and more options will become available, and that will make it all the more difficult for each individual provider to gain the mind share they strive for.