gpt4 book ai didi

amazon-dynamodb - Dynamodb 读写单元

转载 作者:行者123 更新时间:2023-12-03 09:11:45 26 4
gpt4 key购买 nike

我一直在阅读有关 Amazon DynamoDB 的各种文章,但我仍然对如何使用这些读/写单元感到有些困惑。例如,使用免费版本,我每秒有 5 个写入单位和 10 个读取单位可用,每个单位代表 1kb 的数据。但这究竟意味着什么?

这是否意味着每秒最多可以执行 10 个读取请求或每秒最多可以请求 10kb 的数据(无论是 10 个还是 100 个请求)?因为这方面我不清楚。因此,如果我有 20 个用户同时访问我网站上的一个页面(这会导致执行 20 个查询来检索数据),会发生什么?他们中的 10 个会立即看到数据,而另外 10 个会在 1 秒后看到吗?或者如果请求的数据(乘以 20)小于 10kb,他们会立即看到数据吗?

另外,如果读取单位不够,100个用户每个并发请求1kb的数据,是不是所有的请求都需要10秒才能完成??

此外,定价有点令人困惑,因为我不明白这些价格是为预订的还是消费的单位支付的?例如,他们说价格是“写入吞吐量:每 10 个写入容量单位每小时 0.00735 美元”。这是否意味着即使一天内没有提出书面请求,人们也会支付($0.00735*24=$0.176)?

最佳答案

您是正确的,因为容量与正在读取/写入的对象的大小紧密相关。

2016 年 2 月更新

AWS 更新了他们计算吞吐量的方式,并且他们的计算对象已从 1 KB 增加到 4 KB。下面的讨论仍然有效,但现在某些计算有所不同。

有关如何计算吞吐量的最新信息和示例,请始终查阅最新的 DynamoDB 文档。

较旧的文档

来自 AWS DynamoDB 文档(截至 2014 年 1 月 8 日):

Units of Capacity required for writes = Number of item writes per second x item size (rounded up to the nearest KB)

Units of Capacity required for reads* = Number of item reads per second x item size (rounded up to the nearest KB)

  • If you use eventually consistent reads you’ll get twice the throughput in terms of reads per second.


根据您的示例问题,如果您想每秒读取 10KB 的数据,则需要配置 10 个读取单元。无论是对 1 KB 数据发出 10 次请求,还是对 10 KB 数据发出单个请求,都没有关系。您的速度限制为 10KB/秒。

Note that the required number of units of Read Capacity is determined by the number of items being read per second, not the number of API calls. For example, if you need to read 500 items per second from your table, and if your items are 1KB or less, then you need 500 units of Read Capacity. It doesn’t matter if you do 500 individual GetItem calls or 50 BatchGetItem calls that each return 10 items.



对于您的 20 个用户示例,请记住,数据将四舍五入到最接近的 KB。因此,即使您的 20 个用户请求 0.5 KB 的数据,您也需要 20 个读取单元来同时为所有用户提供服务。如果您只有 10 个读取单元,则其他 10 个请求将受到限制。如果您使用 Amazon DynamoDB 库,它们会内置自动重试逻辑以再次尝试请求,因此它们最终应该得到服务。

对于您关于 100 个用户的问题,其中一些请求可能会受到限制,重试逻辑最终可能会失败(代码只会在停止尝试之前重试请求多次) - 因此您需要准备好处理那些 400 响应来自 DynamoDB 的代码并做出相应的 react 。 在您使用 DynamoDB 时监控您的应用程序并确保您不会受到应用程序关键事务的限制,这一点非常重要。

您关于定价的最后一个问题 - 您按小时支付预订费用。如果您保留了 1000 个阅读单位而您的网站绝对没有流量,那太糟糕了,您仍然需要为这 1000 个阅读单位按小时付费。

为了完整性 - 请记住,吞吐量是按表提供的。因此,如果您有 3 个 DynamoDB 表:Users、Photos、Friends,那么您必须为每个表预置容量,并且您需要确定什么适合每个表。在这个简单的例子中,可能照片在您的应用程序中的访问频率较低,因此与您的用户表相比,您可以提供较低的吞吐量。

最终一致的读取非常适合节省成本,但您的应用程序必须设计为可以处理它。最终一致性读取意味着如果您更新数据并立即尝试读取新值,您可能无法取回新值,它可能仍会返回先前的值。最终,如果有足够的时间,您将获得新值。您支付的费用较少,因为您不能保证读取最新数据 - 但如果您设计得当,那也可以。

关于amazon-dynamodb - Dynamodb 读写单元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20999465/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com