Hello Everyone.
I’m here to share how disappointed I’m with MongoDB serverless.
They claim to be a cheap ‘pay per use’ model but they decided to charge me $4.31 with no reason. My case is:
I created a sample database just to test the serverless instance. I uploaded around 5 millions records to this database (330Mb of storage).
I’ve sent some queries through compass just to test the database and certify the document would be queried by an index.
100% perfect so far. I might have sent around 20 queries to the database. Not more than this quantity. All of them were using index.
Therefore, MongoDB should charge me something like $0.08 (basically the storage costs). But they’re charging me 54 times more than it should.
What leaves me to conclude: MongoDB serverless is a SCAM. Stay away from it.
I am sorry to hear about your experience. This is not the experience we would want you to have. Can you please send me the URL of your Atlas cluster so that I can take a closer look at what factors are contributing to the cost?
Thank you- one more question, because I don’t have access to anything related to your documents and collections- how many documents did you insert and what was the average document size? Besides inserting documents, did you perform any other write queries (such as updates)?
Apologies, you had already provided that in your initial questions (5 millions records to this database, 330Mb of storage; this puts us at around 66bytes per document).
I took a look at your invoice and saw that $4.23 came from write operations and $0.08 came from read operations. There were no charges from Storage.
Here are a couple of good resources to better understand Serverless pricing (link1, link2). In your case since the writes are what drove your invoice, we will dive deeper into that. We calculate WPUs (write processing units) for every write operation you make to the database. For every 1KB written to a document and its corresponding index, we charge the customer 1 WPU. From link2 (above), we see that 1 Million WPUs are priced between $0.90 and $2.20 depending on the region. Let’s assume the price is $1 per million WPUs. In your case, since each document was less than a kilobyte (66bytes as determined above), each document will cost 1 WPU. Therefore, the cost of 5 million documents is 5 million WPUs which is ~$5. This is in line with the invoice that you see.
Please let me know if you have any questions about how your invoice was calculated. Were the two links something that you had seen before? Did you have an understanding of the write pricing before you tested your workload?
First of all, It worths mentioning that MongoDB Atlas ALREADY SOLVED THE Charging problem, by giving me the credits to cover the bill. Thanks for doing this.
But I would really want to know how exactly they will charge me. So I can understand if it’s good or not for me.
My database has the current stats:
total storage: 370Mb
4.1m documents
1 index
each document size is more or less 90 bytes
The writes were only related to initial load.
I sent some read queries but they were too few (less than 30). And most of them (20 more or less) were sent when the database was almost empty (more or less 20 items).
This is what MongoDB charged me:
0.825 million RPU = $0.08
0.58 million WPU = $0.58
3.647 million WPU = $3.65
As for as I thought I knew it, that WPU should cost $0.37.
My math is:
370Mb of storage = 370Mb of writes = 378880Kb
If I’m charged for 1Kb chunks, then I used 370 chunks.
1 million of writes (chunks of 1kb) = $1.00
Therefore, we have: 370 chunks / 1 million = 0.37. So this should be the total I should pay. Is this not correct? It seems that Atlas charged be by each item that I wrote. I wrote 4.1 million of items and I was chart 4.1 * 1.00.
Also, I don’t know how so few queries could use 825K RPU.
I’m sorry. I was writing when you replied.
Now I understood. The 1kb charge is the minimum. I thought I’d be charged only when the sum of writes were 1kb. I believe the same might happen to the RPU’s.
This solves the problem.
Thank you for your time!
Problem solved.
Just a feedback to Atlas team: The doc should have some examples like this. It would make the thinks clearer to the customers and save your time with supporting us.
For the avoidance of doubt, for reads the billing model is similar, however, we charge you for all the documents scanned and RPUs are measured in 4KB chunks (instead of 1KB chunks in the case of WPUs). The key thing to note that indexing is important for read queries. To give you a simple example, lets say you have a million documents and are doing a FindOne for a unique identifier, without an index the database will scan all documents to return your results, which means it will scan 1 Million documents. However, with an index, the database will not need to scan all of the documents, which will significantly bring down the cost of reads. Therefore, please make sure you index before you write a lot of read queries.
And point noted! We will be sure to include some billing examples in the documentation.