What is our primary use case?
Our previous use cases for Microsoft Azure Cosmos DB were mostly for multi-tenant database storage when we needed it. We recently decided to rebuild one of our major products, which is a content management system, on Microsoft Azure Cosmos DB. It's not necessarily a database as much as a content engine, and it has been a major investment to re-platform.
How has it helped my organization?
Microsoft Azure Cosmos DB has reduced our total cost of ownership significantly, allowing us to sell our product at extremely competitive pricing, and Microsoft Azure Cosmos DB is a majority of the reason why that's true.
Super sharp latency and excellent availability are one of the best parts of Microsoft Azure Cosmos DB. Microsoft Azure Cosmos DB's ability to search through large amounts of data is excellent, unless we're talking about AI search with its cost problems.
The challenge that we wanted to address with the built-in vector database was content discovery. Content discovery is a really hard problem in content management, and being able to find relevant content is a big-scale problem. We are using Microsoft Azure Cosmos DB for semantic search and providing AI capabilities that are beyond just simple vector search. It has been good; however, there have been some challenging issues for us.
We are really happy with the AI services in Microsoft Azure Cosmos DB, particularly their hybrid search feature, which combines AI search with full-text search, providing us with a great mix of search results.
What is most valuable?
Overall, Microsoft Azure Cosmos DB is phenomenally easy to use; it is very good. As NoSQL databases go, or as an Azure product, it's great. The search, configuration, and ease of cost management have been a really great experience.
The efficiency of search capabilities is significant, particularly when it comes to the flexibility of conducting in-depth, almost recursive searches that are both efficient and cost-effective. We are currently part of an early access program for a new feature called Fleet Spaces. This feature allows us to manage costs across different tenants effectively. In our setup, each customer has a dedicated tenant in Microsoft Azure Cosmos DB, which means we do not share databases. This approach provides the additional security and restrictions our customers desire, and it helps avoid issues related to noisy neighbors. However, the challenge with this model is that we cannot easily share costs between tenants. Fleet Spaces offers a solution that combines the benefits of multi-tenancy while still isolating each customer's tenant. This is especially important for large enterprises and marketing companies that prefer to keep their content completely separate from others. Additionally, we can share bursts of resources across these tenants, allowing us to gain some advantages of multi-tenancy without compromising security. The vector search functionality is also noteworthy, as it provides all the necessary tools for implementing AI-driven search capabilities. My architect could probably add more insights, but overall, we are pleased with the solid uptime and reliability of this new feature.
The speed of search with Microsoft Azure Cosmos DB is 10 to 100 times faster, and while I don't have a metric yet for recall, I can say that the actual ability to get more content does not have a static metric currently.
What needs improvement?
For integrating Microsoft Azure Cosmos DB with other Azure products or other products, there are a couple of challenges with the current system. Right now, the vectors are stored as floating-point numbers within the NoSQL document, which makes them inefficiently large. This leads to increased storage space requirements, and searching through a vast number of documents in the vector database becomes quite costly in terms of RUs. While the integration works well, the expense associated with it is relatively high. I would really like to see a reduction in costs for their vector search, as it is currently on the expensive side.
The areas for improvement in Microsoft Azure Cosmos DB are vector pricing and vector indexing patterns, which are unintuitive and not well described. I would also like to see the parameters of Fleet Spaces made more powerful, as currently, it's somewhat lightweight. I believe they've made those changes intentionally to better understand the cost model. However, we would like to take a more aggressive approach in using it.
One of the most frustrating aspects of Microsoft Azure Cosmos DB right now is that you can only store one vector per document. Additionally, you must specify the configuration of that vector when you create an instance of Microsoft Azure Cosmos DB. Once the database is set up, you can't change the vector configuration, which is incredibly limiting for experimentation. You want the ability to try different settings and see how they perform, as there are numerous use cases for storing more than one vector in a document. While interoperability within the vector database is acceptable—for example, I can search for vectors—I still desire a richer set of configuration options.
For how long have I used the solution?
We've used Microsoft Azure Cosmos DB in smaller circumstances around our ecosystem for about 3-4 years. Recently, we've made a major investment in shifting our main product's database to Microsoft Azure Cosmos DB. While we've been using it for 3 years, our bigger investment project has been ongoing since December.
What do I think about the stability of the solution?
The stability of Microsoft Azure Cosmos DB is excellent. The uptime is five nines and very consistent.
What do I think about the scalability of the solution?
I rate the scalability of Microsoft Azure Cosmos DB as excellent, as it is the best.
Approximately 50 users work with Microsoft Azure Cosmos DB in our organization.
How are customer service and support?
We are in a privileged position because we have access to the product team. I don’t think I can speak for most other organizations in terms of customer support, as we are part of many of their early access programs. This means we can easily communicate with the principal product manager of Cosmos DB, and he responds within a day. It's been phenomenal, but I don't think this is how everyone else operates.
How would you rate customer service and support?
Which solution did I use previously and why did I switch?
Prior to using Microsoft Azure Cosmos DB, we were using SQL Server. The cost model of Microsoft Azure Cosmos DB is great. The SDKs are better than MongoDB. Microsoft Azure Cosmos DB is distinctly better for what we need.
How was the initial setup?
The initial setup for Microsoft Azure Cosmos DB is really straightforward. My developers love using it, and they find it very easy with strong SDKs, so there haven't been many moments where they don't know what to do next. It took us a couple of days to deploy Microsoft Azure Cosmos DB in our lower environments.
Microsoft Azure Cosmos DB does require maintenance. Most of the maintenance involves two main aspects. Firstly, we did not have NoSQL database administrators, which made the transition more challenging. We had to learn the skills necessary for maintaining a NoSQL database, requiring a significant investment in our own development. Secondly, we are constantly engaged in performance tuning and cost management, both of which require ongoing attention.
It took a couple of days to onboard our team with Microsoft Azure Cosmos DB, and I found the learning curve straightforward. The hardest part was for the DBAs since they are trained in SQL and struggle to transfer that skillset, but developers onboarded quickly.
What was our ROI?
Regarding return on investment with Microsoft Azure Cosmos DB, we estimate a significant amount of time saved. Our competitor took 2 years to rebuild their content management system, while we plan to go live in 8 months, and we feel that a large amount of that is due to using Microsoft Azure Cosmos DB.
What's my experience with pricing, setup cost, and licensing?
This cost model is beneficial because it allows for cost control by limiting resource units (RUs), which is ideal. However, for our needs, we can't engage with their minimum pricing, which ranges from 100 to 1,000 RUs. At the bare minimum, we need to use 4,000 RUs for a customer. I would like to find a way to gain some advantages from the lowest tier, particularly the ability to scale down if necessary. It would be helpful to have more flexibility in cost management at the lower end.
The RU model is great for planning costs, but their vector search is prohibitively expensive and needs to be reevaluated. The pricing just doesn't make sense. For instance, if I want to search a hundred thousand documents in the vector database, it would cost me thousands of RUs, whereas reading from a traditional database only costs one RU, regardless of its size. Even if it's an AI read, the disparity in pricing is concerning. The overall scaling of costs seems off.
Which other solutions did I evaluate?
We did an extensive evaluation of different databases and different database models. We evaluated SQL Server, Cosmos Postgres, MongoDB, Neo4j.
What other advice do I have?
I would definitely recommend Microsoft Azure Cosmos DB due to its reliability, cost management, and being a really high-performance database.
I would rate Microsoft Azure Cosmos DB overall 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