#amazon-web-services #amazon-dynamodb
#amazon-web-services #amazon-dynamodb
Вопрос:
У меня есть сомнения. Например, я создал индекс в таблице DynamoDB и вставил три элемента. И теперь мой индекс выглядит так:
Теперь с помощью трех элементов в таблице я создаю новый индекс в DynamoDB, который выглядит следующим образом:
И я вижу следующую проблему (моя теория):
Размер первого индекса содержит три элемента, но во втором индексе нет трех элементов. Я провел этот тест, потому что у меня есть таблица с 15 миллионами элементов, и мне нужно воссоздать или добавить новый индекс. Проблема в том, что если в индексе нет элементов таблицы, которые уже существовали, это означает, что если мое приложение использует новый индекс, то новые вставки могут быть найдены только после создания индекса.
Вопрос в том:
- Моя теория верна?
- Есть ли способ заполнить новый индекс уже существующими данными?
Ответ №1:
Я думаю, что ваша теория неверна:
Backfilling: For each item in the table, DynamoDB determines which set of attributes to write to the index based on its projection (KEYS_ONLY, INCLUDE, or ALL). It then writes these attributes to the index.
From:https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GSI.OnlineOps.html#GSI.OnlineOps.Creating
Создание глобального индекса после создания вашей таблицы не приводит к потере данных. Однако причиной этого может быть разреженный индекс. Давайте приведем пример:
Допустим, у вас есть таблица с первичным ключом = email, и вы создаете глобальный индекс с первичным ключом в качестве региона (даже после вставки некоторых данных).
Item_1: { email: test@test.com, region: USA}
будет вставлен как в вашу таблицу, так и в GSI
Item_2: { email: test@test.com, age: 21}
будет вставлен только в вашу таблицу
На самом деле это очень полезная функция, вы можете узнать больше здесь https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-indexes-general-sparse-indexes.html
Комментарии:
1. В соответствии с тем, что вы говорите, и что говорится в документации, в GSI будут только те элементы, в которых элементы содержат атрибуты основного ключа или ключа сортировки. Мой единственный страх в том, что я не знаю, почему размер нового индекса равен 0 КБ. Предполагается, что он должен был быть заполнен элементами, имеющими первичный ключ и ключ сортировки, но я не вижу, чтобы это отражалось на вкладке index.
2. Вы уверены, что тип данных значения атрибута соответствует типу данных типа данных схемы ключей индекса ?
3. Да, это соответствует. Я буду ждать шесть часов, потому что я смотрю, что Amazon обновляет информацию каждый этот интервал. Если мой индекс изменит размер, я приму ваш ответ :)!