Amazon web services 如何在DynamoDB中添加列

Amazon web services 如何在DynamoDB中添加列,amazon-web-services,nosql,amazon-dynamodb,Amazon Web Services,Nosql,Amazon Dynamodb,有没有办法在Amazon的AWS中的DynamoDB中向现有表添加一个新列 谷歌没有帮助 中的UpdateTable查询没有任何与添加新列相关的信息。DynamoDB不需要架构定义,因此没有“列”这样的东西。您只需添加一个具有新属性的新项。在Amazon的AWS中向DynamoDB中的现有表添加新列的方法: 我们可以通过两种方式将值存储在DynamoDb中, (i) 在DynamoDB的RDBMS类型的结构中,我们可以通过执行相同的命令来添加一个新的Coulmn,该命令保留“newcolumn”

有没有办法在Amazon的AWS中的DynamoDB中向现有表添加一个新列

谷歌没有帮助


中的UpdateTable查询没有任何与添加新列相关的信息。

DynamoDB不需要架构定义,因此没有“列”这样的东西。您只需添加一个具有新属性的新项。

在Amazon的AWS中向DynamoDB中的现有表添加新列的方法:

我们可以通过两种方式将值存储在DynamoDb中, (i) 在DynamoDB的RDBMS类型的结构中,我们可以通过执行相同的命令来添加一个新的Coulmn,该命令保留“newcolumn”条目,在该条目中创建了现有表中的记录。我们可以将DynamoDb用于记录/行,其中某些列具有值,而其他列没有值


(ii)在NoSQL类型的结构中;我们在一列中存储一个Json字符串,以根据需要保留所有属性。这里我们要生成一个json字符串,我们必须将新属性添加到json字符串中,然后可以将其插入到同一列中,但要使用新属性。

好吧,我们不要在关于“字段”和“列”之间区别的语义讨论中拖拉拉。“column”一词确实让我们想起了关系数据库,而dynamodb不是。本质上,这意味着dynamodb没有外键

与关系数据库一样,Dynamodb也有“主分区键”和“索引分区键”

添加数据时,确实需要尊重这些键。但除了这些要求之外,您不必预定义字段(前面提到的分区键除外)

假设您还不熟悉这一点,那么还有一些其他的好做法:

  • 在每条记录中添加一个数字字段,以存储创建时间(秒)。Dynamodb具有可选的清理功能,这需要在数据中使用这种类型的字段
  • 无法在dynamodb中使用日期,因此必须将其存储为数字字段或字符串。鉴于前面提到的备注,您可能更喜欢数字类型
  • 不要在其中存储大文档,因为最大获取大小为16MB,最大记录大小为400KB。幸运的是,AWS也有DocumentDB

我安装了NoSQL Workbench,然后连接到现有的DynamoDB表,并试图通过添加新属性来更新现有项。 我发现我们只能添加一个具有以下类型之一的新属性——“SS”、“NS”、“BS”(字符串集、数字集、二进制集)。 在Workbench中,我们可以为所选操作生成代码

我扫描了我的dynamodb表,为每个项目添加了类型为“SS”的新属性,然后我再次扫描并更新了最近添加到类型“S”的新属性,以便使用主键“pk2NewAttr”创建一个全局二级索引(GSI)

NoSQL工作台相关视频-


Python中的示例“如何扫描所有dynamodb表”-

因此,用户只需上传他们的“配置文件信息”“有了一个额外的场地,迪纳摩就可以随时接受吗?还是我必须以管理员的身份加入并添加它?@Costa只要您的代码在其PutItem调用中包含新属性,DynamoDB就会接受它。没有其他记录具有该属性并不重要。如何从所有文档中删除属性?不是在单个操作中,我相信您需要迭代并调用UpdateItemeach@HrushikeshDhumal您可能没有在UI中看到新字段,因为您没有查询它。Dynamodb将在项中存储具有新属性的数据-不需要定义除散列键(和排序键,如果存在)以外的属性。是否有链接阅读更多有关以秒为单位存储创建时间的信息?谢谢。@JuanitoFatas;例如,在javascript中可以执行
const ttl=Math.floor((new Date().getTime())/1000)