【问题标题】:How does AWS DynamoDB provisioned capacity pricing model work?AWS DynamoDB 预置容量定价模型如何工作?
【发布时间】:2020-09-03 17:57:50
【问题描述】:

在阅读了 AWS 文档和其他类似问题的答案后,DynamoDB 预置容量模型定价对我来说仍然有些不清楚。

如 AWS 文档中所述:“您需要为您在 Amazon DynamoDB 表中预置的吞吐量(读取和写入)容量付费,即使您没有充分利用预置的容量。DynamoDB 表的实际读取和写入性能可能会有所不同,并且可能低于您预置的吞吐量容量。"

根据this answer 的最后一部分关于类似问题之一的内容:“最后,使用 Dynamo,您为预留的容量付费,而不是为消耗的容量付费。因此只要您的桌子没有受到限制,即使您稍微超出预置容量(Dynamo 在某些情况下允许),您也不会被收取额外费用。”。

但是,我没有找到一个简单的解释,说明如何根据可能超过为表设置的当前读/写容量单位值的数据读/写速率定价,或者如果表读/写操作受到限制会发生什么要求。如果我创建一个表并将读取容量单位和写入容量单位都设置为 5,并且禁用了自动扩展功能,那么 DynamoDB 服务在所有情况下的费用是否都按以下公式计算?

charges = (provisioned RCU * Hours used + provisioned WCU * Hours used) + Storage costs

这意味着,无论 RCU/s 和 WCU/s 的使用情况和限制如何。

一个例子:根据我的理解 Scan 请求将返回上述表中包含的所有项目,例如,80 个项目将超过预置吞吐量(每个项目的大小小于 4 KB,所有项目的总大小表中的项目大约 160 KB),因此在请求被限制的情况下获取数据(160 KB /(5 个读取容量单位 * 4 KB))大约需要 8 秒,或者 DynamoDB 将允许突发容量消耗和处理扫描速度有点快。

但在这两种情况下,该请求都会因预置读取容量过度使用而额外收费,因为预置容量基本上是一种限制读/写操作速率的方法。这个假设正确吗?还是表节流是收取额外费用的主题?那么有什么方法可以强制数据读/写速率限制呢?

【问题讨论】:

    标签: amazon-web-services amazon-dynamodb dynamodb-queries


    【解决方案1】:

    您可以在this AWS re:invent 2018 talk 中找到关于如何实施 DynamoDB 的预置定价(以及许多其他有趣的内容)的非常好的演示文稿。

    简短的回答是,如果您使用预置定价(并禁用自动缩放),您将支付完全您预置的费用(加上其他费用,如磁盘和网络) - 不多也不少。亚马逊会限制您,因此您(平均而言)无法获得超过您支付的请求率。亚马逊还将努力(如上述谈话中所述)确保您得到的少于低于您所支付的费用(谈话解释了为什么这不容易实现,并在过去的用户确实抱怨过)。即使您确实设法每秒获得比您预置的更多的请求,也不会向您收取额外费用。亚马逊只会记住它为您提供的服务更多,而您在接下来的几秒钟内收到的请求可能会减少。

    亚马逊有几种方法可以限制你:它可以延迟请求,它可以通过ProvisionedThroughputExceededException 使请求失败,它可以从Scan 返回更少的项目,或者它可以返回一个部分 批处理操作成功,例如BatchGetItem。在所有这些情况下,您的客户端库都会帮助您并在以后自动完成请求,并采用指数退避。

    您提到了自动缩放作为您未使用的选项。但是您可能仍然有兴趣了解它的作用。由于可随时更改预置容量,自动缩放可帮助您选择适合当前需求的预置容量,方法是在接近限制时增加预置容量,或在远离限制时降低预置容量。 This blog post 是对如何结合自动扩展、预留容量(您承诺提供一整年的一些预置容量)和按需的有趣研究> 容量(您根本不需要配置),以获得他们声称的更好的价格。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-02-09
      • 2017-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-21
      • 1970-01-01
      相关资源
      最近更新 更多