Try our new research platform with insights from 80,000+ expert users
reviewer2678751 - PeerSpot reviewer
Full Stack Software Developer at a tech vendor with 10,001+ employees
Real User
Top 20
Works efficiently and it's reliable and scalable
Pros and Cons
  • "It has been very efficient so far. The team has been using it for quite a while. I am new to the team, but they always talk about how efficient it is."
  • "I would rate it a ten out of ten for stability."
  • "I had a challenging experience implementing the emulator with a Mac. I had to install the emulator in a Docker container because it is not natively compatible. A significant amount of time was spent researching how to enable HTTPS communication when connecting the container and the emulator."
  • "I am disappointed with the lack of compatibility of the Microsoft Azure Cosmos DB emulator with Mac."

What is our primary use case?

We use Microsoft Azure Cosmos DB emulator to display database contents and occasionally perform manual data edits when necessary. We utilize it for general database emulation tasks.

What is most valuable?

It has been very efficient so far. The team has been using it for quite a while. I am new to the team, but they always talk about how efficient it is. We are using the NoSQL version. It is easy to use for development. It is reliable and quick. 

It has been pretty efficient when it comes to search. I have no complaints about that. It is easy to use and very compatible with Java.

What needs improvement?

I had a challenging experience implementing the emulator with a Mac. I had to install the emulator in a Docker container because it is not natively compatible. A significant amount of time was spent researching how to enable HTTPS communication when connecting the container and the emulator. I encountered TLS and SSL errors but resolved most of them by setting an environment variable in the container and using HTTPS protocol communication. I also had to use gateway mode with the Cosmos client in my Java app. I am disappointed with the lack of compatibility of the Microsoft Azure Cosmos DB emulator with Mac. I also found a scarcity of online resources regarding this issue.

It would be great to include compatibility with various databases like graph databases, adding to the existing NoSQL and MongoDB compatibility. I have used that for various projects on other platforms, and such additions would be beneficial.

For how long have I used the solution?

I have been using it for about a week now.

Buyer's Guide
Microsoft Azure Cosmos DB
May 2025
Learn what your peers think about Microsoft Azure Cosmos DB. Get advice and tips from experienced pros sharing their opinions. Updated: May 2025.
851,604 professionals have used our research since 2012.

What do I think about the stability of the solution?

I do not see any stability issues. I would rate it a ten out of ten for stability.

What do I think about the scalability of the solution?

It is scalable. I would rate it a ten out of ten for scalability. We have had no issues with its ability to search through large amounts of data.

We have thousands of users. We are a big organization, and it is being used at various locations.

How are customer service and support?

I love the community forums. They provide a wealth of useful information, which gives me an advantage when it comes to support. The only disappointment was not being able to find any information about setting it up on a Mac.

How would you rate customer service and support?

Neutral

Which solution did I use previously and why did I switch?

I have used the cloud-based Firestore database and MongoDB before. They largely perform similar tasks, and I have no problems using either one. They work and get the job done.

How was the initial setup?

For me, the setup was not complex because my team had everything ready.

I watched a couple of videos on YouTube. The onboarding was seamless, especially the database part. It took me no more than two days to learn the basics and necessary setup.

In terms of maintenance, it does not complain if you do not update it, but there are always updates that you can add. For example, for the emulator that I am using, there are a lot of versions I can install, but it works with most of them.

What other advice do I have?

I have no complaints. It does its job efficiently and is easy to set up. Our organization has been using it for quite some time. They must see a value in it. Otherwise, they would go for a better technology in terms of performance or pricing.

I would rate Microsoft Azure Cosmos DB a nine out of ten.

Which deployment model are you using for this solution?

Public Cloud
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.
Flag as inappropriate
PeerSpot user
Alexander Amante - PeerSpot reviewer
Chapter Lead - IoT Full Stack Development & DevOps at Spark New Zealand
Real User
Top 20
Has the standout ability to do data compression easily and scale horizontally
Pros and Cons
  • "The standout features are its ability to do data compression easily and the ability to scale horizontally."
  • "Azure Cosmos DB for NoSQL has a less developed interface and fewer SQL commands than MongoDB, and its community support is also smaller."

What is our primary use case?

We mainly use it as the database for our platform, which is an application that users use as an interface for their IoT products. I work in the IoT chapter, and we developed an application where customers can manage their IoT devices and have a holistic view of their deployment. All data is aggregated in our database, cleaned up with ETLs, and stored in Cosmos DB.

When dealing with IoT products, we encounter massive amounts of data, unlike in commerce, where traffic and data fluctuate. IoT devices, especially ours, generate constant data streams every five minutes, necessitating robust handling. We chose Azure Cosmos DB, specifically the PostgreSQL version, for its ability to store massive amounts of data without performance degradation, thanks to its columnar storage feature. This allows us to compress older data, such as telemetry data older than two years, which is crucial for managing the ever-growing volume of information. Even with compression, we maintain fast access to the data, ensuring optimal application performance.

How has it helped my organization?

I had prior experience with MongoDB on Azure, a platform developed by Microsoft. Since we already used Azure, integration with Cosmos DB, Azure's native NoSQL database, was significantly faster than a standalone MongoDB instance. While Azure offers integration with MongoDB, utilizing Cosmos DB simplified the process due to the readily available APIs. Similarly, Azure PostgreSQL also streamlined integration because it is a Microsoft product, eliminating the need to work with a third-party vendor.

As the only database I've used extensively, particularly with Spark, I recently re-architected our application to identify performance bottlenecks. Surprisingly, Azure Cosmos DB consistently demonstrated exceptional speed, executing complex queries in under 100-200 milliseconds. This contradicted our initial hypothesis that the database was the primary cause of slowdowns. It proved to be one of the most efficient components, requiring minimal optimization. Therefore, Cosmos DB has proven optimal for searching through our organization's large datasets.

We have only used Azure Cosmos DB, so there isn't much reference to compare. However, within our chapter, when dealing with other chapters, there is a noticeable difference in performance in our application. The biggest differentiator in performance and speed for applications is typically the database, and having a speedy database solves a lot of performance issues.

Cosmos DB has provided excellent latency and availability. We have not experienced any database inaccessibility, downtime, crashes, or unexpected bills due to data spikes, even with the massive amounts of data we handle.

A single PostgreSQL node can handle a massive workload of telemetry data, eliminating the need for horizontal scaling in our case. Its impressive capacity and resilience ensure smooth operation even during spikes or large influxes of data.

What is most valuable?

The standout features are its ability to do data compression easily and the ability to scale horizontally. We initially used Azure Cosmos DB NoSQL, a document-based database, but as our application grew, we realized the relationships between entities were becoming more complex and NoSQL was no longer suitable. To address this, we migrated most of our data to Azure Cosmos DB for PostgreSQL, a relational database, while retaining the original NoSQL database for telemetry data. This approach offers two key benefits: simplified data compression, thanks to seamless integration with our ORM, Prisma, and horizontal scalability, providing the flexibility to expand our database capacity as needed quickly.

What needs improvement?

Azure Cosmos DB for NoSQL has a less developed interface and fewer SQL commands than MongoDB, and its community support is also smaller. Additionally, Azure Cosmos DB for PostgreSQL users face the challenge of not having a portal for running queries.

Microsoft could improve its pricing, and the way request units are purchased. The current system requires users to pre-purchase an estimated amount of requested units, often leading to unused units and unnecessary costs. This pre-purchase model is inefficient and inconvenient for users. Overall, the pricing structure must be more flexible and transparent to align with actual usage.

For how long have I used the solution?

I've used Cosmos DB for three years now at Spark New Zealand, and even before that, I worked on Cosmos DB inconsistently until my current company exclusively used it.

What do I think about the stability of the solution?

I would rate Cosmos DB's stability eight out of ten. We haven't experienced any significant stability issues or downtime.

What do I think about the scalability of the solution?

Scalability for Cosmos DB PostgreSQL is rated around eight point five out of ten. The single node is capable of handling massive loads, and we haven't needed to scale horizontally yet.

How are customer service and support?

In the three years of using Azure Cosmos DB, we never needed to contact support, indicating its reliability.

How would you rate customer service and support?

Positive

Which solution did I use previously and why did I switch?

I have used MongoDB previously. The integration with Microsoft Azure and its products is faster and easier compared to MongoDB.

How was the initial setup?

Deploying the NoSQL database was simple, but the PostgreSQL deployment proved more complex. Initially, it was particularly challenging due to limited resources; it was around when Microsoft acquired Citus, and comprehensive materials were scarce. The lack of a dedicated portal further complicated the process, making tasks like running queries more difficult than the user-friendly Azure portal available for NoSQL.

The Cosmos DB PostgreSQL deployment, including investigation and testing, took one week, while the deployment itself only required two days.

What about the implementation team?

There were around ten to twelve people involved in building the application using Cosmos DB. Other teams within our organization might also use it.

What was our ROI?


What's my experience with pricing, setup cost, and licensing?

Pricing is mid- to high-end. The way request units are purchased is atypical, as they must be bought ahead of time based on expected usage, which can be inefficient.

Which other solutions did I evaluate?


What other advice do I have?

I would rate Cosmos DB eight out of ten.

Cosmos DB, particularly the PostgreSQL setup, can be relatively maintenance-free. While the service itself requires no active maintenance, optimizing for cost-efficiency may involve implementing scripts to compress older data, as demonstrated in the PostgreSQL example. This proactive approach minimizes the need for ongoing maintenance, ensuring the application remains hassle-free.

Our Cosmos DB, deployed in a single region, primarily serves businesses and establishments rather than individual users. Each customer typically has only a few users on the app. Our primary concern isn't the number of users but the volume of telemetry data generated by devices at each establishment. These devices transmit data every five minutes, resulting in a constant influx of information 24/7, 365 days a year.

Within my chapter, around 15 people are using Cosmos DB.

For NoSQL, I would recommend it if you are already using Azure. For PostgreSQL, the lack of a query portal is a downside, but the features it offers can justify its slightly higher price.

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.
Flag as inappropriate
PeerSpot user
Buyer's Guide
Microsoft Azure Cosmos DB
May 2025
Learn what your peers think about Microsoft Azure Cosmos DB. Get advice and tips from experienced pros sharing their opinions. Updated: May 2025.
851,604 professionals have used our research since 2012.
reviewer2595951 - PeerSpot reviewer
Head of IT, Infrastructure, Operations & Applications Development at a manufacturing company with 201-500 employees
Real User
Top 20
It's helpful for big data applications, but we're still having trouble with performance
Pros and Cons
  • "The solution is used because we get faster response times with large data sets than with SQL. It's essential for us because we have half a billion rows, and we need to return them quickly."
  • "The solution is used because we get faster response times with large data sets than with SQL."
  • "From about half a billion rows, we're returning maybe 20,000 in two or three minutes. We don't know why, but we are working with Microsoft and a third party to figure that out."
  • "The customer service is lacking. We have a premier support agreement, but support is hit and miss."

What is our primary use case?

We utilize the solution for big data, which is collected from IoT devices and streamed through a number of Azure services. The data is then landed in the Cosmos database for analysis later.

What is most valuable?

The solution is used because we get faster response times with large data sets than with SQL. It's essential for us because we have half a billion rows, and we need to return them quickly. 

What needs improvement?

Using it is easy. We are having trouble optimizing it. I'm not a technical person, so I couldn't explain why, but we're not getting the performance we were expecting. I'm sure it's probably an us problem instead of a product problem, but that's where we are.

From about half a billion rows, we're returning maybe 20,000 in two or three minutes. We don't know why, but we are working with Microsoft and a third party to figure that out. 

For how long have I used the solution?

I have used it for about four years.

What do I think about the stability of the solution?

There are issues with latency between data arriving in Cosmos and showing up in a query. I'm told that's just the nature of the way Cosmos works. It can take up to five minutes to show up, but that's not a significant issue as we have workarounds in place.

What do I think about the scalability of the solution?

I think the ability to scale workloads will depend on the outcome of tomorrow's meeting.

How are customer service and support?

The customer service is lacking. We have a premier support agreement, but support is hit and miss. There are good engineers and not so good engineers. Premier Support has deteriorated compared to what it used to be, especially for small to medium-sized customers like ours.

How would you rate customer service and support?

Neutral

Which solution did I use previously and why did I switch?

We used SQL previously, but Microsoft told us to use Cosmos DB because SQL wasn't performing.

How was the initial setup?

The initial setup wasn't a long process. It took a couple of weeks. The whole thing was a proof of concept that eventually migrated into live use.

What's my experience with pricing, setup cost, and licensing?

The solution was a new product, so we didn't have a cost of ownership before. The cost has not surprised us. It's not been an issue. If we were doing multi-master replication globally, the cost would increase significantly, but since we're not, it's manageable.

What other advice do I have?

I rate Microsoft Azure Cosmos DB seven out of 10. If we can fix the problem we have, I could rate it a ten because there's nothing else I can point to for improvement if the performance meets our needs.

Which deployment model are you using for this solution?

Public Cloud
Disclosure: I am a real user, and this review is based on my own experience and opinions.
Flag as inappropriate
PeerSpot user
James Novino - PeerSpot reviewer
Senior Director of Engineering at a non-tech company with 51-200 employees
Real User
Top 10
Managed platform service boosts performance and has geo-redundancy and dynamic scaling
Pros and Cons
  • "We primarily use Cosmos DB because it's a managed platform service, eliminating concerns about hosting and reliability."
  • "One of the primary challenges with Cosmos DB as a non-relational data store is the careful data modeling required due to the lack of collection-level joins when using the SQL API."

What is our primary use case?

We use Cosmos DB in a multifaceted manner, primarily as an operational data store. Additionally, it serves as an analytics and reporting synchronization platform through Synapse Link, Azure's connective data warehousing solution. By connecting directly to Cosmos using the change feed, we project data into our data warehouse and data lake, facilitating both operational functions and analytical reporting needs.

How has it helped my organization?

Cosmos DB significantly enhanced our search result quality due to its impressive performance and reliability, bolstering the overall quality of our service offerings.

Realizing the full benefits of Cosmos DB took time, roughly one to three months. This was mainly due to the transition from a relational data store and the need to restructure our data to fully leverage Cosmos DB's capabilities, such as change feed and other features. While the immediate benefit was eliminating infrastructure maintenance and reducing DevOps/SRE overhead, achieving the total value we sought required optimizing our data structure for this new environment.

What is most valuable?

We primarily use Cosmos DB because it's a managed platform service, eliminating concerns about hosting and reliability. Its geo-redundancy feature allows us to share data globally across three data centers in US Central, East US, and West US, with US Central as the primary write region and the others for reading. Additionally, we leverage Cosmos DB's auto-scaling features, including burst capacity, database-level, and collection-based auto-scaling, and dynamic scaling per region/partition, to accommodate our fluctuating workloads throughout the day.

What needs improvement?

Cosmos DB has a couple of areas for improvement. Firstly, the lack of multi-collection joins is a significant limitation. Secondly, Azure Synapse Link, their data warehousing and synchronization feature, is unreliable and still feels like a preview feature. Improved reliability in this area would be greatly appreciated. Additionally, while Microsoft provides helpful internal monitoring tools, the managed nature of Cosmos DB can sometimes hinder visibility and make it difficult to troubleshoot issues, leaving us unsure whether the problem lies with our implementation or the service itself. Overall, we are satisfied with most aspects of Cosmos DB, but addressing these issues would significantly enhance its usability.

One of the primary challenges with Cosmos DB as a non-relational data store is the careful data modeling required due to the lack of collection-level joins when using the SQL API. While joins are possible within a single document, joining across documents or collections is not supported with this API. Although the Mongo API and Gremlin API on Cosmos DB allows for cross-collection joins this limitation in the SQL API remains a significant drawback.

For how long have I used the solution?

I have been using Microsoft Azure Cosmos DB for ten years.

What do I think about the stability of the solution?

While Cosmos DB has experienced occasional stability issues in previous years, its performance has been consistently reliable over the past 12 months.

What do I think about the scalability of the solution?

The scalability of Cosmos DB is very good. It is one of the best capable offerings for scaling workloads.

How are customer service and support?

We pay for unified response support, and generally, the support for Cosmos DB is good. However, without top-tier support, it can take a while and might not always be the most helpful.

How would you rate customer service and support?

Neutral

Which solution did I use previously and why did I switch?

We extensively use Google Bigtable and, to a lesser extent, MongoDB. Additionally, we are increasingly utilizing Redis for various NoSQL use cases.

Cosmos DB and MongoDB differ in several key areas. While Cosmos DB excels in scalability, reliability, especially on Azure, and change feed capabilities, MongoDB offers a superior developer experience with local development options and more complex NoSQL use cases like multi-collection joins and advanced store procedures. However, MongoDB's query workloads are generally more capable, and it offers a wider range of indexing options and document size limits. Ultimately, the choice depends on specific needs and priorities, with Cosmos DB favouring cloud-based applications and MongoDB providing greater flexibility for complex database operations.

How was the initial setup?

The initial setup was straightforward; one person completed it within one week.

What about the implementation team?

We handled the deployment all in-house without any external integrator or consultant.

What's my experience with pricing, setup cost, and licensing?

Cosmos DB is a managed offering, so its cost is understandably higher. However, the value it provides aligns with its price, especially considering the discounts we receive. By purchasing reserved units for three years, we secure a significant discount, making the cost justifiable for our needs. Without this discount, the list price might be prohibitive for certain use cases.

What other advice do I have?

I would rate Microsoft Azure Cosmos DB eight out of ten.

It took us three months to be fully onboarded with Cosmos DB.

The learning curve for Cosmos DB is certainly different from SQL databases. While most developers become proficient with basic functionality within a week or two, achieving true expertise in Cosmos DB requires a considerably longer time investment due to its unique architecture and features.

The maintenance is handled by Microsoft.

Be very careful with your partition keys when using Cosmos DB.

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.
Flag as inappropriate
PeerSpot user
Pravin Kadam - PeerSpot reviewer
Enterprise Technical Architect at a financial services firm with 201-500 employees
Real User
Top 20
It's faster than other comparable solutions for unstructured data
Pros and Cons
  • "Cosmos DB is a document database that stores data in JSON format for faster retrieval of unstructured data. I personally appreciate the speed, which is significantly better for unstructured data, especially since Cosmos DB had JSON as a data type early on."
  • "The UI needs enhancement. Unlike SQL, Cosmos DB's UI is not as straightforward, making it a bit challenging to use efficiently."

What is our primary use case?

We use it primarily to log all events for a particular user and product. A particular users are logged in to see if a product has been modified. If someone modifies the data, we log that information along with the email. This helps when we need to compare modifications to a product.

How has it helped my organization?

Our admin section benefits greatly as Cosmos DB makes it easier to track down the history of product modifications, including the initial price, the current price, who modified it, and how much it was modified.

The search is slower than SQL but faster than MongoDB and other document databases.

What is most valuable?

Cosmos DB is a document database that stores data in JSON format for faster retrieval of unstructured data. I personally appreciate the speed, which is significantly better for unstructured data, especially since Cosmos DB had JSON as a data type early on.

It's pretty easy to use and optimize since it's unstructured data. It sometimes takes time since it's in JSON format, but it's useful in the admin section. The learning curve isn't long if you have some SQL knowledge because the queries are similar. It's straightforward for anyone with database exposure. 

We don't use the vector database, but we're aware of it and we know that it will allow faster retrieval with Azure AI integrated.

What needs improvement?

The UI needs enhancement. Unlike SQL, Cosmos DB's UI is not as straightforward, making it a bit challenging to use efficiently.

For how long have I used the solution?

I have been using Cosmos DB for the last seven years.

What do I think about the stability of the solution?

We have not experienced any downtime. The retrieval is significantly faster compared to using SQL for storing JSON data.

What do I think about the scalability of the solution?

We have had no issues with scalability. It works well for us, fitting seamlessly into our workflows.

Which solution did I use previously and why did I switch?

We evaluated DocumentDB and other document databases, but since Cosmos DB is a Microsoft product and integrates well with Azure, it was the preferred choice. 

How was the initial setup?

Like any technology, it took a little time to learn Cosmos DB. It was relatively straightforward. We had to watch a few videos on how to set up particular databases, indexes, and keys. 

What was our ROI?

Cosmos DB has definitely improved our organization's cost structure, but I would need to check the specifics to provide exact numbers.

What's my experience with pricing, setup cost, and licensing?

The Cosmos DB pricing model is reasonable, especially since we use it for backup operations rather than front-end processes. We have been using it for several years and continue to do so.

Which other solutions did I evaluate?

We compared Cosmos DB with DocumentDB and other document databases.

What other advice do I have?

I would rate Azure Cosmos DB an eight out of 10. There is potential for improvement, especially in the UI, which can be cumbersome to navigate.

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: My company has a business relationship with this vendor other than being a customer: Partner
Flag as inappropriate
PeerSpot user
Yoni Nijs - PeerSpot reviewer
CTO at Zero Friction
Real User
Top 20
Provides a lot of flexibility, instant scaling, and outstanding performance
Pros and Cons
  • "It gives us a lot of flexibility. The scaling is instantaneous as well. You immediately have all the resources available."
  • "There are multiple approaches to implementing multitenant architecture on Azure Cosmos DB, but there is still no single or best-recommended approach when you have a big variance in the size of your tenants. That is something that still needs to be worked on."

What is our primary use case?

We use Azure Cosmos DB as our data storage or database technology platform, and we use it as the backing storage of our metering and billing back office system.

We have an energy metering and billing solution, a SaaS billing solution, which is responsible for the whole back office for district heating and cooling suppliers. Our platform is responsible for the ingestion of time series data, and at the end of the processes, we generate invoices, which are sent out to customers. On top of that, we provide a consumer portal where consumers can view their energy usage and consult their bills. 

They are two separate products, and both are using Azure Cosmos DB. The B2C or the consumer portal is using Azure Cosmos DB serverless because of its very spiky nature. It is very unpredictable how many users will be using the B2C portal, and the back office application is using Azure Cosmos DB with provisioned throughput with auto-scale configured, which makes it very scalable and still cost-effective.

How has it helped my organization?

The uptime is very good. Over the six years that we have been working with Azure Cosmos DB, it has not let us down even once. We never had any downtime with the service. There is a very high SLA. We do not use the multi-region scale and multi-region deploys, but what we do use is the availability zone setup on Azure Cosmos DB, so we have West Europe and North Europe paired, which makes it very cost-effective to have a failover to a different data center in the same availability zone on Azure. That is the most important part.

Its performance is outstanding. It is very fast. Its evolution and the approachability of the product team have also been good. I have been working with their product team for a while. They have sent over a lot of questions and we have had a lot of interviews, calls, conversations, and discussions on how to best approach certain architectural decisions. We can also discuss and understand how to adapt new features to our infrastructure or architecture to use those features to the fullest. I appreciate it. They are very reachable.

With regards to optimization, it might sometimes be a black box. It is not like SQL where you have indexes, for example, and you have a query plan with indexes, so you can set up and tune to improve your query performance. In Azure Cosmos DB, by default, everything is indexed, which can be good, but it can also be bad because it can impact performance. It is difficult to understand which indexes you really need. You have the basic indexes, all fields being indexed, but then you have composite indexes, which are not created automatically. You need to create them manually. It is difficult to get insight into what type of composite indexes you need, so there is some work there. On the other hand, you can easily follow the resource usage. You can monitor whether your databases are nearing their full resource availability. You either need to scale up or adapt auto-scaling. That is useful with regard to usage. If you are used to NoSQL, you should be able to get up to speed with that pretty fast. We use Azure Cosmos DB for NoSQL. That is a specific provider. We do not use MongoDB, Cassandra, and so on. That means that the syntax to query is SQL. You use a sort of SQL syntax, so the step is really small to go from a different NoSQL provider to Azure Cosmos DB. Of course, if you go from a relational database to a NoSQL database, that is a different story.

We could see its benefits immediately after we deployed it. Immediately after we started, it became very clear that it is very accessible and very user-friendly. It is a managed service. It is not like you set up a SQL and you need to do everything yourself. It is a managed service, and you have global distribution automatically. You set a checkbox, and you have a globally distributed database with high availability and continuous backups set up. It takes away a lot of the pains that you encounter as a startup company that needs to interact with enterprise customers. Our target audience is enterprise B2D customers who have specific requirements around data residency, backup and restore, high availability, and so on. Azure Cosmos DB makes it very easy to comply with those requests.

What is most valuable?

The flexibility and scalability are valuable. You have multiple models. You have serverless, and then you have provisioned throughput, auto-scale throughputs, and so on on top of reserved capacity possibilities where you prepay for capacity. I like that. It gives us a lot of flexibility. The scaling is instantaneous as well. You immediately have all the resources available. The fact it is NoSQL makes it powerful. 

What needs improvement?

Resource governance across tenants is something that requires some work. There is some room for improvement there. We are a multitenant solution. We decided to follow a certain approach in our architecture, which had an impact on the Azure Cosmos DB. There are multiple approaches to implementing multitenant architecture on Azure Cosmos DB, but there is still no single or best-recommended approach when you have a big variance in the size of your tenants. That is something that still needs to be worked on.

The monitoring aspect can also be better. There should be better monitoring of the costs versus the performance. That is sometimes difficult. It is easy to see or track performance monitoring and separately track your bill, but it is difficult to view the overall picture in terms of the relationship between the cost and the performance. That is something they still have to work on.

For how long have I used the solution?

We have been using Azure Cosmos DB since August 2018. It has been a bit more than six years.

What do I think about the stability of the solution?

I would rate it a ten out of ten for stability. We did not encounter any downtime. We never encountered any drops in latency. It is a very stable product.

What do I think about the scalability of the solution?

It depends on how deep your pockets are, but it is very flexible. If you have a good architectural setup, you can easily scale with it. Scaling is almost instantaneous. It is pretty flexible.

How are customer service and support?

I have interacted with their support. If I have issues, I log a support request with Azure, and then it goes via Azure. If I have architectural questions and so on, I already have a lot of contacts within the Azure Cosmos DB product team. I can contact them to get a better understanding. They are very reachable. Most of the time, I get an answer within a few days. I would rate their support an eight out of ten.

How would you rate customer service and support?

Positive

How was the initial setup?

It is a cloud deployment. Its initial deployment is easy. You set up the Azure Cosmos DB instance. It takes a few minutes. One person can definitely set it up.

The time taken by a team to be onboarded with Azure Cosmos DB varies. It depends a bit on whether the user has any experience with NoSQL or not. If he has experience with NoSQL, it would take a few days or months to get up to speed and understand how to use the platform in a day-to-day fashion. There are also advanced features and concepts. For example, if you are using SQL Server, not everybody understands to the fullest how a cluster index works behind the screens, but they do know how to use a query or how to write a query, so there is a difference. Writing a query and so on takes a few days, and that is it. Understanding the concepts of partitioning, such as logical partitions, physical partitions, scaling on those partitions, the quota requirements, high availability and so on might take a few weeks, which still is not that much.

Once you are used to the concepts of throughputs, scaling, or request units, it is easy. In terms of the learning curve as a whole, it is not the easiest, but it is right above it.

Its maintenance is all being taken care of by the Azure Cosmos DB team.

What was our ROI?

It is hard to say if Azure Cosmos DB helped decrease our organization’s total cost of ownership because we started with a greenfield application. We built something from scratch and immediately started using Azure Cosmos DB. However, there have been two features that have created an impact on TCO. These two features that were released helped to not increase our TCO in one-to-one correlation with the number of customers we have. We have the auto-scale functionality, which is two or three years old now. It made a big difference in the cost. The second one is the dynamic per partition and per region auto-scale functionality. We enrolled in it during a private preview, but it went GA just recently. That decreased the bill as well.

What's my experience with pricing, setup cost, and licensing?

It is expensive. The moment you have high availability options and they are mixed with the type of multitenant architecture you use, the pricing is on the higher end.

Which other solutions did I evaluate?

We had a look at MongoDB but decided not to use it because the managed service of MongoDB was not so powerful compared to Azure Cosmos DB. You still have a DIY approach with MongoDB and you set up everything yourself, but as a startup, your resources are limited, so you do not want to spend time on setting up the infrastructure.

We also had a look at Postgres. I have a few options in Postgres to do NoSQL, but the actual NoSQL power of Azure Cosmos DB really makes a big difference. We could not find a better solution for that.

What other advice do I have?

We do not use the built-in vector database capability. At the moment, we do not use anything for that. We do use all change feeds, all versions, and deletes to link with Microsoft Fabric to populate the data warehouse. We do not use mirroring yet because mirroring has a few limitations. That blocks us from using it.

Azure Cosmos DB has not helped us to improve the search result quality in our company. That is not something of importance in our application. It is an ERP application.

Overall, I would rate Azure Cosmos DB a nine out of ten.

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.
Flag as inappropriate
PeerSpot user
Karlo Zatylny - PeerSpot reviewer
Chief Technology Officer at Portnox
Real User
Top 10
Satisfies our needs for global availability, flexibility, and scalability
Pros and Cons
  • "We chose Azure Cosmos DB initially because of the type of data that we needed to store. We have a schema that is very nondeterministic and flexible. It is always changing based on whatever data we need to acquire from different devices, so we needed a document store with a flexible schema."
  • "The one thing that I have been working on with Microsoft with regard to this is the ability to easily split partitions and have it do high-performance cross-partition queries. That is the only place where either our data size or our throughput has grown beyond one partition, so being able to do cross-partition queries efficiently would be my number one request."

What is our primary use case?

We use it as our main database for our network access control software, and we use it to store all of the information we need to authenticate different devices and users to the networks of our customers. It maintains all of the necessary data for our SaaS product.

How has it helped my organization?

It is pretty easy to maintain and to optimize. The main thing that we have to deal with is the RUs. Probably the number one topic of Azure Cosmos DB in the world is how to make sure you have the right RUs set in place for each of your different collections, but the tools that are available in the Azure portal make it very easy for us to check how the performance is going. We can check if we need to adjust anything within the system to ensure that we have the right scale and the right split of our different indexes so that we are getting the most throughput for the data we need. In general, it is very easy for us to maintain. We just need to use the Azure tools to let us know when we need to pay attention to the different throughput variables that are important in the general maintenance of the product.

We use Azure AI Search for all of our search needs. The integration that Azure AI Search has with Azure Cosmos DB is very good. We heavily utilize the integration with Azure AI Search for a lot of the features on our website. The search works very well. I do not know if we have what one would consider large amounts of data because each one of our customers is searching through just their own set of data. On average, each customer has data in the range of only gigabytes, so the search does very well, but I do not know if you would consider what we have as very large amounts of datasets. We are dealing in the few gigabytes range rather than anything huge like terabytes.

The benefits of its global availability and the response time were noticed right away because we immediately had customers who were globally distributed, so the latency was noticed right away. We got a good performance that way. We did not notice any of the other benefits until we got a lot more customers and had a lot bigger scale. As our scale has increased dramatically over the past couple of years, we have noticed that we have not had to do much with Azure Cosmos DB. It just takes all of our additional data and additional queries and all of the additional throughput that we are throwing at it. It does not need very much in terms of maintenance and performance tuning because it handles everything we need pretty much out of the box, so it is a low-maintenance solution for us where we just check on things every once in a while as a best practice. In terms of scalability, we have doubled, tripled, and quadrupled our customer size or number of customers, and we have not had to do very much with it architecturally just because it has been able to handle that scale.

For onboarding, the documentation is very good. As soon as I joined the company, I read a lot of the Azure Cosmos DB documentation so that I understood it. It is well documented, and there are support forums and Microsoft experts. We have a Microsoft Solution Architect dedicated to us, and we have been able to ask him questions. The community surrounding it and Microsoft's ability to answer all of our questions, my questions specifically, have been really good. The documentation is great. I have been able to find all of my answers during my tenure. Everything is generally answered in the documentation, and for what is not, Microsoft has been very quickly able to get to us through our Solution Architect.

Within the first week, I was already executing queries against the database and monitoring its performance. Within a week, I had a basic understanding of how to interact with the database and understand different performance metrics and structures within the database. It is pretty easy to learn if you are familiar with other databases. Because I was familiar with other document stores and SQL-based databases, there was not a lot to understand. There are some differences in the SQL language that you are allowed to use with Azure Cosmos DB, so there was a little bit of a learning curve there, but the documentation was really specific. It is not a sharp learning curve if you are familiar with any other database systems. If you are familiar with SQL Server, MongoDB, MySQL, or Postgres, a lot of the concepts are exactly the same.

What is most valuable?

We chose Azure Cosmos DB initially because of the type of data that we needed to store. We have a schema that is very nondeterministic and flexible. It is always changing based on whatever data we need to acquire from different devices, so we needed a document store with a flexible schema. 

In addition to that, our customers are globally located, so we needed a database store that could be globally accessed and had minimal latency, good throughput performance, good query performance, as well as scalability. All of the things that you look for in a good piece of software about performance, scalability, high availability, and disaster recovery are available in Azure Cosmos DB. Because of that and because it is a flexible document storage, we went with Azure Cosmos DB.

What needs improvement?

The one thing that I have been working on with Microsoft about this is the ability to easily split partitions and have it do high-performance cross-partition queries. That is the only place where either our data size or our throughput has grown beyond one partition, so being able to do cross-partition queries efficiently would be my number one request.

The request unit architecture that they have in place is understandable but could be better. What you get out of some solutions like SQL Server or MySQL is a lot more understandable. The request unit architecture of Azure Cosmos DB is not as easy as pure SQL solutions. They could do better in making the RUs more understandable and more flexible because changing your partition keys and your indexes is a larger batch of work than it necessarily needs to be.

For how long have I used the solution?

The company I have been working for has been using it for more than five years, but I have been with the company for just over two years. I have been working with Azure Cosmos DB during my entire two-plus years at the company.

What do I think about the stability of the solution?

We have had only one incident where Azure Cosmos DB went down. It was about two years ago in the East US. They had an incident where the update they made caused some downtime for us. I forgot what the duration was, but luckily, we had global replication for our main Azure Cosmos DB setup, so while the East US was down, the West EU region picked up. The majority of our operations continued without issue because of our use of the global replication option available within Azure Cosmos DB.

Latency and availability are great. You can, of course, write code that does bad things for it, and we have had to fix our own code sometimes. Whenever we have written our code properly, latency and availability have been great.

What do I think about the scalability of the solution?

The scale has been wonderful. Our ability to add request units as we have needed them has been easy. We do not have to do much other than tell the system we want more, and then it automatically scales for us, so we do well there. 

The only limitation is around the partitions. Each physical partition maxes out at 10,000 request units as they have documented. We have had to deal with that while designing our data structures to make sure that we take into account that physical partition limitation.

How are customer service and support?

The quality is top-notch. We have been able to talk directly to some of the Azure Cosmos DB experts at Microsoft. We have been able to get extremely detailed answers with very specific recommendations for all of our different questions.

Their speed has been definitely acceptable. Within a day or two, I get at least an acknowledgment of my question. We have not had any high-severity questions to be answered right away. Most of our questions are during the design phase where we just need to know specific recommendations based on our needs, so there has been no real-time pressure. Answering or acknowledging our question within a day or two has been an acceptable time frame. We generally get our answers within a week, which has also been acceptable for us. We have never needed a super fast answer, but I am also clear about that in my communication with them. I tell them that it is not an emergency, and we are just in the design phase and need these questions answered.

I would rate their support a ten out of ten. There is nothing that I would ask for more from the support. They are responsive. They give accurate answers, and they are easy to deal with. That is all that you want from a support experience.

How would you rate customer service and support?

Positive

Which solution did I use previously and why did I switch?

Historically, in my career, I have used SQL Server, ClickHouse, Postgres, and MySQL. ClickHouse is probably the closest equivalent, but we had to maintain everything in-house, so it was a lot more intensive to maintain. SQL Server was nice, but it does not have the document flexibility, or it did not have that at the point in time we were thinking of using Azure Cosmos DB. So, I am very familiar with all the SQL-based servers historically. They just did not have the necessary document flexibility that we were looking for when we selected Azure Cosmos DB.

How was the initial setup?

It was already in place when I joined.

It does require some maintenance as we grow. Each one of the collections scales up by request units. We use the autoscale feature, but it has a bounded range, so as we grow, we watch the RU maximum, and we adjust the RU maximum of our different containers as we scale up. The maintenance is minimal. We change the RU scale maybe once per quarter. Otherwise, everything goes fairly without maintenance.

What was our ROI?

I do not know if it has helped us decrease the total cost of ownership, but certainly, it has helped in our DevOps maintenance. Our DevOps people spend a lot less time worrying about or dealing with Azure Cosmos DB. Because of that, we do not spend a lot of person-hours on Azure Cosmos DB. However, Azure Cosmos DB does come at a premium price in terms of being able to do all of its features. It has an appropriately associated cost with it. Because of that, we have not done any formal calculations to see if it saves us more than some of the other solutions such as SQL Server or Postgres. We have not done a cost comparison. What we do know is that it satisfies all of our needs. We do not spend a lot of time thinking about it. As we add features and datasets to it, we do not have to do a lot of performance testing, so we are just able to add things to it. It just works, and we do not have to spend a lot of development time, QA time, or DevOps time worrying about whether it is going to be able to satisfy what we need it to do.

As opposed to running our own VMs or our own databases, it would have reduced our overhead costs. All we have to do is go into the Azure portal, click a couple of buttons, and type a couple of numbers, and then it just happens without any other effort. It takes us seconds to minutes to change things, whereas other solutions might take days or hours to process. From that perspective, there is certainly a reduction because it only takes us a few seconds to scale our Azure Cosmos DB without any other effort. However, you pay for that with the actual price of Azure Cosmos DB itself. That is somewhat built into the price where Microsoft takes on that maintenance cost, but you pay for it.

What's my experience with pricing, setup cost, and licensing?

The pricing and licensing model was initially difficult to understand, but as soon as I learned what was going on and how it was priced, it was pretty easy. What is more difficult is to understand how your system is going to behave specifically with the specific partitioning and querying that you are doing. Some of it is reactive because you cannot always predict what your customers are going to use in your product and in what specific way. So, while we have understood the pricing model, what we have not understood is which parts of our system would end up being the most expensive, costing us the most, or needing to scale the most. It is not necessarily an issue with Azure Cosmos DB itself. It is about understanding your individual software or our individual software when it is running on top of Azure Cosmos DB. It is about understanding what the behavior is going to be.

What other advice do I have?

I would advise taking advantage of all of the features that are available. Especially if you are a globally distributed business, make sure that you have all of the high availability and backup options enabled so that you are not surprised in case of a problem.

Like almost all of the recommendations that you see in different Microsoft videos, make sure that your partition keys are set up properly from a RU perspective so that you know that you will be able to scale your individual containers effectively without running into the limitation of 20-gigabyte physical partition size or 10,000 RU physical partition throughput. Be aware that those exist and design your partition keys for the future so that you will not be limited when your system starts to get heavily utilized in the future.

I would rate Azure Cosmos DB an eight out of ten. There are some improvements that I would like to see around the physical partitions.

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
Flag as inappropriate
PeerSpot user
Full Stack Developer at a tech services company with 5,001-10,000 employees
Real User
Enables efficient global data management with impressive low latency
Pros and Cons
  • "It handles large-scale operations efficiently, such as tracking views, logs, or events."
  • "I definitely recommend Microsoft Azure Cosmos DB."
  • "There are some disadvantages as it is costly compared to other NoSQL databases."
  • "There are some disadvantages as it is costly compared to other NoSQL databases. It has a complex pricing model and has a strict partitioning strategy."

What is our primary use case?

I find SQL API suitable. I used it in my last project. Previously, I worked for a client called EPS, which has a product called BOS (brokerage operation support system). There I have used the SQL API.

I have used it in a product called BOS, and we achieved many things with Microsoft Azure Cosmos DB, which helped improve our products efficiently.

How has it helped my organization?

It helps in many ways in my current projects such as brokerage operation, which shifts multiple data in different regions. It helps significantly in storing and retrieving data from different countries for shipping details, shipping ID, and all data records in different countries.

What is most valuable?

Microsoft Azure Cosmos DB is a fully managed globally distributed NoSQL database. It is highly available with low latency and scalability. It supports multiple data models and APIs, making it flexible for different applications. Its features include multi-model support, global distribution, automatic scaling, and support for multiple APIs such as SQL API, MongoDB API, Gremlin, and Cassandra.

We can use Microsoft Azure Cosmos DB for storing and managing all types of data manipulations including inserting, fetching, and updating records. These operations can be performed efficiently.

The storage in Microsoft Azure Cosmos DB is globally distributed and highly efficient. Storing and retrieving data is much faster and more efficient.

It is cloud-friendly and easy to use. We can easily insert data and retrieve information from this cloud platform. The UI is better, faster, and efficient.

It supports various types of APIs and is a fully managed, globally distributed database that helps in different regions. Microsoft Azure Cosmos DB is a distributed and multi-model NoSQL database that supports SQL, MongoDB, and other platforms. Its scaling is managed using the request per unit, and it has auto-scaling based on business requirements.

The features include support for multiple NoSQL data models such as documents in JSON format, key-value store, graph database, wide column store, and MongoDB compatibility. In the document model, we can use the SQL API, while in the key-value store, we can use the table API. The Graph database is used for Gremlin.

It has a large capacity of up to 12 GB per physical partition per container. I have used up to three to four GB.

Its latency is high and impressive. The support is very high, with read-write latency at 10 ms per second.

It handles large-scale operations efficiently, such as tracking views, logs, or events. It has high write throughput and handles partition issues and storage growth effectively.

What needs improvement?

There are some disadvantages as it is costly compared to other NoSQL databases. It has a complex pricing model and has a strict partitioning strategy. There are limited SQL query capabilities in Microsoft Azure Cosmos DB.

It is more expensive than other server cloud service providers with its request units pricing model.

For how long have I used the solution?

I have one year of working experience with Microsoft Azure Cosmos DB in my current organization.

What do I think about the scalability of the solution?

The solution scales very well.

How are customer service and support?

I'm not sure about technical support. I haven't worked with them. 

Which solution did I use previously and why did I switch?

Before Microsoft Azure Cosmos DB, I used SSMS and MySQL server management. For cloud solutions, I have only used Microsoft Azure Cosmos DB.

How was the initial setup?

Initially, we logged into the Azure portal and create a new Microsoft Azure Cosmos DB account. Then we chose an API such as SQL API or MongoDB. We set up account details, subscription, region, and enable geographical replication and multi-write regions. After that, we created a database and specify the name and provisional throughput. Then we created a container inside, providing the container ID, partition key, and index policy.

It took around 15 to 20 days for full-fledged training.

Initially, it took approximately three months to get comfortable for learning purposes. I encountered some difficulties while learning, however, through the project, I learned many things.

It's fully cloud-based, so there is no maintenance.

What about the implementation team?

We have six developers for deployment and related tasks in Microsoft Azure Cosmos DB.

Which other solutions did I evaluate?

AWS is another choice available. I find Microsoft Azure Cosmos DB better suited for my needs.

Microsoft Azure Cosmos DB and AWS DynamoDB are basically the same, however, Microsoft Azure Cosmos DB supports multi-region support and can replicate and auto-replicate the data. It is highly manageable, which is why I chose Microsoft Azure Cosmos DB.

What other advice do I have?

I definitely recommend Microsoft Azure Cosmos DB. It handles large amounts of data, is highly reliable, and operates in a very fast and efficient way. Users can deploy their applications in the cloud, and it supports various APIs. On a scale of one to ten, I rate Microsoft Azure Cosmos DB a nine out of ten.

Which deployment model are you using for this solution?

Public Cloud
Disclosure: I am a real user, and this review is based on my own experience and opinions.
Flag as inappropriate
PeerSpot user