Utilisation d'API pour créer une table active globale
Vous pouvez utiliser le kit SDK Java NoSQL pour créer une table active globale dans NDCS
Utilisez la classe d'API Java (AddReplicaRequest) pour exécuter l'instruction LDD afin de créer une table active globale.
Pour créer une table Global Active :
-
Créez une table singleton.
-
Geler le schéma de la table. Vous pouvez figer la TABLE lors de sa création en ajoutant avec un schéma figé dans l'instruction CREATE TABLE. Si la TABLE ne contient aucune colonne JSON, vous pouvez figer le schéma en ajoutant avec la force gelée de schéma dans l'instruction 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épliques régionale. La table de répliques régionale est créée dans une autre région.
Prenons les exemples ci-dessous :
-
Dans l'exemple de TABLE avec des colonnes JSON, le schéma est figé en ajoutant avec le schéma figé dans l'instruction CREATE TABLE.
-
Dans l'exemple d'une TABLE sans colonnes JSON, le schéma est figé en ajoutant avec force gelée de schéma dans l'instruction CREATE TABLE. Nous avons également fourni la valeur de durée de vie ou de durée de vie dans l'instruction CREATE TABLE car nous voulons que les lignes de cette TABLE expirent dans trois jours.
/* 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);
Créer une table enfant :
Utilisez la classe TableRequest pour créer une table enfant. En outre, pour que la table enfant devienne une table active globale, 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);