Utiliser des 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 DDL afin de créer une table active globale.
Pour créer une table active globale :
- 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 une force de gel 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éplique régionale. La table de répliques régionales 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 pour une TABLE sans colonnes JSON, le schéma est gelé en ajoutant avec force de gel de schéma dans l'instruction CREATE TABLE. Nous avons également indiqué 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 faire de la table enfant 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);
Rubriques connexes