APIを使用したグローバル・アクティブ表の変更
グローバル・アクティブ表では、表のスキーマを変更できません。
グローバル・アクティブ表から新しいフィールドを追加したり、既存のフィールドを削除することはできません。グローバル・アクティブ表の読取り容量制限または書込み容量制限を変更すると、変更が開始されるリージョンにのみ変更が適用されます。ただし、ストレージ容量を変更するか、デフォルトの表レベルのTTL値を変更すると、表のすべてのレプリカ・リージョンに変更が適用されます。
グローバル・アクティブ表の変更
ユーザーは、既存の表リクエスト(TableRequest())を使用して、グローバル・アクティブ表の次のものを更新できます。
-
read-units:リージョナル表レプリカの読取りユニットの値を変更します
-
write-units:リージョナル表レプリカの書込みユニットの値を変更します
-
キャパシティ・モード:リージョナル表レプリカのキャパシティ・モードを(オンデマンドからプロビジョニング、またはその逆に)変更します。
-
テーブルサイズ:すべてのリージョナルレプリカのテーブルのストレージ容量を変更します。
リージョナル表レプリカの表制限(読取りユニット、書込みユニットおよびストレージ容量)の変更。ストレージ容量は、すべてのリージョナルレプリカで変更されます。
TableLimits limits = new TableLimits(40, 10, 5);
TableRequest treq = new TableRequest().setTableName( "<table_name>" ).setTableLimits(limits);
TableResult tres = handle.tableRequest(treq);
/* wait for completion of the operation */
tres.waitForCompletion(handle, 60000, 1000);
リージョナル表レプリカの容量モードをプロビジョニング済容量からオンデマンド容量に変更します。
// Call the constructor to only set storage limit (for on-demand)
TableLimits limits = new TableLimits(10);
TableRequest treq = new TableRequest().setTableName("<table_name>").setTableLimits(limits);
TableResult tres = serviceHandle.tableRequest(treq);
tres.waitForCompletion(serviceHandle, 50000,3000);
AddReplicaRequest()を使用して、既存のグローバル・アクティブ表のリージョナル・レプリカを追加することもできます。
/* add replica ca-toronto-1 */
System.output.println("Adding replica: " + region);
AddReplicaRequest addRepReq = new AddReplicaRequest()
.setTableName(tableName)
.setReplicaName(region);
res = handle.addReplica(addRepReq);
res.waitForCompletion(handle, 90000, 1000);
System.output.println("Added replica: " + region);
System.output.println("Table:\n" + JsonUtils.prettyPrint(res));
DropReplicaRequest()を使用して、既存のグローバル・アクティブ表からリージョナル・レプリカを削除できます。すべてのリージョナル・レプリカが削除されると、グローバル・アクティブ表がシングルトン表になります。
/* drop replica ca-montreal-1 */
System.output.println("\nDropping replica: " + region);
DropReplicaRequest dropRepReq = new DropReplicaRequest()
.setTableName(tableName)
.setReplicaName(region);
res = handle.dropReplica(dropRepReq);
res.waitForCompletion(handle, 60000, 500);
System.output.println("Dropped replica: " + region);
ノート:親表のレプリカを削除する場合の依存性を理解するには、親子表のレプリカの削除を参照してください。