Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
127 views
in Technique[技术] by (71.8m points)

How to calculate Read Capacity Unit and Write Capacity Unit for DynamoDB

How to calculate RCU and WCU with the data given as: reading throughput of 32 GB/s and writing throughput of 16 GB/s.

question from:https://stackoverflow.com/questions/42494900/how-to-calculate-read-capacity-unit-and-write-capacity-unit-for-dynamodb

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

DynamoDB Provisioned Throughput is based upon a certain size of units, and the number of items being written:

In DynamoDB, you specify provisioned throughput requirements in terms of capacity units. Use the following guidelines to determine your provisioned throughput:

  • One read capacity unit represents one strongly consistent read per second, or two eventually consistent reads per second, for items up to 4 KB in size. If you need to read an item that is larger than 4 KB, DynamoDB will need to consume additional read capacity units. The total number of read capacity units required depends on the item size, and whether you want an eventually consistent or strongly consistent read.
  • One write capacity unit represents one write per second for items up to 1 KB in size. If you need to write an item that is larger than 1 KB, DynamoDB will need to consume additional write capacity units. The total number of write capacity units required depends on the item size.

Therefore, when determining your desired capacity, you need to know how many items you wish to read and write per second, and the size of those items.

Rather than seeking a particular GB/s, you should be seeking a given number of items that you wish to read/write per second. That is the functionality that your application would require to meet operational performance.

There are also some DynamoDB limits that would apply, but these can be changed upon request:

  • US East (N. Virginia) Region:
    • Per table – 40,000 read capacity units and 40,000 write capacity units
    • Per account – 80,000 read capacity units and 80,000 write capacity units
  • All Other Regions:
    • Per table – 10,000 read capacity units and 10,000 write capacity units
    • Per account – 20,000 read capacity units and 20,000 write capacity units

At 40,000 read capacity units x 4KB x 2 (eventually consistent) = 320MB/s

If my calculations are correct, your requirements are 100x this amount, so it would appear that DynamoDB is not an appropriate solution for such high throughputs.

Are you speeds correct?

Then comes the question of how you are generating so much data per second. A full-duplex 10GFC fibre runs at 2550MB/s, so you would need multiple fibre connections to transmit such data if it is going into/out of the AWS cloud.

Even 10Gb Ethernet only provides 10Gbit/s, so transferring 32GB would require 28 seconds -- and that's to transmit one second of data!

Bottom line: Your data requirements are super high. Are you sure they are realistic?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...