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 singleton.
- 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é CREATE TABLE. Si la TABLE ne contient aucune colonne JSON, vous pouvez geler le schéma en ajoutant avec la force de gel du schéma dans l'énoncé 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.
Voici quelques exemples :
- Dans l'exemple de TABLE avec des colonnes JSON, le schéma est gelé en ajoutant avec schéma gelé dans l'énoncé CREATE TABLE.
- Dans l'exemple de TABLE sans colonnes JSON, le schéma est gelé en ajoutant with schema frozen force dans l'énoncé CREATE TABLE. Nous avons également fourni la valeur TTL ou Time-To-Live 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 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);
Rubriques connexes