我是nosql / DynamoDB的新手。
我有一个~10 000个容器项记录的列表,每6个小时更新一次:
[
{ containerId: '1a3z5', items: ['B2a3, Z324, D339, M413'] },
{ containerId: '42as1', items: ['YY23, K132'] },
...
]
(主键= containerId)
删除表并使用新值重新创建是否可行?
或者我应该循环遍历新列表的每个项目,并有条件地更新/写入/删除当前的DynamoDB记录(使用批处理写入)?
答案 0 :(得分:1)
对于这种情况,批量更新是更好的方法。你有2个案例:
如果您需要删除表中包含数千或更多记录的所有数据,而不是通过API删除所有记录,则删除整个表是一种很好的方法。
还有一个建议让您考虑替代方案,因为您的问题看起来不像DynamoDB的好用例。例如,MongoDB和Cassandra支持开箱即用的查询更新。
答案 1 :(得分:0)
如果更新涉及某些但不是全部现有项目,并且如果可能对“项目”进行部分更新,则您别无选择,只能执行每条记录操作。即使使用功能更强大的数据库,也是如此。
您也许可以通过首先只检索现有的containerId来加快速度,从而根据您知道要更新还是插入的那个集来进行检索。或者,您可以使用一组更新中的ID按ID进行批量检索,并且每个不返回结果的都是您必须插入的结果,而所做的是要更新的结果。