Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon dynamodb dynamodb扫描表格_Amazon Dynamodb_Aws Sdk - Fatal编程技术网

Amazon dynamodb dynamodb扫描表格

Amazon dynamodb dynamodb扫描表格,amazon-dynamodb,aws-sdk,Amazon Dynamodb,Aws Sdk,我在dynamodb中有一个表,服务器一直在向表中写入数据。 同时,我使用另一个工作线程使用LastEvaluatedKey继续对该表执行扫描。我的问题是,扫描最终会从表中获取所有项目吗?由于其他线程每天都在向表中写入内容,它是否会错过任何项目 谢谢, 是的。在某些情况下,您可能会错过项目 在散列范围术语中,LastEvaluatedKey实际上是看到的最后一个范围值。dynamo按范围值对响应进行排序(如果是,则按数字排序;如果是字符串,则按str表示值对响应进行排序) 例如: 如果表格值为:

我在dynamodb中有一个表,服务器一直在向表中写入数据。 同时,我使用另一个工作线程使用LastEvaluatedKey继续对该表执行扫描。我的问题是,扫描最终会从表中获取所有项目吗?由于其他线程每天都在向表中写入内容,它是否会错过任何项目

谢谢,
是的。在某些情况下,您可能会错过项目

在散列范围术语中,LastEvaluatedKey实际上是看到的最后一个范围值。dynamo按范围值对响应进行排序(如果是,则按数字排序;如果是字符串,则按str表示值对响应进行排序)

例如: 如果表格值为:

散列,范围

1、‘a’

1,“b”

1,‘c’

1,‘r’

1,'x'

然后你的第一次扫描可以返回你((1,a),(1,b),(1,c),(1,r)) 这里您的最后一个EvaluatedKey是“r”,您的扫描将从此点继续

现在,如果一个新项目(1,d)插入到表中,它将插入(1,c)和(1,r)之间,您的扫描将丢失它,因为他从(1,r)继续,并将返回您(1,x)

因此,我向您推荐的最佳解决方案是:

  • -使用lambda读取更新记录,并根据它们更新新表
  • 迁移-在运行扫描操作之前,插入一段代码,将任何更新/删除写入两个表,然后可以开始扫描,并保证不会丢失任何值
  • 希望能有帮助