- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
最近我在使用 DynamoDB 构建一些 API。
在一个名为planet的表中,有一个属性是 map 列表(对象数组)的形式。基本上,属性看起来像这样。我将其称为 buildingMap,因为它是一张包含许多建筑物的 map 。
[
{
id: 'some id',
status: 'processing',
...
},
{
id: 'other id',
status: 'done',
...
}
]
事情是,最初,我指出索引并直接更新数组中的那个对象,就像使用这种 UpdateExpression。
删除 buildingMap[2]
或者这样的 UpdateExpression
SET buildingMap[0].#status = :status
我认为与我将整个 buildingMap 取出、重写并将整个 buildingMap 放回去相比,这将使 DynamoDB 消耗更少的容量。
像这样
// Get the item using DynamoDB.DocumentClient
const planet = await docClient.get({
TableName: 'Planet',
Key: { planetId: 'xxxxx' }
}).promise()
// Modify the buildingMap attribute
let buildingMap = planet.Item.buildingMap
buildingMap.splice(0, 1) // remove the first object in the buildingMap
// Write back the update
await docClient.update({
TableName: 'Planet',
Key: { planetId: 'xxxxx' },
UpdateExpression: 'SET buildingMap = :map',
ExpressionAttributeValues: { ':map': buildingMap }
}).promise()
但是,我为这两种方法打印了ConsumedCapacity,结果完全一样!
谁能帮我回答 DynamoDB 在更新表中的项目时如何真正计算写入容量和读取容量?
我的意思是,如果我只更新列表中的单个 map ,为什么它会消耗与覆盖整个 map 列表相同的容量?
此外,当我选择返回 ALL_NEW
进行更新时,它仍然消耗与我选择返回 UPDATED_NEW
时相同的容量。但我认为选择返回 ALL_NEW
会比 UPDATED_NEW
消耗更多的Read Capacity?
最佳答案
要修改一个项目,DynamoDB 内部需要读取整个项目,对其进行修改并将其写回磁盘,因此您需要为整个项目付费,而不是您修改的一小部分。
此外,DynamoDB 写入比读取昂贵得多,并且它们的价格已经包括所涉及的(强一致性)读取:如果您有条件表达式或任何 ReturnValues 选项,则无需支付额外费用(但请注意,即使条件表达式导致写入未完成,您仍需为此付费)。
以下是官方文档中的一些相关引述:
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ProvisionedThroughput.html
UpdateItem—Modifies a single item in the table. DynamoDB considers the size of the item as it appears before and after the update. The provisioned throughput consumed reflects the larger of these item sizes. Even if you update just a subset of the item's attributes, UpdateItem will still consume the full amount of provisioned throughput (the larger of the "before" and "after" item sizes).
There is no additional cost associated with requesting a return value aside from the small network and processing overhead of receiving a larger response. No read capacity units are consumed.
关于node.js - DynamoDB 在更新表中的项目时如何消耗容量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60373531/
我有一个简单的 HATEOAS 使用 构建的提供程序 Spring 这为我提供了以下资源: { "_links" : { "self" : { "href" : "http:/
这里是 Clojure 初学者,不确定问题中的术语是否正确。 我正在使用 clj-webdriver 出租车 API 构建网络抓取工具。它需要从多个站点抓取数据。以下实际上不是项目中的代码,但我已经对
我使用pthread lib 2.8,操作系统内核是arm上的Linux 2.6.37。在我的程序中,线程 A 使用 pthread 接口(interface)将调度优先级设置为 sched_get_
我有一个大约 400MB 的二进制文件,我想将其转换为 CSV 格式。输出的 CSV 文件将约为 1GB(根据我的计算)。 我读取二进制文件并将其存储在一个结构数组中(其他处理也需要),当用户想要将其
我在编写我的专业应用程序时遇到一个串口线程问题。我有cpu消耗。当我在我的项目中添加 SerialCtrl.h(来自项目 SerialCtrl http://www.codeproject.com/A
总结:似乎 c 代码的 RAM 消耗取决于变量排序。有没有办法自动优化? 更长的版本:在这里,我粘贴了两个版本的代码,它们仅在变量排序方面有所不同。 版本 1: static unsigned lon
我有一个处理图像编辑(裁剪和调整大小)的 Windows 应用程序项目。不幸的是,这些图像处理会消耗大量内存和 CPU 资源(很容易达到 600MB 或 50% cpu),而且它只是裁剪和调整大小 2
我创建了一个实例化类 10 亿次的循环,并且非常惊讶地看到它在 0 毫秒内运行并且根据 Windows 任务管理器没有消耗 CPU 时间。 正如您从下面的代码中看到的那样,我显然没有对默认构造函数执行
我们有以下用户名验证规则: 用户名可以包含字母数字字符 用户名可以有下划线、连字符或句号 现在假设用户名是 ASCII 用户名不能以句点开头或结尾 用户名不能开始、结束或有任何空格 我们有以下相同的正
如何获取 C# 中所有进程的列表,然后获取每个进程的当前内存和 CPU 消耗? 非常感谢示例代码。 最佳答案 Process class有一个 GetProcesses 方法,可以让您枚举正在运行的进
如何从 linux 2.6.32 机器上的源代码中限制 C 程序的物理内存消耗? 我需要确定系统使用的页面替换算法的类型。 问题是,如果不限制一个进程在内存中可以拥有的页面数量,就很难分析页面错误的模
我正在编写一个 Linux 应用程序,它观察其他应用程序并跟踪资源消耗。我计划使用 Java,但编程语言对我来说并不重要。目标很重要,所以我可以切换到另一种技术或使用模块。我的应用程序将任何选定的第三
我有一个图标,旁边有一个复选框,包含在一个面板中。面板有悬停效果,点击面板时想选中框。 我想使用或阻止复选框的所有事件,仅以编程方式选择它。我希望该框在屏幕上显示为“已启用”,而“在幕后”几乎不起作用
我正在使用服务 REST,它当前有 5025 条记录,但当我使用该服务时,只出现 1,000 条记录。我可以做什么来完全消耗所有记录? 这是我的代码示例: $http({ method:
我已经搜索了几个小时但没有成功,是否可以跟踪 Blob 容器上 SAS 凭据的消耗情况? 我将向几个客户提供 SAS 凭证,并且我希望能够跟踪他们的 SAS 使用情况(操作次数、带宽使用情况...)
我创建了具有 1.75 GB RAM 的 B1 应用服务计划。我还创建了一个应用程序服务并向其部署了 docker 镜像。现在我停止了 docker 镜像,它的状态已停止,并且它是该应用程序服务计划中
与我们的合作伙伴一起为我们的客户(一家售后汽车零部件零售商)开发一个项目,他们利用 AR 和 VR 做了很多很酷的事情。我们的想法是使用 Hololens 并尝试帮助我们的客户在其大型仓库中进行物流操
这是一个简短的 Haskell 程序,可以生成 440 Hz 的声音。它使用pulseaudio作为音频后端。 import GHC.Float import Control.Arrow import
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 8 年前。 Improve this ques
tab.setOnCloseRequest(e -> { if (getEditorForTextArea(getSelectedTextArea()) != null
我是一名优秀的程序员,十分优秀!