API를 사용하여 싱글톤 테이블 수정

API를 사용하여 싱글톤 테이블을 수정하는 방법을 알아봅니다.

싱글톤 테이블을 다음과 같이 수정합니다.
  • 기존 테이블에 새 필드 추가
  • 테이블에서 현재 기존 필드 삭제
  • 기본 TTL 값을 변경하려면
  • 테이블 제한 수정

TableRequest API를 사용하여 테이블 변경

TableRequest API를 사용하여 NoSQL 테이블의 정의를 변경할 수 있습니다.

TableRequest 클래스는 테이블을 수정하는 데 사용됩니다. 이 요청에 의해 지정된 작업의 실행은 비동기입니다. 이러한 작업은 장기적으로 실행될 수 있습니다. TableResultTableRequest 작업에서 반환되며 테이블의 상태를 캡슐화합니다. TableRequest 클래스 및 해당 메소드에 대한 자세한 내용은 Oracle NoSQL Java SDK API Reference를 참조하십시오.

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 Reference를 참조하십시오.

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 Reference를 참조하십시오.

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 메소드를 실행하여 테이블을 수정할 수 있습니다. 이 메소드는 비동기적이며 Promise TableResult를 반환합니다. TableResult는 DDL 작업 후 테이블의 상태를 캡슐화하는 일반 JavaScript 객체입니다. 메소드 세부 정보는 NoSQLClient 클래스를 참조하십시오.

Download the full JavaScript code AlterTable.js from the examples here and the full TypeScript code AlterTable.ts from the examples here.
//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 두 가지 방법 중 하나를 사용하여 테이블을 수정할 수 있습니다. 두 메소드는 모두 Task<TableResult>를 반환합니다. TableResult 인스턴스는 DDL 작업 후 테이블의 상태를 캡슐화합니다. 이러한 방법에 대한 자세한 내용은 Oracle NoSQL Dotnet SDK API Reference를 참조하십시오.

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);
}