Учебники

DynamoDB — Индексы

DynamoDB использует индексы для атрибутов первичного ключа для улучшения доступа. Они ускоряют доступ к приложениям и извлечение данных, а также поддерживают более высокую производительность за счет уменьшения задержки приложений.

Вторичный индекс

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

Его содержимое включает в себя атрибуты, которые вы проектируете или копируете. При создании вы определяете альтернативный ключ для индекса и любые атрибуты, которые вы хотите проецировать в индекс. Затем DynamoDB выполняет копирование атрибутов в индекс, включая атрибуты первичного ключа, полученные из таблицы. Выполнив эти задачи, вы просто используете запрос / сканирование, как будто выполняете работу с таблицей.

DynamoDB автоматически поддерживает все вторичные индексы. При выполнении операций с элементами, таких как добавление или удаление, обновляются все индексы в целевой таблице.

DynamoDB предлагает два типа вторичных индексов —

  • Глобальный вторичный индекс — этот индекс включает ключ раздела и ключ сортировки, которые могут отличаться от исходной таблицы. Он использует метку «глобальный» из-за способности запросов / сканирований в индексе охватывать все данные таблицы и все разделы.

  • Локальный вторичный индекс — этот индекс разделяет ключ раздела с таблицей, но использует другой ключ сортировки. Его «локальный» характер обусловлен тем, что все его разделы имеют вид таблицы с одинаковым значением ключа раздела.

Глобальный вторичный индекс — этот индекс включает ключ раздела и ключ сортировки, которые могут отличаться от исходной таблицы. Он использует метку «глобальный» из-за способности запросов / сканирований в индексе охватывать все данные таблицы и все разделы.

Локальный вторичный индекс — этот индекс разделяет ключ раздела с таблицей, но использует другой ключ сортировки. Его «локальный» характер обусловлен тем, что все его разделы имеют вид таблицы с одинаковым значением ключа раздела.

Лучший тип используемого индекса зависит от потребностей приложения. Рассмотрим различия между двумя представленными в следующей таблице —

Качественный Глобальный вторичный индекс Локальный вторичный индекс
Схема ключей Он использует простой или составной первичный ключ. Он всегда использует составной первичный ключ.
Ключевые атрибуты Ключ индекса и ключ сортировки могут состоять из атрибутов строки, числа или двоичной таблицы. Ключ раздела индекса является атрибутом, который используется совместно с ключом раздела таблицы. Ключом сортировки могут быть строковые, числовые или двоичные атрибуты таблицы.
Пределы размера на значение ключа раздела Они не имеют ограничений по размеру. Это накладывает максимальное ограничение в 10 ГБ на общий размер проиндексированных элементов, связанных со значением ключа раздела.
Операции с индексами в Интернете Вы можете создавать их при создании таблиц, добавлять их в существующие таблицы или удалять существующие. Вы должны создать их при создании таблицы, но не можете удалить их или добавить в существующие таблицы.
Запросы Это позволяет выполнять запросы, охватывающие всю таблицу и каждый раздел. Они адресуют отдельные разделы через значение ключа раздела, указанное в запросе.
консистенция Запросы этих индексов предлагают только окончательно согласованный вариант. Запросы из них предлагают варианты в конечном итоге последовательных или строго последовательных.
Пропускная способность Он включает в себя настройки пропускной способности для чтения и записи. Запросы / сканирования потребляют емкость из индекса, а не из таблицы, что также относится к обновлениям записи в таблицу. Запросы / сканирования потребляют таблицы для чтения. Таблица записывает обновления локальных индексов и использует единицы емкости таблицы.
проекция Запросы / сканирования могут запрашивать только атрибуты, спроецированные в индекс, без извлечения атрибутов таблицы. Запросы / проверки могут запрашивать те атрибуты, которые не проецируются; кроме того, автоматические выборки их происходят.

При создании нескольких таблиц со вторичными индексами делайте это последовательно; то есть составьте таблицу и подождите, пока она достигнет АКТИВНОГО состояния, прежде чем создавать другую и снова ждать. DynamoDB не разрешает одновременное создание.

Каждый вторичный индекс требует определенных спецификаций —

  • Тип — Укажите локальный или глобальный.

  • Имя — использует правила именования, идентичные таблицам.

  • Схема ключей — разрешены только строка верхнего уровня, число или двоичный тип, причем тип индекса определяет другие требования.

  • Атрибуты для проецирования — DynamoDB автоматически проецирует их и допускает любой тип данных.

  • Пропускная способность — укажите емкость чтения / записи для глобальных вторичных индексов.

Тип — Укажите локальный или глобальный.

Имя — использует правила именования, идентичные таблицам.

Схема ключей — разрешены только строка верхнего уровня, число или двоичный тип, причем тип индекса определяет другие требования.

Атрибуты для проецирования — DynamoDB автоматически проецирует их и допускает любой тип данных.

Пропускная способность — укажите емкость чтения / записи для глобальных вторичных индексов.

Предел для индексов остается 5 глобальных и 5 локальных на таблицу.

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

Примечание. Эти значения обновляются каждые 6 часов.

В запросах или сканированиях, используемых для доступа к данным индекса, укажите имена таблиц и индексов, требуемые атрибуты для результата и любые условные операторы. DynamoDB предлагает возможность возвращать результаты в порядке возрастания или убывания.

Примечание. При удалении таблицы также удаляются все индексы.