Быстрый запрос к таблице, если она содержит ключ (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 и самостоятельно анализировать ответ, чтобы быстро проверить, вернулся ли элемент.
Спасибо
Ответы
Ответ 1
Я думаю, что существует незначительная разница в скорости между "получением" и проверкой, существует ли она. Вы можете продолжить использование самого GetItem. Если элемент потенциально слишком велик, ограничьте возвращаемые атрибуты.
Шея бутылки находится в состоянии ожидания, чтобы добраться до серверов DB Dynaamo (REST API) и в получении из индекса. Таким образом, получение и проверка будет одинаковой скоростью. Убедитесь, что ваш сервер, выдающий вызов, находится в том же регионе, что и Dynamo DB. Это оказывает максимальное влияние на скорость.
Ответ 2
Упомянув только хэш-ключ в качестве атрибутов для получения, вы можете повысить производительность и не тратить свою пропускную способность.