Я хотел бы получить ЛЮБУЮ строку в моей таблице DynamoDB, но таблица может быть очень большой.Я не хочу, чтобы сервер БД возвращал мне все строки, а затем я просто получаю первый элемент в наборе.
С JDBC я бы использовал курсор, который является просто «указателем» на строкув базе данных.В DynamoDB я смотрел на операцию scan()
(https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Scan.html), но есть очень много похожих методов, и они различаются в зависимости от версии и параметров, которые не выполняют то, что я ожидал, что я действительноЯ действительно не хочу отправлять JSON-запросы, если для этого есть простое программное выражение.
Какой метод мне нужно искать, чтобы просто получать элементы один за другим от клиента к серверу,вместо того, чтобы сервер собирал их и возвращал несколько?
Моя попытка:
new DynamoDB(
AmazonDynamoDBClientBuilder.standard()
.withRegion(Regions.US_EAST_1.name())
.build())
.getTable("my_large_table")
// MaxResultSize just blindly returns rows, not matching rows. Since we have no filter criteria this is fine.
.scan(new ScanSpec().withMaxResultSize(1).withConsistentRead(true))
.firstPage()
.getLowLevelResult()
.getScanResult()
.getItems();
Информация о версии
Пока я использую этино если это будет изменено в более поздних версиях, я хотел бы знать решение, которое минимизирует будущие проблемы миграции:
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-core</artifactId>
<version>1.11.127</version>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk</artifactId>
<version>1.11.127</version>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-dynamodb</artifactId>
<version>1.11.127</version>
</dependency>