Локальный вторичный индекс DynamoDB против вторичного глобального индекса - PullRequest
0 голосов
/ 23 мая 2019

Я читал документацию по Amazon DynamoDB для сравнения глобального вторичного индекса (GSI) и локального вторичного индекса (LSI). Мне все еще неясно, имеет ли значение для меня то, что я использую в приведенном ниже случае использования? Я знаком с такими вещами, как LSI должен использовать тот же ключ раздела и т. Д.

Вот пример использования:

  1. Я уже знаю ключ сортировки для моего индекса.
  2. Мой ключ раздела одинаков в обоих случаях
  3. Я хочу спроецировать ВСЕ атрибуты из исходной таблицы на мой индекс
  4. Я уже знаю до создания таблицы, какой индекс мне нужен для моего варианта использования.

В приведенном выше случае использования нет абсолютно никакой разницы, кроме незначительного увеличения задержки в LSI по сравнению с GSI, поскольку LSI может оказаться в одном и том же сегменте. Я хочу понять Pro Vs Con в моем случае использования.

Вот несколько вопросов, на которые я пытаюсь найти ответ, и я не сталкивался с блогом, который явно об этом:

  1. Использовать GSI только потому, что ключ раздела отличается?
  2. Использовать GSI, даже если ключ раздела такой же, но я не знал при создании таблицы, что мне нужен такой индекс?

Существуют ли другие важные причины, по которым одна из них превосходит другую (за исключением базовых вещей, таких как ограничение на счет 5 против 20 и все).

1 Ответ

0 голосов
/ 07 июля 2019

Есть еще два ключевых отличия, которые не упомянуты. Вы можете увидеть полное сравнение между двумя типами индексов в официальной документации .

  • Если вы используете БИС, вы можете иметь максимум 10 ГБ данных на значение ключа раздела (таблица плюс все БИС). В некоторых случаях это прерыватель сделки. Прежде чем использовать LSI, убедитесь, что это не так.
  • БИС позволяют выполнять строго согласованные запросы. Это единственное реальное преимущество использования БИС.

Общие рекомендации AWS для индексов говорят

Как правило, следует использовать глобальные вторичные индексы, а не локальные вторичные индексы. Исключением является ситуация, когда вам нужна строгая согласованность результатов вашего запроса, которую может предоставить локальный вторичный индекс, но глобальный вторичный индекс не может (запросы глобального вторичного индекса поддерживают только возможную согласованность).

Вы также можете найти этот ответ SO полезной дискуссией о том, почему вы должны отдавать предпочтение GSI вместо LSI.

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