GetItem из DynamoDB с использованием range key в java

#java #java-8 #amazon-dynamodb

#java #java-8 #amazon-dynamodb

Вопрос:

Я создал таблицу dynamodb с именем orders . Мой ключ раздела (хэш-ключ) orderId и ключ сортировки (ключ диапазона) storeId .

Я могу поместить записи в свою таблицу, используя оба ключа. Но теперь у меня есть требование, при котором мне нужно получить все значения из базы storeId данных, которые могут быть списком значений. Однако я не вижу ни одного API в java, который извлекал бы значение с помощью range key. Может ли кто-нибудь помочь мне с этим?

Ответ №1:

Когда дело доходит до извлечения данных из DynamoDB, в вашем распоряжении есть два метода; query и scan .

query Операция предназначена для того, когда вы хотите найти элемент по его первичному ключу. В вашем примере это означает, что вы знаете orderId и storeId (или только orderId )

scan Операция предназначена для получения данных, используя атрибут, отличный от ключа раздела. Это то, что вам нужно будет использовать для извлечения элементов storeId .

Тем не менее, вы, вероятно, увидите совет избегать scan операции, когда это возможно. Это связано с тем, что scan операция должна считывать всю базу данных для извлечения интересующих элементов. Чтобы избежать этого, вы могли бы ввести глобальный вторичный индекс в storeId поле, который позволил бы вам извлекать элементы с storeId помощью query операции.

Комментарии:

1. Это одно из подлинных решений. Однако я хотел бы спросить, могу ли я добавить sortkey в качестве глобального вторичного индекса, а затем определить проекцию как keys_only? поскольку он по-прежнему является ключевым элементом