如何在DynamoDB中添加一列
如何在DynamoDB中添加一列
在Amazon的AWS中的DynamoDB中,有没有一种方法可以向现有表添加新列?谷歌没有帮助,UpdateTable查询在http://docs.aws.amazon.com/cli/latest/reference/dynamodb/update-table.html?highlight=update%20table中没有关于添加新列的任何信息。
DynamoDB是一种无服务器的云数据库服务,它提供了高度可扩展的性能和灵活的数据模型。在使用DynamoDB时,有时需要向表中添加新的列来满足不断变化的数据需求。下面将介绍如何在DynamoDB中添加列的方法。
首先,打开DynamoDB并点击左侧边栏菜单中的"tables"选项。然后,通过名称搜索您的表并点击该表。
接下来,选择名为"Explore table items"的橙色按钮。在页面下滑后,点击"Create item"按钮。
现在,您将看到一个带有JSON值的编辑器。点击右侧的"Form"按钮,以添加新的列及其类型。
注意:这将插入一个新记录,您现在也可以看到新的列。
通过上述步骤,您可以在DynamoDB中添加新的列来满足不断变化的数据需求。这种方法简单且直观,适用于需要在表中添加新列的情况。
如何在DynamoDB中添加列
DynamoDB是一种非关系型数据库,它没有外键的概念。它有主分区键和索引分区键,类似于关系型数据库中的主键和索引键。除了这些要求之外,您无需预定义字段。以下是一些新手应该注意的最佳实践:
1. 为每个记录添加一个数值字段,用于存储创建时间的秒数。DynamoDB具有可选的清理功能,需要在数据中存储此类型的字段。
2. 由于DynamoDB不能使用日期类型,所以您必须将日期存储为数值字段或字符串。鉴于前面提到的备注,您可能更喜欢使用数值类型。
3. 不要在其中存储大型文档,因为DynamoDB的最大获取大小为16MB,最大记录大小为400KB。幸运的是,AWS提供了S3存储和其他类型的数据库(例如DocumentDB)。
对于表键,有许多策略可供选择:
1. 如果您只声明了分区键,那么它就像一个主键(例如,分区键=invoiceId)。这样就可以了。
2. 如果您的对象具有父引用(例如,发票有一个客户),那么您可能需要添加一个排序键(例如,分区键=customerId;排序键=invoiceId)。它们一起表现得像一个组合键。优点是您可以使用两个键或仅使用分区键进行查找(例如,请求特定客户的特定发票,或者所有属于该客户的发票)。
您可以点击以下链接了解有关存储创建时间的更多信息:
docs.aws.amazon.com/amazondynamodb/latest/developerguide/…;
在JavaScript中,您可以使用以下代码来获取当前时间的秒数:const ttl = Math.floor((new Date().getTime()) / 1000)
。
关于Date.now()
,根据文档,它应该返回秒数。因此,您需要使用Math.floor(Date.now()/1000)
。
最后,我补充了有关表键的更多信息,这是大多数初学者还没有准备好掌握的内容。但是,迟早您都将需要使用它。
问题的出现原因:DynamoDB不需要定义模式,因此没有所谓的“列”。可以通过添加新的属性来添加新的项目。
解决方法:只要在代码的PutItem调用中包含新属性,DynamoDB就会接受它。没有其他记录具有该属性也无关紧要。
如果要从所有文档中删除属性,需要迭代并对每个文档调用UpdateItem。
要从已存在或错误添加的表中删除列,不能使用单个操作,需要迭代并对每个文档调用UpdateItem。
如果在UI中看不到新字段,可能是因为没有查询此字段。DynamoDB会将具有新属性的数据存储在项目中,除了哈希键(如果存在)和全局二级索引所需的键字段之外,不需要定义其他属性。
从技术上讲,需要为表定义模式。然而,表的最小字段数(不是列)是表的键和全局二级索引所需的键字段。不能取消设置这些字段。除此之外,只要总大小不超过400 KB,可以对任何项目应用任意数量的字段。