Создание нового индекса в DynamoDB с существующими данными

#amazon-web-services #amazon-dynamodb

#amazon-web-services #amazon-dynamodb

Вопрос:

У меня есть сомнения. Например, я создал индекс в таблице 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 обновляет информацию каждый этот интервал. Если мой индекс изменит размер, я приму ваш ответ :)!