如何在DynamoDB中添加列


Answers:


164

DynamoDB不需要架构定义,因此没有“列”之类的东西。您可以仅添加具有新属性的新项目。


6
因此,用户可以仅在一个额外的字段上载其“个人资料信息”,而dynamo会即时接受吗?还是我必须以管理员身份加入并添加?
哥斯达黎加

12
只要您的代码在其PutItem调用中包括新属性,@ Costa便会被DynamoDB接受。没有其他记录具有该属性没关系。
osullic'7

如何从所有文档中删除属性?
Prashant Tapase

2
不在一个操作中,我相信您需要进行迭代并为每个操作调用UpdateItem
Julio

1
@HrushikeshDhumal您可能没有在UI中看到新字段,因为您没有在查询它。Dynamodb将在项目中存储具有新属性的数据-无需定义除哈希键(和排序键(如果存在))以外的属性。
bschandramohan

5

好吧,让我们不要被关于“字段”和“列”之间差异的语义讨论所困扰。“列”一词的确使我们想起了关系数据库,而dynamodb却不是。从本质上讲,这意味着dynamodb没有外键

Dynamodb确实具有“主分区键”和“索引分区键”,就像关系数据库一样。

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

假设您是新手,请参考以下一些其他好的做法:

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

1

我安装了NoSQL Workbench,然后连接到现有的DynamoDB表,并尝试通过添加新属性来更新现有Item。我发现我们只能添加具有以下类型之一的新属性:“ SS”,“ NS”,“ BS”(字符串集,数字集,二进制集)。操作。

在此处输入图片说明

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

与NoSQL Workbench相关的视频-https: //www.youtube.com/watch?v= Xn12QSNa4RE&feature = youtu.be&t =3666

例如,在Python的“如何扫描所有dynamodb表” - https://gist.github.com/pgolding


-1

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

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.