使用 API 建立全域作用中表格

您可以使用 NoSQL Java SDK 在 NDCS 中建立「全域作用中」表格

您可以使用 Java API 類別 (AddReplicaRequest) 來執行 DDL 敘述句來建立「全域作用中」表格。

建立「全域作用中」表格:
  • 建立單一表格。
  • 凍結表格的綱要。您可以在 CREATE TABLE 敘述句中新增已凍結綱要,以凍結表格。如果表格未包含任何 JSON 資料欄,您可以在 CREATE TABLE 敘述句中新增使用綱要凍結強制,以凍結綱要。
  • NoSQL 資料庫表格只有在新增區域複本表格之後才會變成「全域作用中」表格。區域複本表格是在另一個區域中建立。
請參考下列範例:
  • 在包含 JSON 資料欄的表格範例中,會在 CREATE TABLE 敘述句中新增已凍結綱要,以凍結綱要。
  • 在沒有 JSON 資料欄的表格範例中,會在 CREATE TABLE 敘述句中新增使用綱要凍結強制,以凍結綱要。我們也會在 CREATE TABLE 敘述句中提供 TTL 或存留時間值,因為我們希望此表格的資料列在三天內到期。
/* 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);
/* 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, PRIMARY KEY(id)) " +
             "with schema frozen force USING TTL 3 days";
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 類別建立子項表格。此外,若要讓子項表格成為「全域作用中」表格,您必須凍結子項表格的綱要並新增區域複本。您可以從父項表格的其中一個區域複本進行挑選。
/* 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);