DynamoDB "запрос" против операций "get_item" для ключа раздела или GSI - PullRequest
0 голосов
/ 07 мая 2020
  • Если вы выполняете операцию «get_item» над таблицей Dynamodb, вы должны предоставить (первичный) ключ раздела.

  • Вам не разрешено выполнять Операция "get_item" в GSI (глобальном вторичном индексе), даже если она действует точно так же, как ключ раздела (первичный).

  • Для работы с GSI вам, скорее всего, потребуется «запрос» база данных.

Итак, мой вопрос: : операция «запрос» с оператором «равно» для GSI так же эффективна, как "get_item" для ключа раздела?

Ответы [ 2 ]

0 голосов
/ 09 мая 2020

Причина, по которой требуется операция query при чтении данных из GSI, заключается в том, что в отличие от самой таблицы GSI может содержать несколько элементов для одного и того же ключа. Итак, в то время как для самой таблицы вы гарантированно и вынуждены иметь только один элемент на раздел + ключ сортировки, GSI может закончить тем, что несколько элементов будут сопоставлены с одним и тем же разделом + ключ сортировки в GSI.

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

0 голосов
/ 07 мая 2020

Я считаю, что GetItem имеет немного лучшую производительность, поскольку это будет только один элемент из одного ключа ha sh (ключ раздела и, возможно, ключ сортировки).

Запрос эффективен, поскольку он будет извлекать только из одного раздела, однако может возвращать несколько элементов в зависимости от оператора, используемого для ключа сортировки.

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