Dynamodb – Basic Steps in Calculating RCU and WCU

So there will come a day when you will need to calculate RCU/WCU for Dynamodb tables on AWS.   This will probably come in the form of a word problem like this one…

From A Cloud Guru’s discussion group on a quiz on DynamoDB…

“You have a motion sensor which writes 600 items of data every minute. Each item consists of 5kb.

Your application uses eventually consistent reads. What should you set the read throughput to?”

Ignore the inconsistency of the first use of “writes” and let’s assume that we want reads and that the motion sensor reads 600 items of data every minute.

Here are a few simple steps:

  1. Is this a Read (RCU) or Write (WCU) calculation? –   This matters for two reasons because:
    1. RCUs have a 4kb chunk size per operation
    2. WCUs have a 1kb chunk size per operation.
  2. Calculate the number of items per second  – Why?  Because the RCU and WCU (reads and writes) are provisioned by the second.  In our example, above we take 600 items and divide it by 60 seconds (every minute).   This comes out to 10 items per second are being read per our example. $IpS
  3. Calculate the number of actions per item needed.  – Each item is 5kb and our chunk (or grab) size is 4kb per read unit.  If this was a write then our chunk(or grab) size would be 1kb.   This means in our example of 5kb we need two 4kb operations to read that file.  One operation to grab the first 4kb and then one more to grab the remaining 1kb.   So that means we need 2 actions per item.  $ApI
  4. Multiply Items per Second times Actions per Item ($IpS * $ApI) – So in our example, above we take 10 items per second and multiply it by 2 actions per item.  This tells you that for our read example you need 20 RCUs.
  5. If you are doing reads then you need to know if it is eventually consistent (2 reads per RCU) or strongly consistent (1 read per RCU).
    1. If you are using strongly consistent reads then you are done.  Your answer is 20 RCU’s.
    2. If you are doing eventually consistent reads then you need to take the result of Step 4 and divide it by two.  So in our example 20 RCUs/2 = 10 RCUs needed for our word problem.

This is mainly exam focused so if this is for certification then at present (09/2106) that is what you need to know.   If this is for real throughput calculations then make sure you account for local secondary indexes which “share” RCU/WCU with the table they are indexed against.   You will also need to account for Global Secondary Indexes which are basically a read only copy of a table with its own RCU/WCU.

https://aws.amazon.com/documentation/dynamodb/

Let me know.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.