2016-02-24 4 views
-1

Я новичок в работе с DynamoDB, и мне нужна помощь в извлечении данных из таблицы с помощью AndroidSDK.Сканирование DynamoDB с помощью AndroidSDK

Если у меня есть таблица под названием Расположение со следующими атрибутами:

{randomID (PrimaryKey) | Страна | Государства | Площадь}

Как я могу сканировать таблицу, чтобы получить все Штаты при выборе конкретной страны?

В SQL я бы сказал что-то вроде:

SELECT * от государств КУДА Страна = Германия

Должен ли я использовать запрос или сканирование?

До сих пор я видел примеры кода сканирования в блогах AWS, используя DynamoDBScanExpression и фильтры условий. Честно говоря, я действительно не понимаю.

Поэтому я буду признателен, если кто-то сможет использовать мой пример использования, чтобы объяснить, как сканировать с помощью AndroidSDK.

+0

Вы получили существенный ответ на следующий день после того, как спросили об этом - было ли это хорошо? Обычно принято голосовать, принимать или отвечать на полезные люди здесь. – halfer

+0

Downvoted (см. Выше). – halfer

ответ

1

Я должен начать с рекомендации избегать Сканирование операций как можно больше. Если это необходимо, конечно (и по необходимости, я имею в виду, вам действительно нужно получить все предметы на столе).


Давайте рассмотрим, как работают запросы DynamoDB. Чтобы сделать запрос , вы должны знать ключ хэша таблицы. Это обязательно. Вы не можете сделать запрос, если вы этого не знаете.

Судя по дизайну вашего стола, я бы предположил, что вы, вероятно, не знаете своего (так как это случайный идентификатор), поэтому в качестве отправной точки я бы изменил формат таблицы.

Предположим, что мы выбрали имя country как хэш-ключ. У нас здесь две ветви.

  1. Мы можем либо сделать country наш первичный ключ также, так что будет один пункт в каждой стране, и вы должны будете хранить states в списке (который хорош, но не оптимально).
  2. Или мы можем выбрать state, чтобы быть ключом диапазона, делая основной ключ составным (хэш-ключ и клавиша диапазона). Это позволит нам иметь товар в одном государстве. Это идеальный вариант.

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

Вы смогли бы построить следующий запрос:

#c = :c 

Где #c это выражение атрибут имя, которое содержит значение country и :c это выражение значение атрибута, который содержит значение Germany ,

Этот запрос вернет все элементы, соответствующие этому хэш-ключу, которые в нашем случае являются разными состояниями.

Если вы хотели бы запросить для всех государств, начиная с буквой 'F' вы можете сделать:

#c = :c and begins_with(#s, :s) 

Где #c и :c один и то же значение, как и раньше, и #s = state и :s = F


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

Смежные вопросы