APIを使用したシングルトン表の変更

APIを使用してシングルトン表を変更する方法を学習します。

シングルトン表の変更は、次のとおりです:
  • 新しいフィールドを既存の表に追加する
  • 表に存在するフィールドを削除
  • デフォルトのTTL値を変更するには
  • 表の制限の変更

TableRequest APIを使用した表の変更

TableRequest APIを使用して、NoSQL表の定義を変更できます。

TableRequestクラスを使用して表を変更します。このリクエストで指定された操作の実行は非同期です。これらは長時間実行される可能性があります。TableRequest操作からTableResultが返され、表の状態がカプセル化されます。TableRequestクラスとそのメソッドの詳細は、Oracle NoSQL Java SDK APIリファレンスを参照してください。

ここにあるサンプルからフル・コードAlterTable.javaをダウンロードします。
/**
* Alter the table stream_acct and add a column
*/
private static void alterTab(NoSQLHandle handle) throws Exception {
   String alterTableDDL = "ALTER TABLE " + tableName +"(ADD acctname STRING)";
   TableRequest treq = new TableRequest().setStatement(alterTableDDL);
   System.out.println("Altering table " + tableName);
   TableResult tres = handle.tableRequest(treq);
   tres.waitForCompletion(handle, 60000, /* wait 60 sec */
   1000); /* delay ms for poll */
   System.out.println("Table " + tableName + " is altered");
}

borneo.TableRequestクラスを使用して表を変更します。borneo.NoSQLHandle.table_request()へのすべてのコールは非同期であるため、結果を確認し、borneo.TableResult.wait_for_completion()をコールして操作が完了するまで待機する必要があります。table_requestおよびそのメソッドの詳細は、Oracle NoSQL Python SDK APIリファレンスを参照してください。

ここにあるサンプルからフル・コードAlterTable.pyをダウンロードします。
def alter_table(handle):
   statement = '''ALTER TABLE  stream_acct(ADD acctname STRING)'''
   request = TableRequest().set_statement(statement)
   table_result = handle.do_table_request(request, 40000, 3000)
   table_result.wait_for_completion(handle, 40000, 3000)
   print('Table stream_acct is altered')

TableRequestクラスを使用して表を変更します。TableRequestで指定された操作の実行は非同期です。これらは長時間実行される可能性があります。このリクエストは、Client.DoTableRequest()操作の入力として使用され、表が目的の状態になるまでポーリングに使用できるTableResultを返します。TableRequestクラスの様々なメソッドの詳細は、Oracle NoSQL Go SDK APIリファレンスを参照してください。

ここの例からフル・コードAlterTable.goをダウンロードします。
//alter an existing table and add a column
func alterTable(client *nosqldb.Client, err error, tableName string)(){
   stmt := fmt.Sprintf("ALTER TABLE %s (ADD acctName STRING)",tableName)
   tableReq := &nosqldb.TableRequest{
		Statement: stmt,
   }
   tableRes, err := client.DoTableRequest(tableReq)
   if err != nil {
      fmt.Printf("cannot initiate ALTER TABLE request: %v\n", err)
      return
   }
   // The alter table request is asynchronous, wait for table alteration to complete.
   _, err = tableRes.WaitForCompletion(client, 60*time.Second, time.Second)
   if err != nil {
      fmt.Printf("Error finishing ALTER TABLE request: %v\n", err)
      return
   }
   fmt.Println("Altered table ", tableName)
   return
}

tableDDLメソッドを実行して表を変更できます。このメソッドは非同期で、TableResultのPromiseを返します。TableResultは、DDL操作後の表の状態をカプセル化するプレーンなJavaScriptオブジェクトです。メソッドの詳細は、NoSQLClientクラスを参照してください。

AlterTable.jsのすべてのJavaScriptコードをここの例からダウンロードし、完全なTypeScriptコードAlterTable.tsここの例からダウンロードします。
//alter a table and add a column
async function alterTable(handle) {
   const alterDDL = `ALTER TABLE ${TABLE_NAME} (ADD acctname STRING)`;
   let res =  await handle.tableDDL(alterDDL);
   console.log('Table altered: ' + TABLE_NAME);
}

表を変更するには、ExecuteTableDDLAsyncExecuteTableDDLWithCompletionAsyncの2つのメソッドのいずれかを使用できます。どちらのメソッドもTask<TableResult>を返します。TableResultインスタンスは、DDL操作後の表の状態をカプセル化します。これらのメソッドの詳細は、Oracle NoSQL Dotnet SDK APIリファレンスを参照してください。

ここの例からフル・コードAlterTable.csをダウンロードします。
private static async Task alterTable(NoSQLClient client){
   var sql = $@"ALTER TABLE {TableName}(ADD acctname STRING)";
   var tableResult = await client.ExecuteTableDDLAsync(sql);
   // Wait for the operation completion
   await tableResult.WaitForCompletionAsync();
   Console.WriteLine("  Table {0} is altered", tableResult.TableName);
}