В предыдущих постах мы рассмотрели, как запросить базу данных DynamoDB
Запрос DynamoDB часть 1
Запрос DynamoDB Part2 .
Помимо выдачи запросов DynamoDB также предлагает функцию сканирования. Сканирование выполняет выборку всех элементов, которые могут быть у вас в таблице DynamoDB. Поэтому сканирование не требует никаких правил, основанных на нашем ключе раздела или ваших глобальных / локальных вторичных индексах. Сканирование предлагает фильтрацию на основе уже выбранных элементов и возвращение определенных атрибутов из выбранных элементов.
Приведенный ниже фрагмент выполняет сканирование таблицы логинов, добавляя фильтрацию и выбирая только поле электронной почты.
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
public List<String> scanLogins(Date date) { List<String> emails = new ArrayList<>(); Map<String, String> attributeNames = new HashMap<String, String >(); attributeNames.put("#timestamp", "timestamp"); Map<String, AttributeValue> attributeValues = new HashMap<String, AttributeValue>(); attributeValues.put(":from", new AttributeValue().withN(Long.toString(date.getTime()))); ScanRequest scanRequest = new ScanRequest() .withTableName(TABLE_NAME) .withFilterExpression("#timestamp < :from") .withExpressionAttributeNames(attributeNames) .withExpressionAttributeValues(attributeValues) .withProjectionExpression("email"); Map<String,AttributeValue> lastKey = null; do { ScanResult scanResult = amazonDynamoDB.scan(scanRequest); List<Map<String,AttributeValue>> results = scanResult.getItems(); results.forEach(r->emails.add(r.get("email").getS())); lastKey = scanResult.getLastEvaluatedKey(); scanRequest.setExclusiveStartKey(lastKey); } while (lastKey!=null); return emails; } |
Перед использованием сканирования в приложении мы должны принять во внимание, что сканирование выбирает все элементы таблицы. Поэтому он имеет высокую стоимость как по расходам, так и по производительности. Кроме того, он может потреблять ваши ресурсы.
Лучше придерживаться запросов и избегать сканирования.
Вы можете найти исходный код на github .
| Ссылка: | Сканируйте элементы DynamoDB с помощью Java от нашего партнера по JCG Эммануила Гкациоураса в блоге gkatzioura . |