1
votes

From what i gather, with Amazon DynamoDB you pay for provisioned throughput.

Application1 does more or less consistent rate of writes, data is ideal for key/value store, and doesn't ever read the data back. At the moment its 3 - 5k writes/hour but its bound to increase once we launch.

Application2 reads (from the data written by application1) one hour worth of records every hour, and reads one days worth of records every day. Eventual consistency is acceptable.

So am i right to assume dynamodb isn't well suited for me? As in i would have to provision a high read rate, even if I hit that rate only for few seconds every hour? Is there a way to dump records?

At the moment, i'm using master/slave on mongodb. I use the slave for my batch reads, so that it doesn't effect the master... but id much rather let someone else handle the db infrastructure.

1

1 Answers

3
votes

So am i right to assume dynamodb isn't well suited for me?

Good question - I wouldn't necessarily come to your conclusion, though you'll need to account for the specific cost/performance characteristics indeed, which may or may not outweigh the benefits you are looking for.

As in i would have to provision a high read rate, even if I hit that rate only for few seconds every hour?

That's correct, You pay a flat, hourly rate based on the capacity you reserve (see Pricing) and must provision capacity to the maximum throughput requirements encountered for reading one hour worth of records accordingly in order to avoid being throttled.

In addition you'll need to adjust the provisioned capacity for the daily spike of one days worth of records every day. As usual for AWS there is an API available to do this, but be aware of the related FAQ items, e.g.:

The latter is particularly tough, insofar You can increase your provisioned throughput as often as you want, however You can decrease it once per day only!

Obviously You should review the other available FAQ items related to Provisioned Throughput as well, as there might be more subtleties still.

Given the involved complexities it's probably unavoidable to fully grasp the concept of Provisioned Throughput in Amazon DynamoDB, insofar one must account for it architecture wise in order to achieve the desired results. Calculating the cost and performance details for a particular use case is apparently going to be a non trivial exercise for DynamoDB ;)