2017-10-21 182 views
1

我是nosql/DynamoDB的新手。如何更新DynamoDB中的所有记录?

我有〜10 000容器项记录的列表,其被每6小时更新:

[ 
    { containerId: '1a3z5', items: ['B2a3, Z324, D339, M413'] }, 
    { containerId: '42as1', items: ['YY23, K132'] }, 
    ... 
] 

(主键=数据筒)

  1. 它是可行的只需删除表,并重新创建新的值?

  2. 或者我应该循环遍历新列表的每个项目,并有条件地更新/写入/删除当前的DynamoDB记录(使用批处理)?

回答

1

对于这种情况批量更新是更好的方法。你有两种情况:

  • 如果你只需要更新某些记录,而不是批量更新更高效。您可以扫描整个表格并迭代思考记录并仅更新某些记录。
  • 如果您需要每6小时更新一次所有记录,批量更新将更加高效,因为如果您删除表并重新创建表,那也意味着您必须重新创建索引,这不是一个非常快的过程。在重新创建表格之后,您仍然需要执行插入操作,同时您必须将所有记录保存在另一个数据库或内存中。其中,删除整个表

一种情形就是一个很好的方法,如果你需要数千甚至更多的记录从表中删除所有数据,比其更快的重建表,不是删除尽管API的所有记录。

还有一个建议您考虑过替代方案,因为您的问题看起来不像DynamoDB的一个好用例。例如,MongoDB和Cassandra支持通过开箱即用的查询进行更新。

+0

感谢您的回复。 您可能是正确的,DynamoDB不适合此用例。 基本上我缓存另一个数据库(我从中获取数据的API)的结果。所以现在我想可能最好使用Amazon ElastiCache来存储数据。你怎么看? – T1000

+0

dynamo似乎不支持批量更新,所以他需要执行批量写入,所以首先他需要读取所有项目 – Yerken