Ключи запросов и разделов DynamoDB, простой вопрос - PullRequest
0 голосов
/ 06 марта 2019

Что-то, чего я не понимаю в запросах к таблице DynamoDB, так это то, что кажется необходимым включить что-то вроде .withKeyConditionExpression("itemId = :v_id"), но, поскольку ключ разделения однозначно идентифицирует все элементы в таблице, вы не всегда будете искать только один результат ?

Попытка сделать что-то вроде:

val expression = DynamoDBQueryExpression<PluginItem>()
                .withKeyConditionExpression("itemId > 0")
                .withFilterExpression("attributes.item_modification_date < :val1")
                .withExpressionAttributeValues(eav)
val paginatedResults = queryByExpression(expression)

Я ищу запрос и разбивку на страницы 100 000 элементов в таблице, кто-нибудь может указать мне правильное направление?

1 Ответ

1 голос
/ 07 марта 2019

ключ раздела однозначно идентифицирует все элементы в таблице

так что это не точно. Это зависит от вашего дизайна стола. Однако вы получите гораздо больше гибкости, если создадите таблицу с помощью ключа ParitionKey и ключа сортировки. Тем не менее, вернемся к вашему заявлению. Первичный ключ, а не ключ раздела, однозначно идентифицирует элемент в таблице. Первичный ключ - это комбинация ParitionKey + SortKey (также известный как Range Key).

Думайте о каждом разделе как о ведре.

withKeyConditionExpression ("itemId> 0")

это не сработает. Вы не можете выполнять такие операции с ключом раздела. Тем не менее, вы можете выполнить такие условия на ключ сортировки.

видео с 2018 - re: Invent , которое помогло мне лучше понять Динамо. Я смотрел это видео довольно много раз, особенно последние 30-20 минут.

Надеюсь, это поможет. Я работаю с динамодем всего несколько месяцев, и мне нужно многому научиться.

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