API를 사용하여 싱글톤 테이블 수정
API를 사용하여 싱글톤 테이블을 수정하는 방법을 알아봅니다.
싱글톤 테이블을 다음과 같이 수정합니다.
-
기존 테이블에 새 필드 추가
예:
String alterTableDDL = ALTER TABLE <table name> (ADD age INTEGER); TableRequest treq = new TableRequest().setStatement(alterTableDDL); -
테이블의 현재 기존 필드 삭제
예:
String alterTableDDL = ALTER TABLE <table name> (DROP age); TableRequest treq = new TableRequest().setStatement(alterTableDDL); -
기본 TTL 값을 변경하려면
예:
String alterTableDDL = ALTER TABLE <table name> USING TTL 7 DAYS; TableRequest treq = new TableRequest().setStatement(alterTableDDL); -
테이블 제한 수정
예:
TableLimits newLimits = new TableLimits(10, 10, 1); TableRequest treq = new TableRequest().setTableName(tableName).setTableLimits(newLimits); -
테이블의 스키마 고정
예: 테이블에 JSON 열이 포함된 경우 스키마 고정을 사용합니다.
String alterTableDDL = ALTER TABLE <table name> freeze schema; TableRequest treq = new TableRequest().setStatement(alterTableDDL);예: 테이블에 JSON 열이 포함되지 않은 경우 스키마 강제 고정을 사용합니다.
String alterTableDDL = ALTER TABLE <table name> freeze schema force; TableRequest treq = new TableRequest().setStatement(alterTableDDL); -
테이블의 스키마 고정 해제
예:
String alterTableDDL = ALTER TABLE <table name> unfreeze schema; TableRequest treq = new TableRequest().setStatement(alterTableDDL);
TableRequest API를 사용하여 테이블 변경
TableRequest API를 사용하여 NoSQL 테이블의 정의를 변경할 수 있습니다.
TableRequest 클래스는 테이블을 수정하는 데 사용됩니다. 이 요청에 의해 지정된 작업의 실행은 비동기입니다. 이러한 작업은 장시간 실행되는 작업일 수 있습니다. TableResult는 TableRequest 작업에서 반환되며 테이블의 상태를 캡슐화합니다. 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에 의해 지정된 작업의 실행은 비동기입니다. 이러한 작업은 장시간 실행되는 작업일 수 있습니다. 이 요청은 테이블이 원하는 상태에 도달할 때까지 폴링하는 데 사용할 수 있는 TableResult를 반환하는 Client.DoTableRequest() 작업의 입력으로 사용됩니다. 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 메소드를 실행하여 테이블을 수정할 수 있습니다. 이 메소드는 비동기적이며 TableResult의 Promise를 반환합니다. TableResult는 DDL 작업 후 테이블의 상태를 캡슐화하는 일반 JavaScript 객체입니다. 메소드 세부 정보는 NoSQLClient 클래스를 참조하십시오.
AlterTable.js의 전체 JavaScript 코드를 여기에서 다운로드하고 AlterTable.ts의 전체 TypeScript 코드를 여기에서 다운로드하십시오.
//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);
}
ExecuteTableDDLAsync 및 ExecuteTableDDLWithCompletionAsync의 두 가지 방법 중 하나를 사용하여 테이블을 수정할 수 있습니다. 두 메소드는 모두 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);
}