如何从Amazon Simple DB中检索100多条记录



我正在MVC中创建一个应用程序,并使用亚马逊云服务作为后端。我需要从数据库批量数据,所以我使用这样的查询-

SelectResponse response = simpleDBClient.Select(new SelectRequest()
{
SelectExpression =  "select * from survey1 limit 2400"
});

目前运行良好,返回2400张唱片。现在我想对这些记录应用搜索,所以我必须使用where子句,但当我使用where子句时,它在任何有效条件下只返回10条记录。

请帮帮我。任何帮助都将不胜感激。

您可以将limitwhere子句一起使用。更详细的信息,这里是SelectQuery-的Syntax

select output_list from domain_name [where expression] [sort_instructions] [limit limit]

output_list可以是:itemName()、计数()、属性列表

所有属性的
  1. *
  2. `itemName()`仅用于项名称
  3. 项总数的count(*)与查询表达式匹配。它将返回结果集中的项数,而不是返回项
  4. 属性的显式列表(attribute1,…,attributeN)

domain_name是要从中搜索itemsdomain

表达式是项的match expression。您可以使用选择表达式,如=、<=、<,>=,like,not like,between,is null,is not null etc.

sort_instructions按升序或降序对单个属性的结果进行排序。

limit是要返回的最大结果数(默认值:100,最大值2500)。

请注意-

响应的总大小不能超过1 MB。Amazon SimpleDB自动调整每页返回的项目数以强制执行这个限度。例如,即使您要求检索2500个项目,但是每个项目大小为10 KB,系统返回100个项目以及一个合适的下一个令牌,以便您可以获得下一页的结果。

注意:运行时间超过5秒的操作会返回超时错误响应或部分或空的结果集。部分和空结果集包含一个NextToken值,它允许您继续从它停止的地方开始的操作。

SimpleDB一次只能检索1MB的数据,SimpleDB会放入nextToken作为响应,表示还有更多数据要检索。

以下是如何在Java中实现它。

public List<Item> getItems(){
AmazonSimpleDBClient client = new AmazonSimpleDBClient(...);
List<Item> items = new ArrayList<>();
String nextToken = null;
do {
final SelectRequest request = new SelectRequest();
request.setSelectExpression("MY SELECT QUERY");
// SimpleDB can paginate the result. For paginated result NextToken value will be not null
request.setNextToken(nextToken);
nextToken = null;
SelectResult result = client.select(request);
if (result != null) {
nextToken = (result.getNextToken() != null) ? result.getNextToken() : null;
items.addAll(result.getItems());
}
} while (nextToken != null);
return items;
}

相关内容

  • 没有找到相关文章