如何在DynamoDB中添加列

时间:2014-09-01 12:42:19

标签: amazon-web-services nosql amazon-dynamodb

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

谷歌没有帮助,

http://docs.aws.amazon.com/cli/latest/reference/dynamodb/update-table.html?highlight=update%20table中的UpdateTable查询没有任何与添加新列相关的信息。

4 个答案:

答案 0 :(得分:96)

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

答案 1 :(得分:4)

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

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

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

假设您是新手,那么一些其他良好做法:

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

答案 2 :(得分:1)

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

enter image description here

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

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

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

答案 3 :(得分:-1)

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

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

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