DynamoDB is a managed NoSQL database. The main selling point is that developers won't experience any operational overheads maintaining it.
Nevertheless, since it's a proprietary database, the architecture is a real blackbox. AWS said that there are numerous differences from the Dynamo paper and every developer should strictly follows their documentations for the best practice.
One of the challeges in their documentation is to calculate and reserve the total numbers of RCUs/WCUs for tables.
Number of read capacity units (RCUs) – how many read requests can you send per second. Number of write capacity units (WCUs) – how many write requests can you send per second.
Requirement: write 5 kb data per second
There are 2 types of RCUs:
Strong consistency model: 1 RCU = 4kb of data / second
Eventual consistency model: 0.5 RCU = 4kb of data / second
Formula of strong consistency: x RCUs = round(item size kb / 4kb)
Formula of eventual consistency: x RCUs = (round(item size kb / 4kb)) / 2
Requirement: write 20 kb data per second
Strong consistency: round( 20 / 4 ) = 5 RCUs
Eventual consistency: ( round(20 / 4) ) / 2 = 2.5 RCUs
Note: In this post, I'm talking about reserved requests (provisioning). However, recently, there is a new pricing model, "On demand", which literally is not what I mean in this context