Confusion in Eventually Consitence read


I have read in the official documentation that:
1 Read capacity unit = 
1 Strongly consistent read of 4kb per second
2 Eventually Consistent read of 4kb per second

Please check my attached question:
Here, it is mentioned in the explanation of answer that "Eventually consistent reads require half the throughput". This doesn't make any sense to me. 

Also, I am confused on last part of the question: How much read capacity throughput should they provision? Is it asking for strongly consistent read or eventually consistent read to return? What should I assume if it is not specified?

Thanks. Any help is appreciated.

  • post-author-pic
    Adrian C

    This is a really interesting question :) so the default on DDB is eventually consistent, you have to explicitly say you want strongly consistency.

    If you are asked a question and it DOESNT state a requirement ... then I always default to assuming the worst case - strong consistency. 

    The question states an average data size of 10KB ( for reads, this is 2.5 units of read ... 2.5 RCU, but we always have to round up, so 3RCU) - this assumes strong consistency (which is what RCU is based on). Based on 100 reads per second as a requirement this means you need 300 RCU (assuming strong consistency).

    It specifies eventual ... so you can half that to be 150.

    I always do the calculations starting with strongly consistent reads... because you cant allocate partial RCU ..

    1 RCU = 4KB worth of strongly consistent reads. 
    1 RCU = 8KB worth of eventual consistent reads.

    Calculate the requirement using strongly consistent, and then half if for the RCU required for eventual consistency.

    You could for example say that

    0.5 RCU = 4KB of eventual consistent reads ... that works for calculations too. But you always need to round up to whole numbers for RCU .. so remember that at the end.

  • post-author-pic

    @Adrian Thanks a lot for the detailed explanation. I have a follow-up question:

    You mentioned that  "Based on 100 reads per second as a requirement this means you need 300 RCU (assuming strong consistency)."

    So, Now in order to convert strong consistent to eventual consistent, shouldn't we multiply it by 2? Since strong consistency is 300 RCU, won't the eventual consistency be 600 RCU (300x2).

    From whatever I have read, I concluded "in order to calculate eventually consistent reads I should double the throughput of Strongly consistent reads". Is that not right?

    Any help is appreciated. Thanks

Looking For Team Training?

Learn More