Usando APIs para criar uma Tabela Ativa Global
Você pode usar o NoSQL Java SDK para criar uma tabela Ativa Global no NDCS
Você usa a classe de API Java (AddReplicaRequest) para executar a instrução DDL para criar uma tabela Ativa Global.
Para criar uma tabela Ativa Global:
- Crie uma tabela singleton.
- Congele o esquema da tabela. Você pode congelar a tabela enquanto a cria adicionando com o esquema congelado na instrução CREATE TABLE. Se a tabela não contiver colunas JSON, você poderá congelar o esquema adicionando com força congelada do esquema na instrução CREATE TABLE.
- Uma tabela de Banco de Dados NoSQL só se torna uma tabela Ativa Global depois de adicionar uma tabela de réplica regional. A tabela de réplica regional é criada em outra região.
Considere os exemplos fornecidos abaixo:
- No exemplo de tabela com colunas JSON, o esquema é congelado adicionando com esquema congelado na instrução CREATE TABLE.
- No exemplo de tabela sem colunas JSON, o esquema é congelado adicionando com força congelada do esquema na instrução CREATE TABLE. Também fornecemos o valor TTL ou Time-To-Live na instrução CREATE TABLE porque queremos que as linhas desta tabela expirem em três dias.
/* 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);
Criando uma tabela filho:
Use a classe TableRequest para criar uma tabela filho. Além disso, para tornar a tabela filho uma tabela Ativa Global, você precisa congelar o esquema da tabela filho e adicionar uma réplica regional. Você pode escolher uma das réplicas regionais da tabela pai.
/* 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);
Tópicos Relacionados