SimpleDB:我不能在域中放置超过100个项目

时间:2014-10-12 05:16:15

标签: java amazon-simpledb

我正在使用eclipse通过java在simpleDB中放置和获取项目。我插入了大约1000个项目。然后,我进行了查询以获取域中的项目数,但它返回100。

我也在eclipse中使用aws explorer知道插入的项目数量,我只找到了100个项目。如果我尝试插入更多项目,我没有收到任何错误消息,但没有插入。我认为在一个域中没有固定限制(100个项目)。

任何人都可以帮助我知道是什么原因吗?我如何插入100多件物品?

2 个答案:

答案 0 :(得分:2)

问题是选择不是插入。

简单的数据库查询是专门设计的,当结果太大或传输时间过长时,它只返回部分选择结果。

检查你的SelectResult,在它上面调用getNextToken,如果它不为null,你还有更多选择。要继续,请执行另一次选择,这次使用上次的令牌。

您需要循环,直到下一个标记变为空。

答案 1 :(得分:1)

正如Peter Pei Guo已经解释过的那样,你必须在回复中寻找Next标记。 以下是我用于查询SimpleDB域的示例代码。

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;
}