DynamoDB использует индексы для атрибутов первичного ключа для улучшения доступа. Они ускоряют доступ к приложениям и извлечение данных, а также поддерживают более высокую производительность за счет уменьшения задержки приложений.
Вторичный индекс
Вторичный индекс содержит подмножество атрибутов и альтернативный ключ. Вы используете его с помощью запроса или операции сканирования, которая нацелена на индекс.
Его содержимое включает в себя атрибуты, которые вы проектируете или копируете. При создании вы определяете альтернативный ключ для индекса и любые атрибуты, которые вы хотите проецировать в индекс. Затем DynamoDB выполняет копирование атрибутов в индекс, включая атрибуты первичного ключа, полученные из таблицы. Выполнив эти задачи, вы просто используете запрос / сканирование, как будто выполняете работу с таблицей.
DynamoDB автоматически поддерживает все вторичные индексы. При выполнении операций с элементами, таких как добавление или удаление, обновляются все индексы в целевой таблице.
DynamoDB предлагает два типа вторичных индексов —
-
Глобальный вторичный индекс — этот индекс включает ключ раздела и ключ сортировки, которые могут отличаться от исходной таблицы. Он использует метку «глобальный» из-за способности запросов / сканирований в индексе охватывать все данные таблицы и все разделы.
-
Локальный вторичный индекс — этот индекс разделяет ключ раздела с таблицей, но использует другой ключ сортировки. Его «локальный» характер обусловлен тем, что все его разделы имеют вид таблицы с одинаковым значением ключа раздела.
Глобальный вторичный индекс — этот индекс включает ключ раздела и ключ сортировки, которые могут отличаться от исходной таблицы. Он использует метку «глобальный» из-за способности запросов / сканирований в индексе охватывать все данные таблицы и все разделы.
Локальный вторичный индекс — этот индекс разделяет ключ раздела с таблицей, но использует другой ключ сортировки. Его «локальный» характер обусловлен тем, что все его разделы имеют вид таблицы с одинаковым значением ключа раздела.
Лучший тип используемого индекса зависит от потребностей приложения. Рассмотрим различия между двумя представленными в следующей таблице —
Качественный | Глобальный вторичный индекс | Локальный вторичный индекс |
---|---|---|
Схема ключей | Он использует простой или составной первичный ключ. | Он всегда использует составной первичный ключ. |
Ключевые атрибуты | Ключ индекса и ключ сортировки могут состоять из атрибутов строки, числа или двоичной таблицы. | Ключ раздела индекса является атрибутом, который используется совместно с ключом раздела таблицы. Ключом сортировки могут быть строковые, числовые или двоичные атрибуты таблицы. |
Пределы размера на значение ключа раздела | Они не имеют ограничений по размеру. | Это накладывает максимальное ограничение в 10 ГБ на общий размер проиндексированных элементов, связанных со значением ключа раздела. |
Операции с индексами в Интернете | Вы можете создавать их при создании таблиц, добавлять их в существующие таблицы или удалять существующие. | Вы должны создать их при создании таблицы, но не можете удалить их или добавить в существующие таблицы. |
Запросы | Это позволяет выполнять запросы, охватывающие всю таблицу и каждый раздел. | Они адресуют отдельные разделы через значение ключа раздела, указанное в запросе. |
консистенция | Запросы этих индексов предлагают только окончательно согласованный вариант. | Запросы из них предлагают варианты в конечном итоге последовательных или строго последовательных. |
Пропускная способность | Он включает в себя настройки пропускной способности для чтения и записи. Запросы / сканирования потребляют емкость из индекса, а не из таблицы, что также относится к обновлениям записи в таблицу. | Запросы / сканирования потребляют таблицы для чтения. Таблица записывает обновления локальных индексов и использует единицы емкости таблицы. |
проекция | Запросы / сканирования могут запрашивать только атрибуты, спроецированные в индекс, без извлечения атрибутов таблицы. | Запросы / проверки могут запрашивать те атрибуты, которые не проецируются; кроме того, автоматические выборки их происходят. |
При создании нескольких таблиц со вторичными индексами делайте это последовательно; то есть составьте таблицу и подождите, пока она достигнет АКТИВНОГО состояния, прежде чем создавать другую и снова ждать. DynamoDB не разрешает одновременное создание.
Каждый вторичный индекс требует определенных спецификаций —
-
Тип — Укажите локальный или глобальный.
-
Имя — использует правила именования, идентичные таблицам.
-
Схема ключей — разрешены только строка верхнего уровня, число или двоичный тип, причем тип индекса определяет другие требования.
-
Атрибуты для проецирования — DynamoDB автоматически проецирует их и допускает любой тип данных.
-
Пропускная способность — укажите емкость чтения / записи для глобальных вторичных индексов.
Тип — Укажите локальный или глобальный.
Имя — использует правила именования, идентичные таблицам.
Схема ключей — разрешены только строка верхнего уровня, число или двоичный тип, причем тип индекса определяет другие требования.
Атрибуты для проецирования — DynamoDB автоматически проецирует их и допускает любой тип данных.
Пропускная способность — укажите емкость чтения / записи для глобальных вторичных индексов.
Предел для индексов остается 5 глобальных и 5 локальных на таблицу.
Вы можете получить доступ к подробной информации об индексах с помощью DescribeTable . Возвращает имя, размер и количество предметов.
Примечание. Эти значения обновляются каждые 6 часов.
В запросах или сканированиях, используемых для доступа к данным индекса, укажите имена таблиц и индексов, требуемые атрибуты для результата и любые условные операторы. DynamoDB предлагает возможность возвращать результаты в порядке возрастания или убывания.
Примечание. При удалении таблицы также удаляются все индексы.