Подтвердить что ты не робот

Быстрый запрос к таблице, если она содержит ключ (DynamoDB и Java)

У меня есть таблица с хешем и комплексным ключом диапазона.
Я могу запросить элемент с помощью GetItem из AWS SDK для Java. GetItem возвращает null, если он не находит объект, или элемент как 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 и самостоятельно анализировать ответ, чтобы быстро проверить, вернулся ли элемент.

Спасибо

4b9b3361

Ответ 1

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

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

Ответ 2

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