API를 사용하여 Global Active Table 생성

NoSQL Java SDK를 사용하여 NDCS에서 전역 활성 테이블을 생성할 수 있습니다.

Java API 클래스(AddReplicaRequest)를 사용하여 DDL 문을 실행하여 전역 활성 테이블을 생성합니다.

전역 활성 테이블을 생성하려면 다음과 같이 하십시오.
  • JSON 열이 하나 이상 포함된 NoSQL 테이블을 생성합니다.
  • 테이블의 스키마를 고정합니다. DDL CREATE TABLE 문에 스키마가 고정됨을 추가하여 테이블을 생성하는 동안 테이블을 고정할 수 있습니다.
  • NoSQL 데이터베이스 테이블은 지역 복제본 테이블을 추가한 후에만 전역 활성 테이블이 됩니다. 지역 복제본 테이블이 다른 지역에 생성됩니다.
/* Initialize NoSQLHandle */
NoSQLHandleConfig config = new NoSQLHandleConfig(endpoint)
                          .setAuthorizationProvider(new SignatureProvider())
                          .setDefaultCompartment(compartmentId);
NoSQLHandle handle = NoSQLHandleFactory.createNoSQLHandle(config);
/* Create table */
String ddl = "CREATE TABLE IF NOT EXISTS " + tableName + "(" +
             "id INTEGER, name STRING, info JSON, PRIMARY KEY(id)) " +
             "with schema frozen";
String tableName = "<name_your_table";
String region = "<name_your_sender_region>";
System.output.println("Creating table: " + ddl);
TableRequest tableReq = new TableRequest()
                        .setStatement(ddl)
                        .setTableLimits(new TableLimits(50, 50, 1));
TableResult res = handle.tableRequest(tableReq);
res.waitForCompletion(handle, 90000, 1000);
System.output.println("Table created: " + tableName);
/* add replica ca-montreal-1 */
System.output.println("\nAdding 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);

하위 테이블 생성:

TableRequest 클래스를 사용하여 하위 테이블을 만듭니다. 또한 하위 테이블을 Global Active 테이블로 만들려면 하위 테이블의 스키마를 고정하고 지역 복제본을 추가해야 합니다. 상위 테이블의 지역별 복제본 중 하나를 선택할 수 있습니다.
/* Initialize NoSQLHandle */
NoSQLHandleConfig config = new NoSQLHandleConfig(endpoint)
                          .setAuthorizationProvider(new SignatureProvider())
                          .setDefaultCompartment(compartmentId);
NoSQLHandle handle = NoSQLHandleFactory.createNoSQLHandle(config);

/* Create table */
String ddl = "CREATE TABLE IF NOT EXISTS " + fulltableName + "(" +
             "cid INTEGER, cname STRING, cinfo JSON, PRIMARY KEY(id)) " +
             "with schema frozen";
System.output.println("Creating child table: " + ddl);
TableRequest tableReq = new TableRequest()
                        .setStatement(ddl));
TableResult res = handle.tableRequest(tableReq);
res.waitForCompletion(handle, 90000, 1000);
System.output.println("Child Table created: " + tableName);

/* add replica ca-montreal-1 */
System.output.println("\nAdding replica: " + region);
AddReplicaRequest addRepReq = new AddReplicaRequest()
                              .setTableName(fulltableName)
                              .setReplicaName(region);
res = handle.addReplica(addRepReq);
res.waitForCompletion(handle, 90000, 1000);
System.output.println("Added replica: " + region);