DynamoDBMapper scanPage не возвращает результатов - PullRequest
0 голосов
/ 06 апреля 2020

Когда я пытаюсь получить разбитый на страницы набор данных из моей таблицы DynamoDB, он работает отлично, но только если данные, которые он ищет, находятся вверху таблицы. Если он глубже (у меня есть данные, отсортированные по user_alias, по 100 элементов для каждого псевдонима), он ничего не возвращает.

AmazonDynamoDB dynamo = AmazonDynamoDBClientBuilder.standard()
                .withCredentials(
                        new AWSStaticCredentialsProvider(
                                new BasicAWSCredentials(
                                        "XXXXXXX",
                                        "XXXXXXX")))
                .build();
DynamoDBMapper mapper = new DynamoDBMapper(dynamo);
Map<String, AttributeValue> expressionAttributeValues = new HashMap<>();
expressionAttributeValues.put(":user", new AttributeValue().withS(request.getUser().getAlias()));
ScanResultPage<DatabaseFeedObject> feedEntry;
feedEntry = mapper.scanPage(
                    DatabaseFeedObject.class,
                    new DynamoDBScanExpression()
                             .withFilterExpression("user_alias = :user")
                             .withLimit(request.getLimit())
                             .withExpressionAttributeValues(expressionAttributeValues));

//feedEntry.getResults() returns nothing, 
//but feedEntry.getLastEvaluatedKey() returns an
//element in the table that does not fit the original query.

Моей первой мыслью было просто продолжать выполнение запроса, пока я не достигну предела. хочу, но это быстро станет неэффективным и дорогостоящим. Есть ли другой способ сделать это?

1 Ответ

0 голосов
/ 07 апреля 2020

Недавно я обнаружил разницу между Scan и Query. Scan просто проанализирует всю таблицу, в то время как запрос будет использовать SQL поведение, чтобы найти то, что вам нужно. Вместо этого я перешел на mapper.queryPage (), и он отлично работает. Даже быстрее, чем раньше на самом деле. Я оставлю «принятый ответ» невыбранным, поэтому, если кто-то захочет дать другой ответ, будьте моим гостем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...