【问题标题】:In Amazon DynamoDB creating a version of the table items在 Amazon DynamoDB 中创建表项的版本
【发布时间】:2015-11-20 08:56:18
【问题描述】:
我有一件物品,例如:
“物品”: {
“型号”:32590038899,
“日期”:2015 年 10 月 9 日,
“价格”:100
}
“hash_key_attribute_name”:“模型”
“range_key_attribute_name”:“日期”
我的问题是插入了很多新物品,因此有可能会出现相同型号的物品并且它们可能不是相同的产品。这可能是由于产品可用的地区。所以我需要一个设置我需要保留产品的副本,如果出现这种情况,并且将来在检查或要求后我可以带回该项目。我正在寻找一种版本系统。目前该产品因主键相同而被删除。
【问题讨论】:
标签:
node.js
amazon-web-services
amazon-dynamodb
aws-sdk
aws-cli
【解决方案1】:
简单地说:如果您的主键不是唯一的,那么您没有使用正确的字段作为主键。
...有可能会出现相同型号的商品
可能不是同一产品。这可能是由于产品所在的地区
可用...
听起来您的主键需要是区域和产品 ID 的组合。或者您可能需要为每个区域创建一个单独的表。
【解决方案2】:
我会为您的商品添加一个唯一的 id 属性,uuid 效果很好,例如
{ id: "53f382ae-94b8-4910-b8f1-384f46dc10d8",
model: 32590038899,
date: "10-09-2015",
price:100
}
将您的表架构更改为只有一个哈希键属性名称 - id。
使用散列键 - model,范围键 - date 添加全局二级索引。
全局二级索引可以包含主键冲突的项目。使用此架构,您将防止项目被覆盖,并且您可以查询具有给定型号的项目。