What is our primary use case?
We are basically a system integrator, so we use Microsoft Azure Cosmos DB in multiple projects for different things, often when migrating from other hyperscalers. We do many AWS to Azure migrations. It's our go-to solution, given its flexibility on the SQL driver and the MongoDB driver. When running a NoSQL database, it's our preferred choice. Recently, with the AI wave, we've been using it as our backing store for many things, from vectors to structured or somewhat structured data.
How has it helped my organization?
One of the scenarios in which we have used the MongoDB driver on Microsoft Azure Cosmos DB was an AI project with the NFL. It was called the NFL Combined Copilot, and we needed to ground data and provide real-time insights to scouts and coaches on the sidelines. It had to be fast and precise, with significant stakes involved. The experience was fantastic in terms of performance. One of the most critical aspects was that there was no room for error - it's five days in February with 350 athletes and 32 NFL teams present. It needs to work, scale, be precise, and bring the required results, or you must wait a year. This has been one of the places where we have pushed it to the limit regarding availability, scalability, and the whole concept of search and grounding for AI applications.
Using Microsoft Azure Cosmos DB and getting started with it is super straightforward. As you scale and adapt along the way, it remains fairly easy to work with. However, as the complexity increases, one challenge is that you need to be mindful of properly structuring your data for world-scale applications. Fortunately, there is plenty of guidance, documentation, and examples available to assist with this.
As a developer or development firm, one of the aspects we appreciate most is the ability to prototype effectively. We can take a project from the initial prototype stage to production-ready status without the need to redeploy the database or switch products. This approach allows us to use the same tools for both prototyping and scaling. It's important to note that you don't have to face a super complex scenario to benefit from this product. It is well-suited for prototyping and remains capable when transitioning to world-scale applications.
With the current AI wave, the built-in vector database capability of Microsoft Azure Cosmos DB for model grounding or the RAG pattern is crucial. Previously, we had to consider alternatives such as Pinecone and other third-party software, dealing with all the problems of designing, scaling, and maintaining the database. Microsoft Azure Cosmos DB enabling this feature allows us to get it out of the box with familiar tools and context, along with the benefits of its scalability and elasticity, providing excellent support for the highly relevant RAG pattern for AI search.
We have developed several AI scenarios, one of which was recently highlighted in Gartner research. This scenario involves discovering multimodal media within the context of sports, showcasing how organizations like the NBA and NFL use Azure to locate specific pieces of content through interaction with an agent. This was built using the vector database functionality we have integrated.
What is most valuable?
The peace of mind that Microsoft Azure Cosmos DB provides regarding global distribution is invaluable. In traditional databases, you need to consider how to scale, whether horizontal scaling is possible, and handle multi-regions, multi-masters, redundancy, and other concerns when building a world-scale solution. We get most of these features with Microsoft Azure Cosmos DB essentially included.
What needs improvement?
I would discuss two separate streams. The first concerns the local developer experience. Microsoft Azure Cosmos DB is a complex cloud platform service, and when developing applications, the most legitimate way to test it is by using the actual product. The ability to run an emulator locally would reduce development costs and improve accessibility, eliminating the need to provision it for each developer. When developing an application, developers typically run everything on their own machine. With Microsoft Azure Cosmos DB, to get the exact same experience and features, we end up using it in the cloud on Azure and paying for it during development. As we add or remove developers from the project, we need to provision new databases or instances. Having the ability to run an emulator or replica in the local development environment would be fantastic for cost savings and developer onboarding.
The second area involves tooling around projected costs for queries. Microsoft Azure Cosmos DB has a unique way of using units to charge for CPU or compute while running queries. Having a calculator to determine query efficiency and expense based on current data structure and projected volume would be really interesting. However, if I had to choose one improvement, it would be the local development experience.
For how long have I used the solution?
We have been using Microsoft Azure Cosmos DB since its release, approximately eight years ago, and we have witnessed its entire journey.
What do I think about the stability of the solution?
The resiliency aspect makes Microsoft Azure Cosmos DB our go-to solution for databases. It has the ability to run in multiple data centers. If there happens to be an outage, which is unlikely, you still have spare nodes and replicas available. The SLA ends up being extremely high from an overall service perspective. Having the flexibility to continue operations even if one Azure region goes down is significant, as you can still write to it and restore functionality when the region returns. With traditional database engines, you would need to implement complex workarounds, such as restoring backups in another location and attempting to sync back to the original location. The stability is excellent, and its resiliency in globally distributed deployments is outstanding.
What do I think about the scalability of the solution?
The scalability is excellent, though it comes with associated costs. When you need more replicas, regions, or additional resources, you will need to pay for them, but you maintain the ability to scale. This contrasts with deploying your own database, where you would need to handle maintenance, and scaling to required volumes might not even be possible due to engine design limitations. Microsoft Azure Cosmos DB has been built with scalability in mind, which is evident throughout the product deployment. The ability to configure regions and replicas is crucial, and it feels unlimited in potential. As long as you can accommodate the costs, you have the opportunity to expand and improve the SLA without re-architecting the entire solution.
Which solution did I use previously and why did I switch?
I have used MongoDB and AWS Aurora in different combinations, such as self-hosted MongoDB, MongoDB Atlas, Aurora, and Postgres. Compared to others, what stands out about Microsoft Azure Cosmos DB is its scalability. When working with MongoDB or traditional SQL databases, horizontal scaling and multi-region/multi-master scenarios are complicated topics that require significant work and planning. With Microsoft Azure Cosmos DB, it's simply a matter of flipping a switch. Though there is a cost involved, it removes many complexities and saves our team considerable time.
How was the initial setup?
It's really straightforward and easy to get started with Microsoft Azure Cosmos DB. One of the main advantages is its compatibility with various drivers. For example, if you are migrating an application from MongoDB, you can use the same MongoDB driver to interact with it. The same applies if you're using SQL or DocumentDB; you can leverage the existing code with minimal changes. This is a significant benefit, especially in scenarios where you might be considering a switch in database engines. Often, developers worry about having to revise their entire application when changing databases, but with Microsoft Azure Cosmos DB, that's usually not necessary. For developers familiar with DocumentDB or MongoDB, the ability to use the same libraries and code brings a sense of familiarity, which is a major time-saver. Additionally, provisioning through the Azure portal is a breeze—it's as simple as clicking a button to get started.
The initial setup took less than an hour to do properly, approximately half an hour.
It does not require any maintenance, but as software systems are living and breathing things, you might need to adjust usage patterns and queries for efficiency. Compared to running your own database, there is no maintenance - you don't need to worry about indexes, drives getting full, or CPU scaling.
What about the implementation team?
The implementation was completed by one person.
What's my experience with pricing, setup cost, and licensing?
The pricing for Microsoft Azure Cosmos DB is good, but there is a developer factor to consider. It could be economical or expensive depending on usage. Guidance about query consumption of Request Units (RUs) would be beneficial, especially since costs can escalate if not used properly. When building solutions on Microsoft Azure Cosmos DB as intended, following guidance and documentation, it works well. Compared to traditional databases, it has a different pricing structure that factors in multi-region capabilities, number of requests, and multi-master functionality. While traditional managed databases simply consider CPUs, memory, and bandwidth, Microsoft Azure Cosmos DB's pricing involves more variables. When used properly, it can be more cost-effective, offering better value due to the included multi-region capabilities, which are quite expensive to implement in traditional database settings.
What other advice do I have?
My advice is to start with the drivers you are most familiar with. If you have experience working with MongoDB, begin using Azure Cosmos DB with the MongoDB driver and the code you already know. From there, you can gradually learn about specifics such as request units (RUs), indexing, and partitioning—elements that contribute to what makes Microsoft Azure Cosmos DB powerful and scalable. By leveraging SDKs and libraries you are already accustomed to, you'll have one less thing to worry about: how to use the platform effectively.
I would rate Microsoft Azure Cosmos DB a nine out of ten.
Which deployment model are you using for this solution?
Public Cloud
If public cloud, private cloud, or hybrid cloud, which cloud provider do you use?
Microsoft Azure
Disclosure: PeerSpot contacted the reviewer to collect the review and to validate authenticity. The reviewer was referred by the vendor, but the review is not subject to editing or approval by the vendor. The reviewer's company has a business relationship with this vendor other than being a customer: Partner