Azure CosmosDB is too expensive for small but multiple collections
Currently using on-prem MongoDB (on Linux) and wish to move to Azure, but I find CosmosDB is too expensive for small but multiple (MongoDB)collections because it seems that a minimum of 400 RRU's/per second will be charged for each collection.
The terminology used on the pricing web pages is somewhat unclear though and I am not sure if the pricing for the minimum of 400 RRU's/second applies to partitions or collection (or if these terms are in fact identical semantically)
Cosmos DB supports sharing throughput across multiple collections with database-level throughput. This costs approximately $24/month.
Thank you for your feedback on this item. Will be closing this item at this time.
Jojo Diawuo-Appiah commented
It is safe to say that Cosmos DB is for single table stores that need a lot of read/writes and processing and not to be designed like traditional databases?
Jarle: Most people want to separate their data and are used to tables or mongo collections. What they don't get is there is not the same concept in CosmosDB. The Collection is the whole database. All separation must be handled by your program logic. While I have accepted this I do wish there were Sub-Collections to separate my data at an API level not the query/business logic level.
Jarle Nygård commented
The minimum price as of today is about USD 23 pr month, hourly billing. That's not excessive if you ask me...
The current pricing model implements a pay for not using model. The collections should share the RUs assigned. The current pricing model doesn't fit with the needs of many software (not critical) development projects.
Daniel Droke commented
It would be nice if we had the option of specifying max performance (and potentially storage) for the database or resource set rather than the individual collection, similar to how Elastic Database pools work. This way we aren't penalized for low usage collections, but would never be able to exceed the performance tier we are paying for.
Thomas Cooper commented
The execs should give away say 10gb & 500RUs per class for free across the board whilst they sort it out. Clearly this has been ongoing for 9 months judging by the comments.
Thomas Cooper commented
This is crackers. I've just blown through £120 in 2 days for a DB that sat on an MLAB sandbox & would be more than happy on one of their $15/month shared plans.
I've asked Azure for a refund as their pricing model is completely opaque for this service.
I think most people can't wrap their head around the pricing model of pay per collection. People want to separate their data without added costs. When is a Sub Collections feature coming?
Isaac Abraham commented
Chris - to be fair DynamoDB and Cosmos are both very different services with different feature sets. Probably Azure Table Storage is a closer match to Dynamo than Cosmos, with a similar pricing model. Whilst I agree that Cosmos is very expensive compared to Dynamo, it's most likely not a good fit for your needs as if you're happily using Dynamo now, you might not need the extra features of Cosmos.
Yep, just hit the exact scenario everyone here has experienced... Astonishing... I was comparing Azure Functions and CosmosDB to AWS Lambda and DynamoDB and THERE'S NO WAY I'm leaving AWS for Azure... Guess MS is now the IBM of the industry and only caters to corporate shops that literally throw money away.... Perhaps if Cosmos was substantially better than Dynamo, then *maybe* it would be worth it. But, honestly anyone else reading this and trying to consider AWS vs Azure, don't even waste your time. The industry has adopted a "pay for what you use" model, that's the standard model for cloud now and apparently MS doesn't care... Like everyone else on this thread, I had little or no data in my collections during my POC testing and ran only a handful (less than 50 requests TOTAL) during my dev/test process and I was billed over $150 for the past two weeks. So, I'm closing this free trial and never looking back.
And to another commenter's point about their "pay for what you use" advertising, that's in fact fraudulent.... Simple untrue. Of course, their legal team would say "you're RESERVING AND THEREBY USING our resources". And yet, I personally am not storing ANY data or making ANY requests and still being charged... I mean, MS... Stick to your fat corporate customers that are locked into SharePoint and .Net and gouge them for millions / year b/c they're simply too lazy, too stupid or can't overcome the inertia of having a large SP portal or .Net app that they THINK they can't run anywhere else... But, look you can run .Net Core AWS Lambda apps so even most of those criteria for locking in legacy customers are going to be eliminated soon. Ah well, gave it a test run but no thanks, sadly so...
There's simply no way around the model of hosting some services on AWS and the rest on our own hardware if you're building a new app / startup. That continues to be the best possible deployment and I was hoping at least another major cloud provider would compete with AWS... But, MS is catering strictly to their corporate accounts.... FYI in case you're considering deploying a new app...
I have come to the conclusion that CosmosDB is catering to the very large datasets that want fast query times. The smaller projects that don't need the scale are not important to them. They forget that once you go to a Document Database you never want to use SQL server tables and rows with schema again. There is a large audience for small hosted document databases that CosmosDB is not catering to.
The standard response to save money is to put everything into one Collection. So I do something like this so I can query document types and different company's all in the same collection
public class TDocument : Resource
public string _type => this.GetType().Name;
public string _companyId => ...
Dave Childs commented
Agreed. I was shocked at the hit my MSDN credits took for two very simple dev/test databases.
Long Le commented
Same issue here...
We cannot migrate our current application in MongoDB to CosmosDB because this pricing schema.
Agreed, I've been testing out Cosmos DB is too expensive, much much expensive...
DocumentDB has been promising something like sub-collections to match tables or mongo collections for a while. Every time they announce a new protocol I feel they are going too wide before they flush out all the needed features.
Just made a few collections in CosmosDB (5 to be exact) and I chewed through my VS Enterprise credits in a week. Extrapolating this cost over the 40 collections we have makes this service completely unusable as a MongoDB substitute. We unfortunately will need to use MongoDB Atlas as the pricing is more sane.
Agreed, I've been testing out Cosmos DB and I thought I'd hit a bug as a trivial test Database containing 3kb of data burnt through £100 of credit in just a few days. I filed a bug report even as I've used many cloud services before but never had this kind of issue previously.
Charging a significant amount of money per collection, even when you're not using it, seems a very poor deal indeed.
Stéphane CHAN-KAM commented
I have to agree with all the previous comments... I was pretty excited to use CosmoDB, but when I realized that the minimum was 400RU per collection, which would be around 25 USD / month, it's a shame. I have 8 collections and I am not going to change my code to put all of my documents into one. I will just use a VPS with a mongoDB instance running on it, will be much cheaper for my current usage. Microsoft, please do something. We love your products, Azure is nice, but right now only companies with huge projects can afford and get a benefit from using Cosmo DB. It should be as mentioned in the offer, a Pay-as-you-go option, then it will be fair...
Paul Stanley commented
What are MS thinking sillyness!!!