Paweł Łukasiewicz
2023-12-20
Paweł Łukasiewicz
2023-12-20
Udostępnij Udostępnij Kontakt
Wprowadzenie

Aktualizacja tabeli pozwala jedynie na dokonanie zmian wartości provisioned throughput dla istniejącej tabeli. Tak jak wpisałem wcześniej, na bazie analizy ruchu w naszej aplikacji może dojść do konieczności aktualizacji tych wartości. Możemy zwiększać wartości przepustowości tak często jak jest to koniecznie, ale zmniejszanie wiąże się z pewnymi ograniczeniami. Więcej informacji możecie znaleźć w oficjalnej dokumentacji: Service, account, and table quotas in Amazon DynamoDB a my przechodzimy do części właściwej wpisu.

Aktualizacja tabeli wymagana od nas utworzenia instancji klasy AmazonDynamoDBClient, w drugim kroku musimy przygotować żądanie korzystając z klasy UpdateTableRequest oraz podajć nazwę tabeli i nowe wartości przepustowości. Ostatni krok to uruchomienie metody UpdateTable. W tym kroku wykonamy jeszcze sprawdzenie czy nasze wartości rzeczywiście zostały zaktualizowane.

Spójrzcie na poniższy przykład:

public async Task<ActionResult<string>> UpdateTable() {

  // W pierwszym kroku sprawdzimy obecne wartości dla Read/Write
  DescribeTableResponse tableDetails = _amazonDynamoDB.DescribeTableAsync(new DescribeTableRequest() {
    TableName = TableName
  }).Result;

  StringBuilder sb = new StringBuilder();
  sb.AppendLine("Wartości przed aktualizacją:");
  sb.AppendLine($"Read Capacity Unit: {tableDetails.Table.ProvisionedThroughput.ReadCapacityUnits}");
  sb.AppendLine($"Write Capacity Unit: {tableDetails.Table.ProvisionedThroughput.WriteCapacityUnits}");
  sb.AppendLine();

  var request = new UpdateTableRequest() {
    TableName = TableName,
      ProvisionedThroughput = new ProvisionedThroughput() {
        // Nowe wartości
        ReadCapacityUnits = 20,
          WriteCapacityUnits = 20
      }
  };

  var response = await _amazonDynamoDB.UpdateTableAsync(request);

  sb.AppendLine("Wartości po aktualizacji:");
  sb.AppendLine($"Read Capacity Unit: {response.TableDescription.ProvisionedThroughput.ReadCapacityUnits}");
  sb.AppendLine($"Write Capacity Unit: {response.TableDescription.ProvisionedThroughput.WriteCapacityUnits}");

  return sb.ToString();
}
Po wykonaniu powyższego kodu możecie zobaczyć, że wartości zostały zaktualizowane: DynamoDB: aktualizacja tabeli