【问题标题】:how do I figure out provisional throughput for AWS DynamoDB table?如何计算 AWS DynamoDB 表的临时吞吐量?
【发布时间】:2012-10-04 14:07:26
【问题描述】:

我的系统应该每天将大量数据写入 DynamoDB 表。这些写入是突发的,即在每天的特定时间,几个不同的进程必须将它们的输出数据转储到同一个表中。只要在下一次转储发生之前写入所有日常数据,写入速度并不重要。我需要找出计算餐桌临时容量的正确方法。

因此,为简单起见,我们假设我只有一个进程每天写入一次数据,并且它必须将最多 X 个项目写入表中(每个项目 X / 24 / 3600 writes/second?

谢谢

【问题讨论】:

    标签: database amazon-web-services amazon-dynamodb throughput


    【解决方案1】:

    预置容量以写入/秒为单位。您需要确保可以处理预期的峰值写入次数/秒,而不是一天的平均值。因此,如果您有一个每天运行一次的进程并在 Z 秒内进行 X 次写入、Y 大小(以 KB 为单位,向上取整),那么您的公式将是

    capacity = (X * Y) / Z
    

    因此,假设您在 100 秒内有 100K 写入,并且每次写入

    请注意,为了最大限度地减少预置写入容量需求,最好以更连续的方式将数据添加到系统中,以减少必要读取/写入容量的峰值。

    【讨论】:

    • 谢谢。我能以某种方式确保我永远不会超过预置容量吗?换句话说,不是依靠 AWS 来限制我的写入,而是像 boto 这样的库有能力从我这边控制吗?如果我必须放慢写入速度以保持低于该值,只要我的写入在下一次转储之前结束就可以了。在这种情况下,我可以使用我认为的公式。我绝对没有
    • 我不熟悉 boto 以了解它对限制请求的功能。显然,您的代码中应该有错误处理机制,它会更新数据库以查找从 dynamoDB 返回的错误,以便您可以确定何时发生此类容量问题并可能自己限制您的代码,并重试任何失败的写入/读取。您还可以使用 Cloudwatch 监控您的容量使用情况,以了解何时可能需要调整容量限制。
    • 所有官方开发工具包(包括 boto — 适用于 Python 的 AWS 开发工具包)都依赖该服务来进行限制。 SDK 仅使用指数退避算法响应限制异常。
    猜你喜欢
    • 2018-06-25
    • 1970-01-01
    • 1970-01-01
    • 2016-10-25
    • 1970-01-01
    • 2019-06-03
    • 1970-01-01
    • 1970-01-01
    • 2015-10-25
    相关资源
    最近更新 更多