Globale aktive Tabelle mit APIs erstellen
Mit dem Java-SDK NoSQL können Sie eine globale aktive Tabelle in NDCS erstellen
Mit der Java-API-Klasse (AddReplicaRequest) führen Sie die DDL-Anweisung aus, um eine globale aktive Tabelle zu erstellen.
So erstellen Sie eine globale aktive Tabelle:
- Singleton-Tabelle erstellen
- Sperren Sie das Schema der Tabelle. Sie können die Tabelle beim Erstellen einfrieren, indem Sie mit eingefrorenem Schema in der Anweisung CREATE TABLE hinzufügen. Wenn die Tabelle keine JSON-Spalten enthält, können Sie das Schema einfrieren, indem Sie mit erzwungener Schemaeinfrierung in der Anweisung CREATE TABLE hinzufügen.
- Eine NoSQL-Datenbanktabelle wird erst nach dem Hinzufügen einer regionalen Replikattabelle zu einer globalen aktiven Tabelle. Die regionale Replikattabelle wird in einer anderen Region erstellt.
Betrachten Sie die folgenden Beispiele:
- Im Beispiel für eine Tabelle mit JSON-Spalten wird das Schema eingefroren, indem mit eingefrorenem Schema in die CREATE TABLE-Anweisung eingefügt wird.
- Im Beispiel für eine Tabelle ohne JSON-Spalten wird das Schema eingefroren, indem mit erzwungener Schemaeinfrierung in die CREATE TABLE-Anweisung eingefügt wird. Außerdem haben wir den TTL- oder Time-to-Live-Wert in der CREATE TABLE-Anweisung angegeben, da die Zeilen dieser Tabelle in drei Tagen ablaufen sollen.
/* 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);
Erstellen einer untergeordneten Tabelle:
Verwenden Sie die Klasse TableRequest, um eine untergeordnete Tabelle zu erstellen. Um die untergeordnete Tabelle zu einer globalen aktiven Tabelle zu machen, müssen Sie außerdem das Schema der untergeordneten Tabelle einfrieren und ein regionales Replikat hinzufügen. Sie können aus einem der regionalen Replikate der übergeordneten Tabelle auswählen.
/* 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);
Verwandte Themen