#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? поскольку он по-прежнему является ключевым элементом