What is our primary use case?
At the end of the day, Cosmos DB is a database. It is a wrapper over different APIs.
We use Cosmos DB both internally and with our customers. Our internal use is quite extensive. The usage with our customers depends on whether it is an approved technology within their ecosystem.
Because Cosmos DB uses multiple APIs, it is the go-to database for us internally.
What is most valuable?
Cosmos DB makes life easier because if we want to use Mongo-type data, or Cassandra-type data, or maybe even just a simple cable storage-type data, then graph, there are multiple ways to do this. With Cosmos DB, we can put together a holistic solution when it comes to Azure security policies, Azure Monitor, and access control.
What needs improvement?
By design, Microsoft Azure Cosmos DB provides multiple APIs. You have to decide where to write to. Will you write to Excel, Word, PPT, or OneNote? You have to do the homework properly. If there is no tool, then there will be no provision, then there is no database.
I would like to see Cosmos DB introduce a feature that would convert machine language to human-readable queries. For example, if we want to generate a simple diagram that shows the relationship between devices and how frequently have they failed at various locations, we have to consider that the IoT data that is put into Cosmos DB, called byte codes, is not readable to humans. This is a machine language type of data. So when we push that type of data it looks like gibberish, because it is not meant for us, meaning we can't write a normal query. We have been asking for years for them to work with the IoT partner to provide a feature to convert the machine language to readable human queries.
For how long have I used the solution?
I have been using Microsoft Azure Cosmos DB for three years.
What do I think about the stability of the solution?
The solution is stable. I would give it a five out of five for reliability.
What do I think about the scalability of the solution?
The architectural decisions will tell you how the scaling will happen.
Scalability is based on the requirements that are set. Configuration decisions can be implemented pretty fast, so the solution scales well. We are predominantly in the US and India, so it is easy to decide which geographies we need to have and which data we need to synchronize.
For some of our customers, there are data residency rules like the UAE for example, where patient data must stay within the UAE, making it only one geography. When this is the case, we go for multiple replicas.
Internally, we have more than 150 developers who use Cosmos DB. Overall, the scalability of the solution is a five out of five.
How are customer service and support?
Product support is pretty good. They have a very good roadmap and the team provides regular patches and regular service updates, and they have a very good release plan.
Microsoft's technical support is good, I rate it a five out of five.
How would you rate customer service and support?
How was the initial setup?
The initial setup depends on the type of setup you require. You have to design it properly. The architects need to do some homework to ensure the purpose and the requirements are clear. There are many design decisions that must be made first. Once those decisions are made, the initial setup is quite easy.
Deployment of the solution was completed within a week.
Overall, I would give the solution a four out of five for ease of setup.
What about the implementation team?
The deployment of Cosmos DB was completed internally, we managed it ourselves.
What was our ROI?
The cost is intricate, the calculator is complex because the cloud is all about counting every penny. It may look like small numbers, $0.001 per GB per day, but when we are talking of terabytes of data per day and the numbers will stack up. One month, we had over 500 terabytes. That's why you need a database expert to design it carefully and spend ample time number crunching. If done properly, the ROI will be good.
I would rate Cosmos DB a four out of five in terms of ROI.
What's my experience with pricing, setup cost, and licensing?
Cosmos DB is expensive compared to any virtual machine based on conventional RDBMS like MySQL or PostgreSQL. The reason it is expensive is that it is scalable, reliable and there is no latency. So while Cosmos DB is considered expensive, what a lot of people miss is that the cost includes reliability, scalability, and responsiveness.
Cost also depends on the number of databases, number of replica locations, synchronization, number of queries per minute, and storage. Every client will have a different usage pattern.
Overall, I would rate Cosmos DB a three out of five in terms of affordability. It is easy to over-provision, and it is easy to under-provision the solution.
Which other solutions did I evaluate?
Prior to choosing Microsoft Azure Cosmos DB, we did try other tools extensively. Because we have servers, we tried MongoDB, SQL Server, MySQL, and PostgreSQL. We settled on Cosmos DB internally because we didn't want to go for machines and trojaning. We wanted to adopt a platform as a service.
Cost also ended up being a driving factor.
What other advice do I have?
Overall, I would rate Microsoft Azure Cosmos DB a 10 out of 10.
Disclosure: My company has a business relationship with this vendor other than being a customer: Gold Partners