

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 估算按需容量的 DynamoDB 表成本
<a name="estimate-the-cost-of-a-dynamodb-table-for-on-demand-capacity"></a>

*Moinul Al-Mamun，Amazon Web Services*

## Summary
<a name="estimate-the-cost-of-a-dynamodb-table-for-on-demand-capacity-summary"></a>

[Amazon DynamoDB](https://aws.amazon.com/dynamodb/) 是 NoSQL 事务数据库，即使在 PB 级规模下，也能提供个位数毫秒的延迟。此款 Amazon Web Services (AWS) 无服务器产品因其稳定的性能和可扩展性而越来越受欢迎。 您无需配置基础设施。您的单个表最多可以扩展至 PB 级。

在按需容量模式下，您按请求为应用程序在表上执行的数据读取和写入付费。AWS 的费用基于一个月内累积的读取请求单位 (RRUsWRUs) 和写入请求单位 ()。DynamoDB 会在整个月中持续监控您的表大小，确定您的存储费用。它支持使用 point-in-time-recovery (PITR) 进行连续备份。DynamoDB 会在整个月中持续监控您的启用 PITR 的表大小，确定您的备份费用。

要估算项目的 DynamoDB 成本，计算在产品生命周期的不同阶段将消耗多少 RRU、WRU 和存储非常重要。要进行粗略的成本估算，您可以使用 [AWS](https://calculator.aws/#/createCalculator/DynamoDB) Pricing Calculator RRUs，但您必须提供表的大致数量 WRUs、和存储要求。这些在项目开始时可能很难估计。AWS Pricing Calculator 不考虑数据增长率或项目大小，也不会分别考虑基表和全局二级索引 (GSIs) 的读取和写入次数。要使用 AWS 定价计算器，您必须估算所有这些方面，以假设 WRU、RRU 和存储大小的大致数字，以获得成本估算。

此模式提供了一种机制和可重复使用的 Microsoft Excel 模板来估算按需容量模式的基本 DynamoDB 成本因素，例如写入、读取、存储、备份和恢复成本。它比 AWS 定价计算器更精细，它会独立考虑基表和 GSIs 需求。它还考虑了每月项目数据的增长率，并预测了三年的成本。

## 先决条件和限制
<a name="estimate-the-cost-of-a-dynamodb-table-for-on-demand-capacity-prereqs"></a>

**先决条件**
+ DynamoDB 和 DynamoDB 数据模型设计基础知识
+ [DynamoDB 定价、WRU、RRU、存储以及备份和恢复的基础知识（有关更多信息，请参阅按需容量定价](https://aws.amazon.com/dynamodb/pricing/on-demand/)）
+ 了解 DynamoDB 中的数据、数据模型以及项目大小
+ DynamoDB 知识 GSIs

**限制**
+ 该模板为您提供近似计算，但并非适用于所有配置。要获得更准确的估算值，您必须测量基表中每件商品的单个商品尺寸，然后 GSIs。
+ 为了进行更准确的估计，您必须考虑平均每月每个项目的预期写入（插入、更新和删除）和读取次数。
+ 此模式仅支持根据固定的数据增长假设估算未来几年的写入、读取、存储以及备份和恢复成本。

## 工具
<a name="estimate-the-cost-of-a-dynamodb-table-for-on-demand-capacity-tools"></a>

**Amazon Web Services**
+ [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) 是一项完全托管式 NoSQL 数据库服务，可提供快速、可预测、可扩展的性能。

**其他工具**
+ [AWS 定价计算器](https://calculator.aws/#/createCalculator/DynamoDB)是一款基于 Web 的规划工具，您可用来针对您的 AWS 用例创建估算值。

## 最佳实践
<a name="estimate-the-cost-of-a-dynamodb-table-for-on-demand-capacity-best-practices"></a>

为了帮助降低成本，请考虑以下 DynamoDB 设计最佳实践。
+ [分区键设计](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-partition-key-uniform-load.html) - 使用高基数分区键均匀分配负载。
+ [邻接列表设计模式](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-adjacency-graphs.html) — 使用此设计模式进行 one-to-many管理和 many-to-many关系。
+ [稀疏索引](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-indexes-general-sparse-indexes.html) — 为你使用稀疏索引。 GSIs创建 GSI 时，您可以指定分区键和排序键（可选）。只有基表中包含相应 GSI 分区键的项目才会显示在稀疏索引中。这有助于保持 GSIs 体积更小。
+ [索引过载](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-gsi-overloading.html) - 使用相同的 GSI 为各种类型的项目编制索引。
+ [GSI 写入分片](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-indexes-gsi-sharding.html) - 明智地分片，将数据分布到各个分区，以实现更高效、更快速的查询。
+ [大项目](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-use-s3-too.html) - 仅在表中存储元数据，将 blob 保存在 Amazon S3 中，将引用保留在 DynamoDB 中。将大项目分成多个项目，并使用排序键有效地编制索引。

有关更多设计最佳实践，请参阅 Amazon DynamoDB [Developer Guide](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/best-practices.html)。

## 操作说明
<a name="estimate-the-cost-of-a-dynamodb-table-for-on-demand-capacity-epics"></a>

### 从 DynamoDB 数据模型提取项目信息
<a name="extract-item-information-from-your-dynamodb-data-model"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 获取项目大小。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/estimate-the-cost-of-a-dynamodb-table-for-on-demand-capacity.html) | 数据工程师 | 
| 估算写入成本。 | 要估算按需容量模式下的写入成本，首先必须测量一个月内 WRUs 将消耗多少容量。为此，您要考虑以下因素：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/estimate-the-cost-of-a-dynamodb-table-for-on-demand-capacity.html)有关更多信息，请参阅*其他信息*部分。 | 数据工程师 | 
| 估算读取成本。 | 要估算按需模式下的读取成本，首先必须衡量一个月内 RRUs 将消耗多少费用。为此，您要考虑以下因素： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/estimate-the-cost-of-a-dynamodb-table-for-on-demand-capacity.html) | 数据工程师、应用程序开发人员 | 
| 估算存储大小和成本。 | 首先，根据表中的项目大小估算平均每月存储要求。然后，通过将存储大小乘以您的 AWS 区域的每 GB 存储价格来计算存储成本。 如果您已输入数据来估计写入成本，则无需再次输入数据来计算存储大小。否则，要估计存储大小，您需要考虑以下因素： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/estimate-the-cost-of-a-dynamodb-table-for-on-demand-capacity.html) | 数据工程师 | 

### 在 Excel 模板中输入项目与对象信息
<a name="enter-the-item-and-object-information-in-the-excel-template"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 从“附件”部分下载 Excel 模板，并针对您的用例表进行调整。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/estimate-the-cost-of-a-dynamodb-table-for-on-demand-capacity.html) | 数据工程师 | 
| 在 Excel 模板输入信息。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/estimate-the-cost-of-a-dynamodb-table-for-on-demand-capacity.html)在模板中，存在三个项目或实体：信息、元数据和关系。有两个 GSIs。对于您的用例，如果您需要更多项目，则请创建新行。如果您需要更多 GSIs，请复制现有的 GSI 块，然后粘贴以创建所需数量的 GSI 块。然后调整 SUM 和 TOTAL 列的计算。 | 数据工程师 | 

## 相关资源
<a name="estimate-the-cost-of-a-dynamodb-table-for-on-demand-capacity-resources"></a>

**参考**
+ [按需容量的 Amazon DynamoDB 定价](https://aws.amazon.com/dynamodb/pricing/on-demand/)
+ [适用于 DynamoDB 的 AWS 定价计算器](https://calculator.aws/#/createCalculator/DynamoDB)
+ [使用 DynamoDB 进行设计和架构的最佳实践](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/best-practices.html)
+ [DynamoDB 入门](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GettingStartedDynamoDB.html)

**指南和模式**
+ [使用 Amazon DynamoDB 对数据建模](https://docs.aws.amazon.com/prescriptive-guidance/latest/dynamodb-data-modeling/)
+ [估算 Amazon DynamoDB 表的存储成本](https://apg-library.amazonaws.com/content/9b74399d-9655-47ee-b9b3-de46b65bc4e3)

## 附加信息
<a name="estimate-the-cost-of-a-dynamodb-table-for-on-demand-capacity-additional"></a>

**写成本计算示例**

DynamoDB 数据模型设计显示了一个产品的三个项目，平均项目大小为 4 KB。当您将新产品添加到 DynamoDB 基表时，它会消耗项目数量 \$1（项目大小/1 KB 写入单位）= 3 \$1 (4/1) = 12 WRU。在此示例中，每写入 1 KB 时，产品消耗 1 WRU。 

**读取成本计算示例**

要获得 RRU 估算值，请考虑每个项目在一个月内被读取的平均次数。例如，信息项平均每月被读取 10 次，元数据项平均被读取 2 次，关系项平均被读取 5 次。在示例模板中，所有组件的总 RRU = 每月创建的新组件数量 \$1 每个组件每月的 RRU = 1000 万 \$1 17 RRU = 每月 1.7 亿 RRU = 每月 1.7 亿 RRU。

每个月都会添加新的东西（组件或产品），并且产品总数将随着时间的推移而增长。因此，RRU 要求也会随时间的推移而增长。
+ 第一个月的 RRU，消费量将为 1.7亿。
+ 第二个月的 RRU 消耗量将为 2\$11.7 亿=3.4 亿。
+ 第三个月的RRU消耗量将为 3\$11.7 亿=5.1 亿。

下图显示了每月 RRU 消耗量与成本预测。

![\[RRU 消耗量的增长幅度明显大于成本的增长幅度。\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/images/pattern-img/1797b48f-a183-4f25-811f-44921c3a48ee/images/3505bfc8-694d-4acc-8585-cd71258fa315.png)


请注意：图表中的价格仅供说明之用。要为您的使用案例创建准确的预测，请检查 AWS 定价页面，并在 Excel 工作表中使用这些价格。

**存储、备份以及恢复成本计算示例**

DynamoDB 存储、备份和恢复都是相互连接的。备份与存储直接相关，恢复与备份大小直接相关。随着表大小的增加，相应的存储、备份和恢复成本也会成比例增加。

*存储大小和成本*

根据您的数据增长率，存储成本将随着时间的推移而增加。例如，假设基表中组件或产品的平均大小 GSIs 为 11 KB，并且每月将向数据库表中添加 1000 万个新产品。在这种情况下，DynamoDB 表大小将增长 (11 KB \$1 1000 万) /1024/1024 = 每月 105 GB。在第一个月，您的表存储大小将为 105 GB，第二个月将为 105 \$1 105 = 210 GBs，依此类推。
+ 对于您的 AWS 区域，第一个月存储成本将为每 GB 105 GB \$1 的存储价格。 
+ 第二个月的存储成本将为您所在地区每 GB 210 GB \$1 存储价格。
+ 第三个月，您所在地区存储成本将为每 GB 315 GB \$1 的存储价格。

有关未来三年的存储大小和成本，请参阅*存储大小和预测*部分。

*备份成本*

根据您的数据增长率，备份成本将随着时间的推移而增加。使用 point-in-time-recovery (PITR) 开启连续备份时，持续备份费用基于每月平均存储 GB。在一个日历月中，平均备份大小将与表存储大小相同，尽管实际大小可能略有不同。因每个月都会添加新产品，因此总存储大小和备份大小将随着时间的推移而增长。例如，在第一个月，105 GB 的平均备份大小可能会在第二个月增长至 210 GB。
+ 对于您的 AWS 区域，第一个月的备份费用将为每 GB 105 GB \$1 连续备份价格。 
+ 第二个月的备份费用将为您所在地区的每月 210 GB\$1每 GB 的连续备份价格。
+ 第三个月的备份成本将为每月 315 GB \$1 您所在区域的每 GB 连续备份价格。
+ 等等

备份成本包含在*存储大小和成本预测*部分的图表中。

*恢复成本*

当您在启用 PITR 的情况下进行连续备份时，恢复操作费用将根据恢复的大小而定。每次还原时，您都要根据恢复的数据量 (GB) 付费。如果您的表很大，并且一个月内执行多次恢复，那么成本会很高。

为了估算恢复成本，此示例假设您每月在月底执行一次 PITR 恢复。该示例使用每月平均备份大小作为该月的恢复数据大小。第一个月的平均备份大小为 105 GB，月底恢复时，恢复数据大小为 105 GB。第二个月将是 210 GBs，依此类推。

根据您的数据增长率，恢复成本将随着时间的推移而增加。
+ 对于您的 AWS 区域，第一个月的恢复成本为每 GB 105 GB \$1 的恢复价格。 
+ 第二个月，恢复成本将为 210 GB \$1 您所在区域的每 GB 恢复价格。
+ 第三个月，恢复成本将为 315 GB \$1 您所在区域的每 GB 恢复价格。

有关详细信息，请参阅 Excel 模板中的存储、备份和恢复选项卡以及下一节中的图表。

*存储大小和成本预测*

在模板中，实际计费存储大小是通过减去标准表类每月 25 GB 的免费套餐来计算的。在该表中，您将获得一个分为每月值的预测图表。

以下示例图表预测了未来 36 个日历月的每月存储大小（以 GB 为单位）、计费存储成本、按需备份成本和恢复成本。所有费用以美元表示。从图中可以清楚地看出，存储、备份和恢复成本随着存储大小的增加而成比例增加。

![\[存储大小增加到三千以上，而成本却不到一千。\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/images/pattern-img/1797b48f-a183-4f25-811f-44921c3a48ee/images/fd9f06d0-bc9c-4b4e-8cbd-3e527fe09e88.png)


请注意，图表中所用的价格仅用于说明目的。要为您的用例创建准确的价格，请查看 AWS 定价页面，然后在 Excel 模板使用这些价格。

## 附件
<a name="attachments-1797b48f-a183-4f25-811f-44921c3a48ee"></a>

要访问与此文档相关联的其他内容，请解压以下文件：[attachment.zip](samples/p-attach/1797b48f-a183-4f25-811f-44921c3a48ee/attachments/attachment.zip)