Быстрый запрос к таблице, если она содержит ключ (DynamoDB и Java) - PullRequest
17 голосов
/ 20 марта 2012

У меня есть таблица с хешем и комплексным ключом диапазона.
Я могу запросить элемент, используя GetItem из AWS SDK для Java. GetItem возвращает ноль, если не находит объект или элемент как Map<String, AttributeValue>.
Я ищу самый быстрый подход, чтобы проверить, существует ли объект
Я думал, может быть, поставляя .withAttributesToGet, такие как:

GetItemResult result =  dbClient.getItem(new GetItemRequest().
    withTableName(TABLE_NAME).
        withKey(new Key(new AttributeValue().withS(hashKey),
                        new AttributeValue().withS(rangeKey))).
        withAttributesToGet(new ArrayList<String>()));
Map<String, AttributeValue> item = result.getItem();
return (item != null);

Другая оптимизация - не использовать анализатор SDK JSON и анализировать ответ самостоятельно, чтобы быстро проверить, вернулся ли элемент.

Спасибо

Ответы [ 2 ]

17 голосов
/ 11 февраля 2014

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

У горлышка бутылки задержка для доступа к серверам БД Dynaamo (API REST) ​​и извлечения из индекса.Так что получение и проверка будут одинаковыми по скорости.Убедитесь, что ваш сервер, выполняющий вызов, находится в том же регионе, что и DB Dynamo - это оказывает максимальное влияние на скорость.

5 голосов
/ 30 марта 2012

Если в качестве атрибутов указывать только хеш-ключ, вы можете повысить производительность и не тратить свою пропускную способность.

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