What is our primary use case?
Cosmos DB has multiple use cases. For instance, we recently developed a custom application for a customer in India. We used Cosmos DB to store data fetched from the initial front end to reduce access times to the application, which is significant for improving user experience.
For example, when creating a virtual machine through our custom portal, it is essential to check whether a VM with the same name exists in the same or a different subscription.
Additionally, we needed to enforce naming conventions and limitations on the number of VMs that can be created within the same network. These conditional parameters were managed using Cosmos DB, allowing the initial provisioning process to validate data and configurations instantly.
This enables us to inform the user right away if there is a duplication or if the creation adheres to predefined rules, offering suggestions based on the UI. This demonstrates the real-time application and benefits of Cosmos DB.
We use Cosmos DB for its key-value storage capabilities. For structured data, we always use SQL Database.
How has it helped my organization?
The low-latency data access provided by Cosmos DB improved application performance.
Application performance improvement depends on what kind of optimization you're looking for. Do you want to improve latency or efficiency? Performance tuning depends on that specific goal.
Here's an example: A customer with an application running in an internal system noticed their outbound data flow and charges increasing every month. They were exporting a lot of data for users in Excel format, which was heavy.
I suggested they export the data in CSV format instead. It's lightweight and users can still open it in Excel. This optimizes data usage and costs without compromising user experience.
Cosmos DB now supports unstructured data. It's a key-value store, so we can send data without worrying about strict structure, data types, and so on. Since it's unstructured, it's lighter than a structured database.
What is most valuable?
We use Cosmos DB for its key-value storage capabilities, while SQL Database is used for structured data.
What needs improvement?
There is room for improvement in terms of stability.
For how long have I used the solution?
I have been using it for a year.
What do I think about the stability of the solution?
In my experience, Cosmos DB is definitely stable. But, for any service or application, I wouldn't give it a perfect score. There's always room for improvement. A perfect score would mean no room for improvement. So, I always consider some buffer for improvement.
I would rate the stability a seven out of ten.
What do I think about the scalability of the solution?
Since it's a managed service, Azure backend handles scalability. From a user's perspective, we don't need to worry about scalability.
Right now I'm dedicated to customers of one of India's largest certificate authorities, Reliance Jio. They have a lot of customers and two dedicated Azure data centers in India. I focus on those two data centers, and I see at least 10 to 15 customers heavily using Cosmos DB there.
From the user's perspective, it's a managed database service, so all scalability is managed in the backend. Users shouldn't worry about scalability itself, but they might need to consider if paid region support is needed or if other regions are available. Otherwise, scalability shouldn't be a concern for them.
But if you're configuring Cosmos DB in a non-Azure solution, you'd have to manage scalability yourself. In that case, you'd have to be more conscious about it.
How are customer service and support?
We have dedicated technical support in India for each Azure service, including Cosmos DB. Since I provide the framework, design, and initial implementation, I'm involved in most calls to ensure everything is deployed as designed.
But for any issues or troubleshooting, there's dedicated support that gets involved and fixes them. I also stay engaged with the product team.
The product team is very proactive.
How would you rate customer service and support?
Which solution did I use previously and why did I switch?
I predominantly work on Microsoft SQL Database, among others. Sometimes, we use Cosmos DB for specific adaptations or APIs within Azure.
We've also assisted some customers in migrating from MongoDB to Cosmos DB.
How was the initial setup?
If you're familiar with it, it's not complex at all. But for someone new, it can be a little tricky.
Cosmos DB itself is a cloud-based solution. However, I'm currently working primarily with a hybrid solution: Azure Stack HCI with software-defined networking for the environment.
What about the implementation team?
We don't directly deploy Cosmos DB itself; it's a service within Azure. We use our DevOps pipeline to deploy the entire environment, which includes the application, database, environment (including the virtual network), and any connected service endpoints.
Everything gets incorporated into the provisioning source or the DevOps pipeline and then deployed from there. It's a pretty streamlined process for us.
What other advice do I have?
If the cost is affordable and you're looking for a managed service for unstructured data, I would definitely recommend using Cosmos DB from Azure. It also has seamless migration options from MongoDB, MySQL, and others.
So, a managed service is the best way to go if the cost is affordable.
Overall, I would rate the solution a seven out of ten.
Which deployment model are you using for this solution?
Public Cloud
Disclosure: My company has a business relationship with this vendor other than being a customer: Partner