Azure pricing frequently puzzles me. “What parameters affect the pricing?”, “This is a cheap amount, is that real?”, “What can I expect as ‘normal’ use?” etc.
In the (not only interesting for the pricing subject) presentation from Pascal Naber at the TechDays 2017 (in Dutch) I saw an excellent slide about Azure Cosmos DB pricing:
What you can see the Cosmos DB pricing consists of 2 parts:
The first one is the size of your storage (in GB), is in the right column and probably makes most sense.
The second, in the left column, is the pricing for the number of RU’s per second you reserve ahead of time. And this needs more clarification.
A ‘RU’ means a ‘request unit’ and Microsoft calls defines it as “the measure of throughput in Azure Cosmos DB” (at the end of this article you will find a more verbose definition).
Now this is quite an abstract term: “a measure of throughput”, and that’s the reason I found this slide so valuable: it has some examples.
So here you can see a 1KB read is 1 RU, a 1KB write is 5 RU and a ‘select group by’ is 70 RU.
The numbers higher than one are probably estimates and will depend on request and response size but at least it gives you something to start with.
This slide is from October 2017 so the exact numbers and prices will probably vary with the time you read this.
The more verbose description of the RU by Microsoft:
A request unit (RU) is the measure of throughput in Azure Cosmos DB. A 1-RU throughput corresponds to the throughput of the GET of a 1-KB document. Every operation in Azure Cosmos DB, including reads, writes, SQL queries, and stored procedure executions, has a deterministic RU value that’s based on the throughput required to complete the operation. Instead of thinking about CPU, IO, and memory and how they each affect your application throughput, you can think in terms of a single RU measure.