当前位置: 首页 > 知识库问答 >
问题:

AWS DynamoDB提供容量定价模型是如何工作的?

杜浩壤
2023-03-14

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

正如AWS文档中所述:“即使您没有充分利用所提供的容量,您也将为您在Amazon DynamoDB表中提供的吞吐能力(读写)付费。DynamoDB表的实际读写性能可能会有所不同,并且可能低于您提供的吞吐能力。”

因此,对于类似问题之一的回答的最后一部分:“最后,使用迪纳摩,你为你保留的容量付费,而不是你消耗的容量。因此,只要你的桌子没有被节流,即使你稍微超过了供应的容量(迪纳摩在某些情况下允许),你也不会被额外收费。”

然而,我在任何地方都找不到一个简单的解释,说明如何基于数据读/写速率来定价,而数据读/写速率可能超过为表设置的当前读/写容量单元值,或者如果根据请求限制表读/写操作会发生什么。如果我创建了一个表,并将读容量单位和写容量单位都设置为5,同时禁用了自动伸缩功能,那么在所有情况下,DynamoDB服务的费用都将通过以下公式计算吗?

费用=(供应RCU*使用小时数+供应WCU*使用小时数)+存储成本

例如:根据我的理解,scan请求返回前面提到的表中的所有项(例如包含80个项)将超过规定的吞吐量(每个项的大小小于4 KB,表中所有项的总大小约为160 KB),因此在请求被限制的情况下获取数据(160 KB/(5个读取容量单位*4 KB)),或者DynamoDB将考虑突发容量消耗并以更快的速度处理扫描。

但在这两种情况下,该请求都将被额外收取额外的费用,因为供应的读容量基本上是一种限制读/写操作速率的方法。那个假设正确吗?还是桌子节流是一个额外收费的主题?那么有什么方法来强制数据读/写速率限制呢?

共有1个答案

陈昂熙
2023-03-14

在AWS Re:Invent2018的演讲中,您可以找到一个关于Dynamodb提供的定价是如何实现的非常好的演示(以及许多其他有趣的东西)。

简单的回答是,如果您使用了提供的定价(并禁用自动伸缩),您将支付您提供的价格(加上其他费用,如磁盘和网络)--不多也不少。亚马逊会限制你,这样你就不能获得(平均)超过你付费的请求率。亚马逊还将努力(在上面的谈话中描述)确保你得到的不低于你所支付的(谈话解释了为什么这不容易实现,过去用户确实对此抱怨)。即使你每秒收到的请求比你准备的要多,你也不会额外收费。Amazon只会记住它为您提供了更多服务,在接下来的几秒钟内,您可能会得到更少的请求。

Amazon有几种方法可以限制您:它可以延迟请求,它可以通过ProvisionedthroughputExprocedException失败请求,它可以从扫描返回较少的项,或者它可以从批处理操作(如BatchGetItem)返回部分成功。在所有这些情况下,您的客户机库将帮助您,并在以后自动完成请求,并以指数级退避。

您提到自动缩放是您没有使用的选项。但你可能仍然有兴趣了解它的作用。由于供应容量可以随时更改,自动伸缩可以帮助您为当前需求选择正确的供应容量,在接近极限时增加供应容量,或者在远离极限时降低供应容量。这篇博客文章有趣地探讨了如何将自动伸缩、保留容量(在这里,您promise一整年的预留容量)和按需容量(在这里,您根本不需要预留容量)结合起来,以获得他们声称的更好的价格。

 类似资料:
  • 问题内容: 虽然我确实了解泛型的一些特殊情况,但以下示例缺少一些内容。 我有以下课程 第4行给我错误 显然,编译器认为差异实际上并不相等。虽然我的直觉告诉我,这是正确的。 谁能提供一个示例,如果第4行合法,我会遇到运行时错误? 编辑: 为避免混淆,我将第3行中的in 替换为一个具体的作业 问题答案: 正如肯尼(Kenny)在评论中指出的那样,您可以通过以下方法解决此问题: 这立即告诉我们,该操作并

  • 更新:下面是显示如何获取访问令牌的代码。我还在这里使用免费的测试api(不需要信用卡)。 测试的第一个api调用。应用程序编程接口。阿马迪斯。显示com/v2/shopping/flight优惠。 这是我不知道如何格式化test.api.amadeus.com/v1/shopping/flight-offers/pricingapi的第二个api调用。 我的问题仍然是,使用R调用第二个API的正确

  • 我想通过以下方式使用GSON. fromJSON: 但我在第二行遇到编译错误。如何推断以下行的返回类型?我知道在上述情况下,它将是Abc类型的。但我想根据类型变量中指定的内容使其成为动态的。我该怎么做?

  • 我正在与以下代码进行斗争:https://github.com/thebignet/swagger-codegen-gradle-plugin-example 尝试使用Swagger codegen和Gradle构建一个REST客户端。我是Gradle的新手,看这个例子很困惑,因为有多个变量/属性/名称,我不知道它们来自哪里或它们做什么。尤其是这一部分: 大摇大摆。输出--这是从哪里来的?

  • 问题内容: 我真的很难理解Django的内容类型的概念。感觉非常骇人听闻,并且最终与Python趋向于做事相反。话虽如此,如果我要使用Django,则必须在框架范围内进行工作。 因此,我来​​这里想知道是否有人可以给出有关内容类型如何工作以及如何实现的实际示例。我评论过的几乎所有教程(大部分在博客上)都无法真正涵盖这个概念。他们似乎从Django文档遗漏的地方接手(似乎无处可去)。 问题答案: 因

  • 我试图在Pytorch中实现seq2seq模型,我对批处理有一些问题。例如,我有一批数据,其尺寸是 [batch_sizesequence_lengthsencoding_dimension] 其中,批次中每个示例的序列长度不同。 现在,我通过将批处理中的每个元素填充到最长序列的长度来完成编码部分。 通过这种方式,如果我向我的网络输入一个与上述形状相同的批次,我会得到以下输出: 输出,形状 隐藏状