APIを使用したグローバル・アクティブ表の変更

グローバル・アクティブ表では、表のスキーマは変更できません。

グローバル・アクティブ表から新しいフィールドを追加したり、既存のフィールドを削除することはできません。グローバル・アクティブ表の読取り容量制限または書込み容量制限を変更すると、変更が開始されたリージョンにのみ変更が適用されます。ただし、ストレージ容量を変更するか、デフォルトの表レベルのTTL値を変更すると、表のすべてのレプリカ・リージョンに変更が適用されます。

グローバル・アクティブ表の変更

ユーザーは、既存の表リクエスト(TableRequest())を使用して、グローバル・アクティブ表で次を更新できます。

  • read-units:リージョナルテーブルレプリカの読み取り単位の値を変更します
  • write-units:リージョナルテーブルレプリカのwrite-unitsの値を変更します
  • capacity-mode:リージョン表レプリカの容量モード(オンデマンドからプロビジョニング済またはその逆)を変更します。
  • テーブルサイズ:すべてのリージョナルレプリカ内のテーブルのストレージ容量を変更します。
リージョナルテーブルレプリカのテーブル制限(読み取り単位、書き込み単位、およびストレージ容量)の変更。すべてのリージョン・レプリカでストレージ容量が変更されます。
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);

ノート:

親表のレプリカを削除する際の依存関係を理解するには、親子表のレプリカの削除を参照してください。