2017-01-15 1 views
0

Может ли кто-нибудь сообщить мне, может ли UpdateTableSpec обновлять атрибуты KeySchema и есть ли способ обновить/изменить таблицу с атрибутами non-keyschema? Мой сценарий: я создал таблицу с составным ключом, состоящим из первичного (атрибут #id) и ключа диапазона (атрибут #Name). Теперь я хочу добавить третий атрибут «Пол», который не является частью keyschema. Является ли это возможным ?UpdateTableSpec на таблице dynamoDB не работает

Я обновляю свою DynamoDB таблицу, используя следующий код, но он не добавляет атрибут Пола, хотя она успешно обновляет инициализированный атрибут:

static void updateTable() { 
     System.out.println("Updating the table with new attributes ..."); 
      Table table = dynamoDB.getTable(tableName); 
     UpdateTableSpec updateTableSpec = new UpdateTableSpec(); 
     List<AttributeDefinition> attributeDefinitionList = updateTableSpec.getAttributeDefinitions(); 
     if (null == attributeDefinitionList) { 
      attributeDefinitionList = new ArrayList<AttributeDefinition>(); 
     } 
     attributeDefinitionList.add(new AttributeDefinition() 
         .withAttributeName("Gender") 
         .withAttributeType("S")); 
     updateTableSpec.withAttributeDefinitions(attributeDefinitionList) 
       .withProvisionedThroughput(new ProvisionedThroughput() 
       .withReadCapacityUnits(6L) 
       .withWriteCapacityUnits(7L));; 
     table.updateTable(updateTableSpec); 
     try { 
      table.waitForActive(); 
      System.out.println("Table updated succesfully"); 
     } catch (final Exception ex) { 
      System.out.println("Exception occurred while updating the table"); 
     } 

    } 

ответ

2

Вы не можете обновить ключевую схему для таблицы DynamoDB. Обновить таблицу API может быть использован только для (от doc):

  1. Изменение инициализированы настройки пропускной способности таблицы.
  2. Включить или отключить потоки на столе.
  3. Удалить глобальный вторичный индекс из таблицы.
  4. Создайте новый глобальный вторичный индекс на столе. После того, как индекс начнет засыхать, вы можете использовать UpdateTable для выполнения других операций.

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

Смежные вопросы