DynamoDBMapper: Как получить все строки для нескольких идентификаторов (массив) в одном запросе или сканировании DynamoDBMapper - PullRequest
0 голосов
/ 03 апреля 2019

Моя таблица БД состоит из нескольких строк с уникальным идентификатором.

API (конечная точка) -> получить строки для идентификаторов я передаю массив входных данных (id1, id2, id3, id4)

Question : In DynamoDBMapper, write a single query fetching all the rows for the id's that we passed in.

мы можем использовать либо сканирование, либо запрос.

Ценю вашу помощь. Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 04 апреля 2019

Сканирование или запрос не подходит для этой транзакции.

Вам следует перебрать свой список и использовать GetItem для извлечения каждого элемента в отдельности, что является самым быстрым и дешевым способом получения элементов. Вы также можете использовать BatchGetItem , если хотите выполнять параллельные запросы.

Сканирование будет медленным и дорогостоящим, поскольку оно будет оценивать каждый элемент в вашей таблице. Однако, если вы настаиваете на его использовании, просто отсканируйте свою таблицу и предоставьте ScanFilter для возврата ваших предметов.

Если вы используете Query, он все равно будет работать точно так же, как GetItem. Вы должны были бы повторить свой список идентификаторов. то есть запрос в этом случае совсем не подходит.

0 голосов
/ 17 апреля 2019

Я добился в одном запросе вызова (DynamoDBMapper.SCAN). Пример как следует

    private List<Activity> getbyIds(List<UUID> Ids) {
            List<Entity> activityEntityList = new ArrayList<Entity>();
            List<AttributeValue> attList = Ids.stream().map(x -> new AttributeValue(x.toString())).collect(Collectors.toList());

            DynamoDBScanExpression dynamoDBScanExpression = new DynamoDBScanExpression()
                    .withFilterConditionEntry("id", new Condition()
                            .withComparisonOperator(ComparisonOperator.IN)
                            .withAttributeValueList(attList));
            PaginatedScanList<Entity> list = dynamoDBMapper.scan(Entity.class, dynamoDBScanExpression);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...