DynamoDBMapper предоставляет различные способы, чтобы прочитать один элемент из таблицы:DynamoDBMapper нагрузки против запроса
- запрос
- нагрузка
Есть рекомендации, какие из них использовать? В быстром тесте следующие два фрагмента кода возвращают один и тот же элемент «MyEntry» для таблицы с первичным ключом = хэш и ключ диапазона = дата, тогда как метод запроса примерно на 10% быстрее.
нагрузка
public MyEntry getEntryForDay(final Integer hash, final LocalDate date) {
return mapper.load(MyEntry.class, hash, date);
}
запрос
public MyEntry getEntryForDay(final Integer hash, final LocalDate date) {
final MyEntry hashKeyValues = new MyEntry();
hashKeyValues.setHash(hash);
final Condition rangeKeyCondition = new Condition()//
.withComparisonOperator(ComparisonOperator.EQ.toString())//
.withAttributeValueList(new AttributeValue().withS(new LocalDateMarshaller().marshall(date)));
final DynamoDBQueryExpression<MyEntry> queryExpression = new DynamoDBQueryExpression<MyEntry>()//
.withHashKeyValues(hashKeyValues)//
.withRangeKeyCondition("date", rangeKeyCondition)//
.withLimit(1);
final List<MyEntry> storedEntries = mapper
.query(MyEntry.class, queryExpression);
if (storedEntries.size() == 0) {
return null;
}
return storedEntries.get(0);
}
* "Примерно 10% быстрее" *. Как вы оценили их? Каковы ваши измерения? – mkobit
Я не правильно оценил, просто сделал измерение времени. Вставка с mapper.load заняла 90 мс с образцовой таблицей, та же самая вставка с mapper.query заняла 110 мс с той же таблицей. –