API를 사용하여 단일 테이블 생성
테이블은 유저 데이터를 보유하는 기본 구조입니다. SQL 명령(CREATE TABLE 문) 또는 TableRequest API 명령을 사용하여 새 테이블을 생성합니다.
또한 Oracle NoSQL Cloud Infrastructure(OCI) 콘솔 또는 OCI 명령행 인터페이스(OCI-cli)를 사용하여 NDCS에서 테이블을 생성할 수도 있습니다.
테이블 생성을 위한 지침:
-
테이블 정의에는 하나 이상의 필드 정의와 정확히 하나의 기본 키 정의가 포함되어야 합니다. 기본 키 정의에 대한 자세한 내용은 테이블 생성을 참조하십시오.
-
필드 정의는 열의 이름, 해당 데이터 유형, 열이 null인지 여부, 선택적 기본값, 열이 IDENTITY 열인지 여부 및 선택적 설명을 지정합니다. PRIMARY KEY 이외의 모든 필드는 기본적으로 null일 수 있습니다.
-
기본 키 사양(key_definition)에 대한 구문은 테이블의 기본 키 열을 정렬된 필드 이름 목록으로 지정합니다.
-
TTL(Time-To-Live) 값은 행의 만료 시간을 계산하는 데 사용됩니다. 만료된 행은 질의 결과에 포함되지 않으며 결국 Oracle NoSQL Database에 의해 테이블에서 자동으로 제거됩니다. 테이블을 생성하는 동안 TTL 값을 지정하면 이 테이블에 삽입된 모든 행에 대해 기본 TTL이 적용됩니다.
테이블 생성:
SQL 명령 사용
SQL에서 CREATE TABLE 명령을 사용하여 NoSQL 테이블을 생성할 수 있습니다.
다음 섹션에서는 CREATE TABLE DDL 문을 사용하여 테이블을 생성하는 동안 사용할 수 있는 여러 가지 옵션을 중점적으로 다룹니다.
예 1: 항공사 시스템에 승객의 수하물 정보를 보관하는 항공사 수하물 추적 애플리케이션 테이블을 생성합니다.
CREATE TABLE BaggageInfo (
ticketNo LONG,
fullName STRING,
gender STRING,
contactPhone STRING,
confNo STRING,
bagInfo JSON,
PRIMARY KEY (ticketNo)
)
위 스키마에서 CREATE TABLE 문을 사용하여 BaggageInfo 테이블을 정의합니다. 승객의 티켓 번호인 ticketNo는 테이블의 기본 키입니다. fullName, gender, contactPhone 및 confNo(예약 번호) 필드는 고정 스키마의 일부인 승객의 정보를 저장합니다. bagInfo 열은 스키마가 없는 JSON 배열로, 승객의 체크인 수하물의 추적 정보를 나타냅니다.
항공 수하물 추적 애플리케이션에 대한 자세한 내용은 항공사 수하물 추적 애플리케이션을 참조하십시오.
예제 2: JSON 필드로 스트리밍 미디어 서비스 테이블을 생성하여 구독자의 현재 활동을 추적합니다.
CREATE TABLE stream_acct(
acct_id INTEGER,
profile_name STRING,
account_expiry TIMESTAMP(9),
acct_data JSON,
PRIMARY KEY(acct_id)
)USING TTL 5 DAYS
위 스키마에서 CREATE TABLE 문을 사용하여 stream_acct 테이블을 생성합니다. 가입자의 계정 ID인 acct_id 필드는 이 테이블의 기본 키입니다. 필드 profile_name, account_expiry는 고정 스키마의 일부인 조회자 세부정보가 저장됩니다. acct_data 열은 스키마가 없는 JSON 필드로, 가입자가 보는 쇼의 세부정보를 저장합니다.
스트리밍 매체 서비스 응용 프로그램에 대한 자세한 내용은 Streaming Media Service - Persistent user profile store를 참조하십시오.
또한 행이 자동으로 만료되어 더 이상 사용할 수 없는 TTL 값을 지정합니다. TTL 값은 HOURS 또는 DAYS여야 합니다. 이 스키마에서 테이블 행은 5일 후에 만료됩니다.
예제 3: 다양한 고정 스키마 정의를 사용하여 스트리밍 매체 서비스 테이블을 만듭니다.
CREATE TABLE IF NOT EXISTS stream_acct(
acct_id INTEGER,
profile_name STRING,
account_expiry TIMESTAMP(9),
acct_data RECORD (
firstName STRING,
lastName STRING,
country STRING,
shows JSON
),
PRIMARY KEY(acct_id)
)
위 스키마에서 acct_data 필드를 RECORD 데이터 유형으로 포함하여 고정 스키마의 변형을 정의합니다.
레코드는 하나 이상의 키-항목 쌍으로 구성된 정렬된 모음입니다. 레코드의 키는 문자열이어야 하며 연결된 항목의 데이터 유형이 다를 수 있습니다. 레코드의 필드는 고정 스키마의 일부이므로 추가하거나 제거할 수 없습니다. 위 예에서 firstName, lastName, country 및 shows 필드는 acct_data 레코드의 키입니다. 레코드를 정의하면 데이터를 더 큰 데이터 세트의 일부로 저장하려는 경우 유용합니다. 필드 단계 표현식을 사용하여 레코드의 전체 하위 세트를 삽입/업데이트/패치할 수 있습니다.
다음과 같이 레코드를 중첩할 수도 있습니다.
CREATE TABLE IF NOT EXISTS stream_acct(
acct_id INTEGER,
profile_name STRING,
account_expiry TIMESTAMP(9),
acct_data RECORD (
firstName STRING,
lastName STRING,
country STRING,
shows RECORD (
showName STRING,
showId INTEGER,
type JSON,
numSeasons INTEGER,
seriesInfo ARRAY(JSON)
)
),
PRIMARY KEY(acct_id)
)
shows 필드는 표시된 쇼의 세부 정보를 추적하는 데 사용되는 중첩된 RECORD 유형입니다.
예제 4: 스트리밍 매체 서비스 테이블을 계층적 테이블 구조로 생성합니다.
다음 스키마에서 stream_acct 테이블을 상위 테이블로 생성하고 acct_data 테이블을 하위 테이블로 생성합니다.
CREATE TABLE IF NOT EXISTS stream_acct(
acct_id INTEGER,
profile_name STRING,
account_expiry TIMESTAMP(9),
PRIMARY KEY(acct_id))
CREATE TABLE IF NOT EXISTS stream_acct.acct_data(
profile_id INTEGER,
user_name STRING,
firstName STRING,
lastName STRING,
country STRING,
shows JSON,
PRIMARY KEY(profile_id))
위의 상위-하위 테이블 정의를 통해 스트리밍 매체 서비스는 단일 가입에서 여러 사용자 프로파일을 지원할 수 있습니다.
사용자의 프로파일을 식별하기 위해 acct_data 테이블을 기본 키 profile_id의 하위 테이블로 정의합니다. 테이블에 대한 기본 키를 정의하는 것 외에도 acct_data 테이블은 상위 stream_acct 테이블의 acct_id 기본 키 열을 암시적으로 상속합니다.
동일한 stream_acct 상위 테이블 아래에 여러 하위 테이블을 정의할 수 있습니다. acct_data 테이블에 대한 하위 테이블을 추가로 정의할 수 있습니다. 계층의 모든 테이블에는 계층에서 가장 높은 상위 테이블의 테이블 생성 명령문에 지정된 동일한 샤드 키 열이 있습니다. 이 예에서 상위 테이블의 기본 키 acct_id도 stream_acct 및 acct_data 테이블에 대한 샤드 키입니다.
예 5: 기본 키가 IDENTITY 열인 스트리밍 매체 서비스 테이블을 만듭니다.
CREATE TABLE IF NOT EXISTS stream_acct(
acct_id INTEGER GENERATED BY DEFAULT AS IDENTITY (START WITH 4 INCREMENT BY 1 NO CYCLE),
profile_name STRING,
account_expiry TIMESTAMP(9),
acct_data JSON,
PRIMARY KEY(acct_id)
)
이 예에서는 Example 2에 정의된 동일한 필드로 stream_acct 테이블을 만듭니다. 그러나 스키마는 primary key acct_id를 IDENTITY 열로 정의합니다. IDENTITY 열을 GENERATED BY DEFAULT AS IDENTITY로 정의하면 값을 제공하지 않으면 IDENTITY 열 값이 자동으로 생성됩니다. 시스템이 4에서 1씩 증가하는 acct_id 값을 생성하기 시작합니다. 따라서 acct_id 열의 값은 LONG 데이터 유형의 최대값까지 4, 5, 6 등입니다. 스키마가 NO CYCLE 옵션을 정의함에 따라 시스템은 시퀀스 생성기가 끝날 때 최대값 뒤에 예외를 발생시킵니다.
예 6: 기본 키가 UUID 데이터 유형인 스트리밍 매체 서비스 테이블을 생성합니다.
CREATE TABLE IF NOT EXISTS stream_acct(
acct_id STRING AS UUID GENERATED BY DEFAULT,
profile_name STRING,
account_expiry TIMESTAMP(9),
acct_data JSON,
PRIMARY KEY(acct_id)
)
이 예에서는 Example 2에 정의된 동일한 필드로 stream_acct 테이블을 만듭니다. 그러나 스키마는 primary key acct_id를 UUID 데이터 유형인 GENERATED BY DEFAULT로 정의합니다. UUID 열을 제공하지 않을 경우 UUID 열에 대한 값이 자동으로 생성됩니다. 기본 키를 UUID 데이터 유형으로 정의하는 잠재적 이점은 시스템이 영역의 NoSQL 데이터 저장소 내에서만 IDENTITY 열의 고유성을 보장하는 반면, UUID 데이터 유형은 여러 영역에 걸쳐 있는 테이블의 레코드에 대해 전역 고유 식별자를 생성합니다.
JSON 수집 테이블
예 7: 스트리밍 매체 서비스 테이블을 JSON 모음 테이블로 생성합니다.
다음 CREATE TABLE 문에서 stream_acct 테이블을 JSON 수집 테이블로 생성합니다.
CREATE TABLE IF NOT EXISTS stream_acct(
acct_id INTEGER,
PRIMARY KEY(acct_id)) AS JSON COLLECTION
이 JSON 모음 테이블에는 기본 키 필드로 acct_id가 포함됩니다. DDL 명령에서 primary key 필드를 제외한 다른 필드는 제공할 필요가 없습니다.
이 테이블에 데이터를 삽입하면 JSON 수집 테이블은 자동으로 acct_id 필드 이외의 삽입된 필드를 JSON 필드로 간주합니다. 이 JSON 수집 테이블을 사용하여 TV 스트리밍 데이터를 문서로만 저장하고 검색할 수 있습니다.
예제 8: 쇼핑 애플리케이션 테이블을 JSON 수집 테이블로 생성합니다.
다음 CREATE TABLE 문은 쇼핑 애플리케이션에 대해 생성된 JSON 수집 테이블인 storeAcct 테이블을 정의합니다. 이 테이블에는 유형 문자열의 기본 키 필드로 contactPhone가 포함됩니다.
CREATE TABLE storeAcct(
contactPhone string,
primary key(contactPhone)) AS JSON COLLECTION
TableRequest API 사용
TableRequest API를 사용하여 NoSQL 테이블을 생성할 수 있습니다.
TableRequest 클래스는 테이블을 생성하는 데 사용됩니다. 이 요청에 의해 지정된 작업의 실행은 비동기입니다. 이러한 작업은 장시간 실행되는 작업일 수 있습니다. TableResult는 TableRequest 작업에서 반환되며 테이블의 상태를 캡슐화합니다. TableRequest 클래스 및 해당 메소드에 대한 자세한 내용은 Oracle NoSQL Java SDK API Reference를 참조하십시오.
CreateTable.java의 전체 코드를 여기에서 다운로드하십시오.
private static void createTab(NoSQLHandle handle) throws Exception {
String createTableDDL =
"CREATE TABLE IF NOT EXISTS " + tableName +
"(acct_Id INTEGER," +
"profile_name STRING," +
"account_expiry TIMESTAMP(1) ," +
"acct_data JSON, " +
"PRIMARY KEY(acct_Id))";
TableLimits limits = new TableLimits(20, 20, 1);
TableRequest treq = new TableRequest()
.setStatement(createTableDDL)
.setTableLimits(limits);
TableResult tres = handle.tableRequest(treq);
/* The request is async,
* so wait for the table to become active.
*/
tres.waitForCompletion(handle, 60000,1000);
System.out.println("Created Table: " + tableName);
}
주: 테이블 제한은 Oracle NoSQL Database Cloud Service에만 적용할 수 있습니다. 온프레미스 NoSQL 데이터베이스에 대한 제한이 설정된 경우 자동으로 무시됩니다.
하위 테이블 생성: 동일한 TableRequest 클래스 및 메소드를 사용하여 DDL 문을 실행하여 하위 테이블을 생성합니다.
하위 테이블을 생성하는 중:
-
테이블의 전체 이름(name_parent_table.name_child_table)을 지정해야 합니다.
-
테이블 제한은 하위 테이블이 상위 테이블의 제한을 상속하므로 명시적으로 설정할 필요가 없습니다.
예제에서 전체 코드 TableJoins.java를 다운로드하여 여기에서 상위-하위 테이블을 생성하는 방법을 이해합니다.
JSON 모음 테이블 생성:
JSON 모음 테이블에는 기본 키 필드 및 JSON 필드가 하나 이상 포함된 문서가 포함됩니다. 다음 샘플은 stream_acct 테이블을 JSON 수집 테이블로 생성합니다.
/* Create a JSON collection table with an integer primary key */
private static void createTable(NoSQLHandle handle) throws Exception {
String createTableDDL =
"CREATE TABLE IF NOT EXISTS " + tableName +
"(acct_Id INTEGER, PRIMARY KEY(acct_Id)) AS JSON COLLECTION";
TableRequest treq = new TableRequest().setStatement(createTableDDL);
System.out.println("Creating table");
TableResult tres = handle.tableRequest(treq);
/* The table request is asynchronous, so wait for the table to become active. */
TableResult.waitForState(handle, tres.getTableName(), TableResult.State.ACTIVE, 60000, 1000);
}
borneo.TableRequest 클래스는 테이블을 생성하는 데 사용됩니다. borneo.NoSQLHandle.table_request()에 대한 모든 호출은 비동기적이므로 결과를 확인하고 borneo.TableResult.wait_for_completion()를 호출하여 작업이 완료될 때까지 기다려야 합니다. table_request 및 해당 메소드에 대한 자세한 내용은 Oracle NoSQL Python SDK API Reference를 참조하십시오.
CreateTable.py의 전체 코드를 여기 예제에서 다운로드하십시오.
def create_table(handle):
statement = '''create table if not exists
stream_acct (acct_Id INTEGER,
profile_name STRING,
account_expiry TIMESTAMP(1),
acct_data JSON,
primary key(acct_Id))'''
request = TableRequest().set_statement(statement)
.set_table_limits(TableLimits(20, 10, 1))
table_result = handle.do_table_request(request, 40000, 3000)
table_result.wait_for_completion(handle, 40000, 3000)
if (table_result.get_state() == State.ACTIVE):
print('Created table: stream_acct')
else:
raise NameError('Table stream_acct is in an unexpected state ' +
str(table_result.get_state()))
주: 테이블 제한은 Oracle NoSQL Database Cloud Service에만 적용할 수 있습니다. 온프레미스 NoSQL 데이터베이스에 대한 제한이 설정된 경우 자동으로 무시됩니다.
하위 테이블 생성: 동일한 TableRequest 클래스 및 메소드를 사용하여 DDL 문을 실행하여 하위 테이블을 생성합니다.
하위 테이블을 생성하는 중:
-
테이블의 전체 이름(name_parent_table.name_child_table)을 지정해야 합니다.
-
테이블 제한은 하위 테이블이 상위 테이블의 제한을 상속하므로 명시적으로 설정할 필요가 없습니다.
TableJoins.py 예제를 통해 여기에서 전체 코드를 다운로드하십시오.
JSON 모음 테이블 생성:
JSON 모음 테이블에는 기본 키 필드 및 JSON 필드가 하나 이상 포함된 문서가 포함됩니다. 다음 샘플은 stream_acct 테이블을 JSON 수집 테이블로 생성합니다.
# Create a JSON collection table with an integer primary key
statement = '''CREATE TABLE IF NOT EXISTS stream_acct
(acct_Id INTEGER, PRIMARY KEY(acct_Id))
AS JSON COLLECTION'''
print('Creating table: ' + statement)
request = TableRequest().set_statement(statement)
# Wait for 60 seconds, polling every 1 second
result = handle.do_table_request(request, 60000, 1000)
result.wait_for_completion(handle, 60000, 1000)
print('Created table: stream_acct')
TableRequest 클래스는 테이블을 생성하는 데 사용됩니다. TableRequest에 의해 지정된 작업의 실행은 비동기입니다. 이러한 작업은 장시간 실행되는 작업일 수 있습니다. 이 요청은 테이블이 원하는 상태에 도달할 때까지 폴링하는 데 사용할 수 있는 TableResult를 반환하는 Client.DoTableRequest() 작업의 입력으로 사용됩니다. TableRequest 클래스의 다양한 메소드에 대한 자세한 내용은 Oracle NoSQL Go SDK API Reference를 참조하십시오.
CreateTable.go의 전체 코드를 여기 예제에서 다운로드하십시오.
func createTable(client *nosqldb.Client, err error, tableName string)(){
// Creates a table
stmt := fmt.Sprintf("CREATE TABLE IF NOT EXISTS %s ("+
"acct_Id INTEGER," +
"profile_name STRING," +
"account_expiry TIMESTAMP(1) ," +
"acct_data JSON, " +
"PRIMARY KEY(acct_Id))",tableName)
tableReq := &nosqldb.TableRequest{
Statement: stmt,
TableLimits: &nosqldb.TableLimits{
ReadUnits: 20,
WriteUnits: 20,
StorageGB: 1,
},
}
tableRes, err := client.DoTableRequest(tableReq)
if err != nil {
fmt.Printf("cannot initiate CREATE TABLE request: %v\n", err)
return
}
// The create table request is asynchronous,
// wait for table creation to complete.
_, err = tableRes.WaitForCompletion(client, 60*time.Second, time.Second)
if err != nil {
fmt.Printf("Error finishing CREATE TABLE request: %v\n", err)
return
}
fmt.Println("Created table: ", tableName)
return
}
주: 테이블 제한은 Oracle NoSQL Database Cloud Service에만 적용할 수 있습니다. 온프레미스 NoSQL 데이터베이스에 대한 제한이 설정된 경우 자동으로 무시됩니다.
하위 테이블 생성: 동일한 TableRequest 클래스 및 메소드를 사용하여 DDL 문을 실행하여 하위 테이블을 생성합니다.
하위 테이블을 생성하는 중:
-
테이블의 전체 이름(name_parent_table.name_child_table)을 지정해야 합니다.
-
테이블 제한은 하위 테이블이 상위 테이블의 제한을 상속하므로 명시적으로 설정할 필요가 없습니다.
TableJoins.go의 전체 코드를 여기에서 다운로드하십시오.
JSON 모음 테이블 생성:
JSON 모음 테이블에는 기본 키 필드 및 JSON 필드가 하나 이상 포함된 문서가 포함됩니다. 다음 샘플은 stream_acct 테이블을 JSON 수집 테이블로 생성합니다.
/* Create a JSON collection table with an integer primary key */
func createTable(client *nosqldb.Client) error {
tableName := "stream_acct"
stmt := fmt.Sprintf(
"CREATE TABLE IF NOT EXISTS %s "+
"(acct_Id INTEGER, PRIMARY KEY(acct_Id)) "+
"AS JSON COLLECTION",
tableName,
)
fmt.Println("Creating table:", stmt)
tableReq := &nosqldb.TableRequest{
Statement: stmt,
}
tableRes, err := client.DoTableRequest(tableReq)
if err != nil {
return err
}
// Wait for 60 seconds, polling every 1 second.
_, err = tableRes.WaitForCompletion(
client,
60*time.Second,
time.Second,
)
if err != nil {
return err
}
fmt.Println("Created table:", tableName)
return nil
}
tableDDL 메소드를 사용하여 테이블을 생성할 수 있습니다. 이 메소드는 비동기적이며 TableResult의 Promise를 반환합니다. TableResult는 TableState, 이름, 스키마 및 해당 TableLimits와 같은 DDL 작업의 상태를 포함하는 일반 JavaScript 객체입니다. 메소드 세부 정보는 NoSQLClient 클래스를 참조하십시오.
tableDDL 메소드는 TableDDLOpt 객체를 두번째 선택적 인수로 사용합니다. 테이블을 생성할 때 해당 TableLimits를 opt 인수의 일부로 지정해야 합니다. TableLimits는 읽기 단위, 쓰기 단위 및 기가바이트 스토리지 크기로 테이블의 최대 처리량과 스토리지 용량을 지정합니다.
CreateTable.js 예제를 통해 여기에서 전체 JavaScript 코드와 CreateTable.ts 전체 TypeScript 코드를 여기에서 다운로드하십시오.
import {NoSQLClient, TableState } from 'oracle-nosqldb';
const client = new NoSQLClient('config.json');
const TABLE_NAME = 'stream_acct;
async function createTable(handle) {
const createDDL = `CREATE TABLE IF NOT EXISTS
${TABLE_NAME} (acct_Id INTEGER,
profile_name STRING,
account_expiry TIMESTAMP(1),
acct_data JSON,
primary key(acct_Id))`;
/* For Provisioned Capacity specify read units, write units, and storage limit as shown below*/
/* For On-demand Capacity - set only the storage limit and specify the mode as shown here.
* { storageGB: 25, mode: CapacityMode.ON_DEMAND };
*/
let res = await handle.tableDDL(createDDL, {
complete: true,
tableLimits: {
readUnits: 20,
writeUnits: 20,
storageGB: 1
}
});
console.log('Created table: ' + TABLE_NAME);
}
위의 호출이 반환되면 결과는 작업의 최종 상태를 반영합니다. 또는 complete 옵션을 사용하려면 위의 try-catch 블록에 있는 코드를 다음 코드 샘플로 대체하십시오.
const createDDL = `CREATE TABLE IF NOT EXISTS
${TABLE_NAME} (acct_Id INTEGER,
profile_name STRING,
account_expiry TIMESTAMP(1),
acct_data JSON,
primary key(acct_Id))`;
let res = await client.tableDDL(createDDL, {complete: true,});
console.log('Created table: ' + TABLE_NAME);
하위 테이블 생성: 동일한 TableRequest 클래스 및 메소드를 사용하여 DDL 문을 실행하여 하위 테이블을 생성합니다.
하위 테이블을 생성하는 중:
-
테이블의 전체 이름(name_parent_table.name_child_table)을 지정해야 합니다.
-
테이블 제한은 하위 테이블이 상위 테이블의 제한을 상속하므로 명시적으로 설정할 필요가 없습니다.
TableJoins.js 예제를 통해 여기에서 전체 JavaScript 코드와 TableJoins.ts의 전체 TypeScript 코드를 여기에서 다운로드하십시오.
JSON 모음 테이블 생성:
JSON 모음 테이블에는 기본 키 필드 및 JSON 필드가 하나 이상 포함된 문서가 포함됩니다. 다음 샘플은 stream_acct 테이블을 JSON 수집 테이블로 생성합니다.
/* Create a JSON collection table with an integer primary key */
const client = new NoSQLClient('config.json');
const TABLE_NAME = 'stream_acct';
async function createTable() {
const createDDL =
`CREATE TABLE IF NOT EXISTS ${TABLE_NAME} ` +
`(acct_Id INTEGER, PRIMARY KEY(acct_Id)) ` +
`AS JSON COLLECTION`;
console.log('Create table: ' + createDDL);
try {
await client.tableDDL(createDDL, {
complete: true
});
console.log('Created table: ' + TABLE_NAME);
} catch (error) {
console.error('Table creation failed:', error);
throw error;
}
}
테이블을 생성하려면 ExecuteTableDDLAsync 또는 ExecuteTableDDLWithCompletionAsync 메소드 중 하나를 사용합니다. 이 두 메소드는 모두 Task<TableResult>를 반환합니다. TableResult 인스턴스는 TableState 및 테이블 스키마와 같은 DDL 작업의 상태를 포함합니다. 이러한 방법에 대한 자세한 내용은 Oracle NoSQL Dotnet SDK API Reference를 참조하십시오.
CreateTable.cs의 전체 코드를 여기서 예제에서 다운로드하십시오.
private static async Task createTable(NoSQLClient client){
// Create a table
var sql =
$@"CREATE TABLE IF NOT EXISTS
{TableName}(acct_Id INTEGER,
profile_name STRING,
account_expiry TIMESTAMP(1),
acct_data JSON,
primary key(acct_Id))";
var tableResult = await client.ExecuteTableDDLAsync(sql,
new TableDDLOptions{TableLimits = new TableLimits(20, 20, 1)});
// Wait for the operation completion
await tableResult.WaitForCompletionAsync();
Console.WriteLine(" Created table: ",tableResult.TableName);
}
주: 테이블 제한은 Oracle NoSQL Database Cloud Service에만 적용할 수 있습니다. 온프레미스 NoSQL 데이터베이스에 대한 제한이 설정된 경우 자동으로 무시됩니다.
하위 테이블 생성: 동일한 TableRequest 클래스 및 메소드를 사용하여 DDL 문을 실행하여 하위 테이블을 생성합니다.
하위 테이블을 생성하는 중:
-
테이블의 전체 이름(name_parent_table.name_child_table)을 지정해야 합니다.
-
테이블 제한은 하위 테이블이 상위 테이블의 제한을 상속하므로 명시적으로 설정할 필요가 없습니다.
TableJoins.cs 예제를 통해 여기에서 전체 코드를 다운로드하십시오.
JSON 모음 테이블 생성:
JSON 모음 테이블에는 기본 키 필드 및 JSON 필드가 하나 이상 포함된 문서가 포함됩니다. 다음 샘플은 stream_acct 테이블을 JSON 수집 테이블로 생성합니다.
/* Create a JSON collection table with an integer primary key */
private static async Task CreateTableAsync(NoSQLClient client)
{
const string tableName = "stream_acct";
var statement =
$"CREATE TABLE IF NOT EXISTS {tableName} " +
"(acct_Id INTEGER, PRIMARY KEY(acct_Id)) " +
"AS JSON COLLECTION";
Console.WriteLine($"Creating table: {statement}");
var result = await client.ExecuteTableDDLAsync(statement);
await result.WaitForCompletionAsync();
Console.WriteLine($"Table {tableName} created.");
}