Utilizzo delle API per creare una tabella attiva globale
È possibile utilizzare NoSQL Java SDK per creare una tabella Global Active in NDCS
Utilizzare la classe API Java (AddReplicaRequest) per eseguire l'istruzione DDL e creare una tabella Global Active.
Per creare una tabella attiva globale:
- Creare un tavolo singleton.
- Congelare lo schema della tabella. È possibile congelare la tabella durante la creazione aggiungendo con schema bloccato nell'istruzione CREATE TABLE. Se la tabella non contiene colonne JSON, è possibile congelare lo schema aggiungendo con forza bloccata dello schema nell'istruzione CREATE TABLE.
- Una tabella di database NoSQL diventa una tabella Global Active solo dopo aver aggiunto una tabella di replica regionale. La tabella di replica regionale viene creata in un'altra area.
Considera gli esempi riportati di seguito:
- Nell'esempio per la tabella con colonne JSON, lo schema viene congelato aggiungendo con schema bloccato nell'istruzione CREATE TABLE.
- Nell'esempio per la tabella senza colonne JSON, lo schema viene congelato aggiungendo with schema frozen force nell'istruzione CREATE TABLE. Nell'istruzione CREATE TABLE è stato inoltre fornito il valore TTL o Time-To-Live in quanto si desidera che le righe di questa tabella scadano tra tre giorni.
/* 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);
Creazione di una tabella figlio:
Utilizzare la classe TableRequest per creare una tabella figlio. Inoltre, per rendere la tabella figlio una tabella attiva globale, è necessario congelare lo schema della tabella figlio e aggiungere una replica regionale. È possibile selezionare una delle repliche regionali della tabella padre.
/* 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);
Argomenti correlati