Senior Director of Engineering at a non-tech company with 51-200 employees
Real User
Top 20
2024-10-22T19:12:00Z
Oct 22, 2024
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.
We encountered an issue with Cosmos DB's recently introduced hierarchical partition feature. After enabling it, we discovered that the web-based Cosmos Explorer tool sometimes fails when hierarchical partitioning is disabled. Although it usually works, we occasionally encountered situations where we couldn't query and manually inspect data in the Cosmos Data Explorer within Azure. We believe this is a significant issue and anticipate a fix will be released soon, although it may already be resolved.
Microsoft Azure Cosmos DB can be improved by providing more fine-grained control over certain aspects, such as connections and threads. There could be more control over how many connections are made. I am not sure if it is a knowledge gap issue. A regular connection with the Azure Cosmos DB team might help in addressing knowledge gaps. Being able to fine-tune these features would be helpful for us.
There should be parity between the various APIs. I often work with the Mongo API, and features for it sometimes lag substantially behind the core API, such as the Analytical Store feature. Additionally, I am waiting for the full fidelity change feed that would surface all changes, including deletes to documents. While Microsoft Azure Cosmos DB is generally easy to use, it has some limitations. Certain areas are more restrictive, and we are awaiting features that will simplify development. For example, currently under development, the full fidelity change feed will expose all document changes, enabling tasks like synchronizing collections while accounting for deletions. This is challenging because the existing change feed doesn't provide information about deleted documents.
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.
Azure Cosmos DB could be better for business intelligence and analytical queries. While it excels at high-throughput data ingestion and point reads with low latency, querying within partitions is smooth. Complex cross-partition querying, and BI/analytical tasks often necessitate moving data to other solutions like Fabric and Azure AI Search.
Senior Data Engineer Consultant at a computer software company with 201-500 employees
Consultant
Top 10
2024-03-08T23:36:59Z
Mar 8, 2024
The downside is that Cosmos is new and fairly complex. There's a limited pool of talent who are really good at working with it. Because of that, I've been approached by recruiters quite a bit; they see my Cosmos DB certification on LinkedIn. It's hard to find people to work on Cosmos projects. Sometimes, a really smart developer will design and build a Cosmos implementation and then move on, leaving the company struggling to find someone to work with it and maintain it. Interestingly, if you need to restore a Cosmos DB database, you have to put in a ticket with Microsoft – they're the only ones who can do that.
In terms of improvement, slight enhancements in integration interfaces, expanded dashboard functionalities, and broader use-case support would be beneficial.
It is not as easy to use as DynamoDB. The product always shows JSON-based documents. However, DynamoDB shows a table-based document. The documentation must be improved.
Practice Lead Microsoft Power Platform at a tech services company with 11-50 employees
Real User
Top 10
2023-09-13T09:07:00Z
Sep 13, 2023
Microsoft Azure Cosmos DB's performance could be better. In large volumes of documents, the querying process becomes slow and complicated. It could be faster.
Technical Architect at LTI - Larsen & Toubro Infotech
Real User
Top 5
2023-07-17T10:57:00Z
Jul 17, 2023
I have been a devoted Microsoft fan, but Redis DB's memory caching capabilities are really making progress. Even if Cosmos DB is continuously improving and is quite advanced in the field of internal memory optimization, I would still recommend Redis DB to a customer. My dilemma still lies in the price of both solutions. I believe if Redis DB is superior and pricier than Cosmos DB, customers will be reluctant to use Redis DB. Memory streaming and various optimizations contribute to higher costs but also increased speed. Currently, there's nothing specific I can pinpoint that needs to be added – I haven't made any purchases yet. However, I am inclined to recommend working with it.
Enterprise Integration Architect at a comms service provider with 201-500 employees
Real User
Top 20
2023-06-02T08:43:00Z
Jun 2, 2023
Since we're working in the cloud, it's not easy to incorporate all the features it supports. There is room for improvement in terms of integration with other vendors.
The performance point can be improved because when we run a search query on our on-premises machine and develop connectivity, a response comes in. But sometimes, the response gets delayed, and it can be due to network latency or something else we are yet to figure out. Performance and high availability are two features I want to be added in the next release because that is the basic requirement of customers. Mostly, we have customers with the bank and banking institutions, and they want their databases perfectly integrated with the high availability feature.
One thing that concerns me is the cost, especially for smaller workloads. Cosmos DB is a little more expensive than other database services, particularly if you have tight-traffic models. However, it does have a few advantages, such as being a multi-model database. The biggest problem is the learning curve and other database services like RDS. Additionally, advanced analytics capabilities like real-time analytics and machine learning are not embedded in Cosmos DB. Vendor lock-in is a big concern. Cosmos DB is a proprietary database service offered by Microsoft that might not be compatible with other databases.
There's another feature that we just started implementing, which is partial updates of documents. It doesn't require the entire object to update, but updating documents across applications becomes difficult because you have to pull the entire document, which means you have to support the entire model to update it. So, that application has to know about every single parameter that may or may not have been added because if it reads and writes the document again, you'll lose data elements. An improvement would be a more robust functionality around updating elements on a document, or some type of procedural updates that don't require pulling the entire document. Otherwise, you have to keep all of your apps up to date with the models, and that can be cumbersome and lead to errors. Usually, you don't always remember, and then it leads to some type of bug, but you won't realize why. You'll lose some value because you don't realize that you have some application that doesn't run often. You forget that it writes to that same document and you didn't update the model. It would be nice to have some type of functionality for less common updating applications and to not always have to worry about keeping that model up to date. There's some integration with Entity Framework and it's nice, but it's not robust and it would be good to have something like that when it comes to pulling data. Occasionally, you have to query the database for values because we save our appointments and we don't have an index on appointments. We don't have a manual lookup for appointments, so we don't save it in another file. We have to run a query to get appointments that occur on a specific day and the downside of that is you have to use strings just to hardcode the string values. It would be nice to more easily integrate with a tool like Entity Framework, and I know that they do, but it's not an easy process. It would be nice to have an easier way without relying on text to query the database.
Infrastructure Solutions Architect at a real estate/law firm with 10,001+ employees
Real User
2022-10-11T12:04:14Z
Oct 11, 2022
The UI should be improved since if you provide the option to query directly when signing into the Azure portal, it makes no sense if you have such a poor UI for querying that you can't even feed the reports correctly. It should offer a simple user interface for querying Microsoft Azure Cosmos DB.
I provide architect solutions on top of Azure. A couple of features that would help me in architectural solutions would be customizable architecture or customizable documentation, which both Microsoft Azure and Microsoft Teams can provide. I can easily pick and choose a couple of architecture and merge them. This would be a very helpful feature for me in my role.
There are features that are ADF only or ADB only, so it would be good to see more cross-compatibility between the two. The solution is also more expensive than the alternatives.
At the moment, because I'm still new in terms of using Microsoft Azure Cosmos DB, I don't have any feedback regarding areas for improvement in the product. So far, it has met all the expectations and needs of my company. It would be nice to have more options to ingest the data, for example, more file options or more search options. Currently, you can use JSON, but if there were other file types you can use for data ingestion, that would be nice. This is the additional feature I'd like to see in the next release of Microsoft Azure Cosmos DB.
The API compatibility has room for improvement, particularly integration with MongoDB. You have to connect to a specific flavor of MongoDB. We'd also like a richer query capability in line with the latest Mongo features. That is one thing on our wish list. The current version is good enough for our use case, but it could be improved.
At this stage, we would like more enterprise support. We use MongoDB a lot, and we're trying to get rid of MongoDB. So, I would like to see more features in the Cosmos DB API for MongoDB space.
Better documentation on how to integrate with other components would be helpful because I was struggling with this. For example, I had trouble finding information on how to integrate with other Microsoft components. Also, consider a situation where you want to use Cosmos DB to manage the uploading of data to your website. Information on how to do things like this should be readily available.
Associate Manager at a consultancy with 501-1,000 employees
Real User
2021-03-10T07:32:22Z
Mar 10, 2021
I cannot recall finding any missing features. Everything we need is pretty much there. It would be ideal if we could integrate Cosmos DB with our Databricks. At this point, that's not possible.
Cloud Architect at a manufacturing company with 10,001+ employees
Real User
2020-04-30T10:58:00Z
Apr 30, 2020
The query is a little complex. SQL server should have more options. But the query should be better. The setup takes a bit of time but once it's done, it goes well. Backend developers need a bit of time to do the setup.
Azure Cosmos DB is a fully managed NoSQL and vector database service built for AI-powered apps at any scale. It fuels apps with high-performance, distributed computing over massive volumes of NoSQL and vector data. Developers can start small and pay for only what they use with serverless computing, and enhance the solution seamlessly with unlimited dynamic autoscale, SLA-backed 99.999 percent availability and <10ms latency. Azure Cosmos DB lets developers build applications with...
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.
We encountered an issue with Cosmos DB's recently introduced hierarchical partition feature. After enabling it, we discovered that the web-based Cosmos Explorer tool sometimes fails when hierarchical partitioning is disabled. Although it usually works, we occasionally encountered situations where we couldn't query and manually inspect data in the Cosmos Data Explorer within Azure. We believe this is a significant issue and anticipate a fix will be released soon, although it may already be resolved.
Microsoft Azure Cosmos DB can be improved by providing more fine-grained control over certain aspects, such as connections and threads. There could be more control over how many connections are made. I am not sure if it is a knowledge gap issue. A regular connection with the Azure Cosmos DB team might help in addressing knowledge gaps. Being able to fine-tune these features would be helpful for us.
There should be parity between the various APIs. I often work with the Mongo API, and features for it sometimes lag substantially behind the core API, such as the Analytical Store feature. Additionally, I am waiting for the full fidelity change feed that would surface all changes, including deletes to documents. While Microsoft Azure Cosmos DB is generally easy to use, it has some limitations. Certain areas are more restrictive, and we are awaiting features that will simplify development. For example, currently under development, the full fidelity change feed will expose all document changes, enabling tasks like synchronizing collections while accounting for deletions. This is challenging because the existing change feed doesn't provide information about deleted documents.
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.
Azure Cosmos DB could be better for business intelligence and analytical queries. While it excels at high-throughput data ingestion and point reads with low latency, querying within partitions is smooth. Complex cross-partition querying, and BI/analytical tasks often necessitate moving data to other solutions like Fabric and Azure AI Search.
The downside is that Cosmos is new and fairly complex. There's a limited pool of talent who are really good at working with it. Because of that, I've been approached by recruiters quite a bit; they see my Cosmos DB certification on LinkedIn. It's hard to find people to work on Cosmos projects. Sometimes, a really smart developer will design and build a Cosmos implementation and then move on, leaving the company struggling to find someone to work with it and maintain it. Interestingly, if you need to restore a Cosmos DB database, you have to put in a ticket with Microsoft – they're the only ones who can do that.
There is room for improvement in terms of stability.
In terms of improvement, slight enhancements in integration interfaces, expanded dashboard functionalities, and broader use-case support would be beneficial.
It is not as easy to use as DynamoDB. The product always shows JSON-based documents. However, DynamoDB shows a table-based document. The documentation must be improved.
Sometimes, the solution's access request takes time, which should be improved.
Microsoft Azure Cosmos DB's performance could be better. In large volumes of documents, the querying process becomes slow and complicated. It could be faster.
I have been a devoted Microsoft fan, but Redis DB's memory caching capabilities are really making progress. Even if Cosmos DB is continuously improving and is quite advanced in the field of internal memory optimization, I would still recommend Redis DB to a customer. My dilemma still lies in the price of both solutions. I believe if Redis DB is superior and pricier than Cosmos DB, customers will be reluctant to use Redis DB. Memory streaming and various optimizations contribute to higher costs but also increased speed. Currently, there's nothing specific I can pinpoint that needs to be added – I haven't made any purchases yet. However, I am inclined to recommend working with it.
I would like to see better documentation for this solution. The pricing of the solution should be reduced.
Since we're working in the cloud, it's not easy to incorporate all the features it supports. There is room for improvement in terms of integration with other vendors.
The performance point can be improved because when we run a search query on our on-premises machine and develop connectivity, a response comes in. But sometimes, the response gets delayed, and it can be due to network latency or something else we are yet to figure out. Performance and high availability are two features I want to be added in the next release because that is the basic requirement of customers. Mostly, we have customers with the bank and banking institutions, and they want their databases perfectly integrated with the high availability feature.
One thing that concerns me is the cost, especially for smaller workloads. Cosmos DB is a little more expensive than other database services, particularly if you have tight-traffic models. However, it does have a few advantages, such as being a multi-model database. The biggest problem is the learning curve and other database services like RDS. Additionally, advanced analytics capabilities like real-time analytics and machine learning are not embedded in Cosmos DB. Vendor lock-in is a big concern. Cosmos DB is a proprietary database service offered by Microsoft that might not be compatible with other databases.
There's another feature that we just started implementing, which is partial updates of documents. It doesn't require the entire object to update, but updating documents across applications becomes difficult because you have to pull the entire document, which means you have to support the entire model to update it. So, that application has to know about every single parameter that may or may not have been added because if it reads and writes the document again, you'll lose data elements. An improvement would be a more robust functionality around updating elements on a document, or some type of procedural updates that don't require pulling the entire document. Otherwise, you have to keep all of your apps up to date with the models, and that can be cumbersome and lead to errors. Usually, you don't always remember, and then it leads to some type of bug, but you won't realize why. You'll lose some value because you don't realize that you have some application that doesn't run often. You forget that it writes to that same document and you didn't update the model. It would be nice to have some type of functionality for less common updating applications and to not always have to worry about keeping that model up to date. There's some integration with Entity Framework and it's nice, but it's not robust and it would be good to have something like that when it comes to pulling data. Occasionally, you have to query the database for values because we save our appointments and we don't have an index on appointments. We don't have a manual lookup for appointments, so we don't save it in another file. We have to run a query to get appointments that occur on a specific day and the downside of that is you have to use strings just to hardcode the string values. It would be nice to more easily integrate with a tool like Entity Framework, and I know that they do, but it's not an easy process. It would be nice to have an easier way without relying on text to query the database.
I hope they improve the service. Before last year, improvements on Cosmos DB were very slow. I didn't see many changes in the functionality.
New features can be included and its stability can be further improved.
The UI should be improved since if you provide the option to query directly when signing into the Azure portal, it makes no sense if you have such a poor UI for querying that you can't even feed the reports correctly. It should offer a simple user interface for querying Microsoft Azure Cosmos DB.
I provide architect solutions on top of Azure. A couple of features that would help me in architectural solutions would be customizable architecture or customizable documentation, which both Microsoft Azure and Microsoft Teams can provide. I can easily pick and choose a couple of architecture and merge them. This would be a very helpful feature for me in my role.
There are features that are ADF only or ADB only, so it would be good to see more cross-compatibility between the two. The solution is also more expensive than the alternatives.
At the moment, because I'm still new in terms of using Microsoft Azure Cosmos DB, I don't have any feedback regarding areas for improvement in the product. So far, it has met all the expectations and needs of my company. It would be nice to have more options to ingest the data, for example, more file options or more search options. Currently, you can use JSON, but if there were other file types you can use for data ingestion, that would be nice. This is the additional feature I'd like to see in the next release of Microsoft Azure Cosmos DB.
The API compatibility has room for improvement, particularly integration with MongoDB. You have to connect to a specific flavor of MongoDB. We'd also like a richer query capability in line with the latest Mongo features. That is one thing on our wish list. The current version is good enough for our use case, but it could be improved.
At this stage, we would like more enterprise support. We use MongoDB a lot, and we're trying to get rid of MongoDB. So, I would like to see more features in the Cosmos DB API for MongoDB space.
Better documentation on how to integrate with other components would be helpful because I was struggling with this. For example, I had trouble finding information on how to integrate with other Microsoft components. Also, consider a situation where you want to use Cosmos DB to manage the uploading of data to your website. Information on how to do things like this should be readily available.
I cannot recall finding any missing features. Everything we need is pretty much there. It would be ideal if we could integrate Cosmos DB with our Databricks. At this point, that's not possible.
We should have more freedom to tweak it and make our own queries for non-traditional use-cases.
The query is a little complex. SQL server should have more options. But the query should be better. The setup takes a bit of time but once it's done, it goes well. Backend developers need a bit of time to do the setup.