Utilisation d'API pour créer une table globale active

Vous pouvez utiliser la trousse SDK Java NoSQL pour créer une table globale active dans NDCS

Vous utilisez la classe d'API Java (AddReplicaRequest) pour exécuter l'énoncé LDD afin de créer une table Global Active.

Pour créer une table globale active :
  • Créez une table NoSQL avec au moins une colonne JSON.
  • Geler le schéma de la table. Vous pouvez geler la table lors de sa création en ajoutant avec schéma gelé dans l'énoncé DDL CREATE TABLE.
  • Une table de base de données NoSQL devient une table active globale uniquement après l'ajout d'une table de réplique régionale. La table de réplique régionale est créée dans une autre région.
/* 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);

Créer une table enfant :

Utilisez la classe TableRequest pour créer une table enfant. En outre, pour faire de la table enfant une table Global Active, vous devez geler le schéma de la table enfant et ajouter une réplique régionale. Vous pouvez choisir l'une des répliques régionales de la table parent.
/* 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);