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: