Globale aktive Tabelle mit APIs erstellen

Mit dem Java-SDK NoSQL können Sie eine globale aktive Tabelle in NDCS erstellen

Mit der Java-API-Klasse (AddReplicaRequest) führen Sie die DDL-Anweisung aus, um eine globale aktive Tabelle zu erstellen.

So erstellen Sie eine globale aktive Tabelle:
  • Erstellen Sie eine NoSQL-Tabelle mit mindestens einer JSON-Spalte.
  • Sperren Sie das Schema der Tabelle. Sie können die Tabelle beim Erstellen einfrieren, indem Sie in der DDL CREATE TABLE-Anweisung mit eingefrorenem Schema hinzufügen.
  • Eine NoSQL-Datenbanktabelle wird erst nach dem Hinzufügen einer regionalen Replikattabelle zu einer globalen aktiven Tabelle. Die regionale Replikattabelle wird in einer anderen Region erstellt.
/* 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);

Erstellen einer untergeordneten Tabelle:

Verwenden Sie die Klasse TableRequest, um eine untergeordnete Tabelle zu erstellen. Um die untergeordnete Tabelle zu einer globalen aktiven Tabelle zu machen, müssen Sie außerdem das Schema der untergeordneten Tabelle einfrieren und ein regionales Replikat hinzufügen. Sie können aus einem der regionalen Replikate der übergeordneten Tabelle auswählen.
/* 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);

Verwandte Themen