Перезаписываются ли вторичные индексы DynamoDB, если в них не изменяются какие-либо атрибуты? - PullRequest
1 голос
/ 29 января 2020

В документации AWS:

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

https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/SQLtoNoSQL.Indexes.html

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

Например, предположим, что у меня есть следующая таблица:

КЛЮЧЕВОЕ СЛОВО (ха sh) | НОМЕР ТЕЛЕФОНА (ассортимент) | АТРИБУТ 1 ... N | ИД СЧЕТА

KEYWORD, PHONE NUMBER и ACCOUNT ID не изменится (но весь элемент может быть удален).

И глобальный вторичный индекс:

ИД СЧЕТА (га sh) | НОМЕР ТЕЛЕФОНА (ассортимент) | КЛЮЧЕВОЕ СЛОВО

Вариант использования: мне нужно найти все элементы первой таблицы, которые имеют одинаковые ACCOUNT ID и PHONE NUMBER. Тогда мне понадобится атрибут KEYWORD. Однако это не должно случаться часто. Ни в коем случае ни один атрибут глобального вторичного индекса не изменится в исходной таблице.

Документы не ясны (для меня). Я предполагаю, что глобальный вторичный индекс не будет иметь запись, если ACCOUNT ID, PHONE NUMBER и KEYWORD не изменятся (но другие атрибуты могут). (Но это приведет к перезаписи, если исходный элемент таблицы будет удален).

1 Ответ

1 голос
/ 29 января 2020

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

https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GSI.html#GSI. Projection

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