Usando APIs para criar uma Tabela Única
A tabela é a estrutura básica para armazenar dados do usuário. Você usa um comando SQL (instrução CREATE TABLE
) ou comandos da API TableRequest
para criar uma nova tabela.
Você também pode usar a console do OCI (Oracle NoSQL Cloud Infrastructure) ou a interface de linha de comando do OCI (OCI-cli) para criar uma tabela no NDCS.
- A definição de tabela deve incluir pelo menos uma definição de campo e exatamente uma definição de chave primária. Para obter mais informações sobre a definição de chave primária, consulte Criar Tabela.
- A definição do campo especifica o nome da coluna, seu tipo de dados, se a coluna é anulável ou não, um valor padrão opcional, se a coluna é ou não uma coluna IDENTITY e um comentário opcional. Todos os campos (que não sejam PRIMARY KEY) podem ser anulados por padrão.
- A sintaxe da especificação de chave primária (key_definition) especifica as colunas de chave primária da tabela como uma lista ordenada de nomes de campo.
- O valor do Tempo de Vida (TTL) é usado para calcular o tempo de expiração de uma linha. As linhas expiradas não são incluídas nos resultados da consulta e são removidas automaticamente da tabela pelo Oracle NoSQL Database. Se você especificar um valor de TTL ao criar a tabela, ele será aplicado como o TTL padrão para cada linha inserida nessa tabela.
Usando comandos SQL
Você pode usar o comando CREATE TABLE em SQL para criar tabelas NoSQL.
BaggageInfo
que contém informações de bagagem de passageiros em um sistema de companhia aérea.CREATE TABLE BaggageInfo (
ticketNo LONG,
fullName STRING,
gender STRING,
contactPhone STRING,
confNo STRING,
bagInfo JSON,
PRIMARY KEY (ticketNo)
)
stream_acct
que contém dados de um aplicativo de streaming de TV.CREATE TABLE stream_acct(
acct_id INTEGER,
profile_name STRING,
account_expiry TIMESTAMP(1),
acct_data JSON,
PRIMARY KEY(acct_id)
)
stream_acct_new
que contém dados de um aplicativo de streaming de TV. As linhas da tabela expiram em 2 dias.CREATE TABLE stream_acct_new(
acct_id INTEGER,
profile_name STRING,
account_expiry TIMESTAMP(1),
acct_data JSON,
PRIMARY KEY(acct_id)) USING TTL 2 days
Tópicos Relacionados
Usando a API TableRequest
Você pode usar a API TableRequest para criar tabelas NoSQL.
A classe TableRequest
é usada para criar tabelas. A execução das operações especificadas por esta solicitação é assíncrona. Estas são operações de execução potencialmente longa. TableResult
é retornado das operações TableRequest
e encapsula o estado da tabela. Consulte Oracle NoSQL Java SDK API Reference para obter mais detalhes sobre a classe TableRequest e seus métodos.
private static void createTab(NoSQLHandle handle) throws Exception {
String createTableDDL =
"CREATE TABLE IF NOT EXISTS " + tableName +
"(acct_Id INTEGER," +
"profile_name STRING," +
"account_expiry TIMESTAMP(1) ," +
"acct_data JSON, " +
"PRIMARY KEY(acct_Id))";
TableLimits limits = new TableLimits(20, 20, 1);
TableRequest treq = new TableRequest()
.setStatement(createTableDDL)
.setTableLimits(limits);
TableResult tres = handle.tableRequest(treq);
/* The request is async,
* so wait for the table to become active.
*/
tres.waitForCompletion(handle, 60000,1000);
System.out.println("Created Table: " + tableName);
}
Observação:
Os limites de tabela são aplicáveis somente ao Oracle NoSQL Database Cloud Service. Se forem definidos limites para um Banco de Dados NoSQL local, eles serão ignorados silenciosamente.Criando uma tabela filha: Você usa a mesma classe e os mesmos métodos TableRequest
para executar a instrução DDL para criar uma tabela filha.
- Você precisa especificar o nome completo da tabela (name_parent_table.name_child_table)
- Os limites da tabela não precisam ser definidos explicitamente, pois uma tabela filho herda os limites de uma tabela pai.
Faça download do código completo TableJoins.java dos exemplos para entender como criar uma tabela pai-filho aqui.
A classe borneo.TableRequest
é usada para criar uma tabela. Todas as chamadas para borneo.NoSQLHandle.table_request()
são assíncronas; portanto, é necessário verificar o resultado e chamar borneo.TableResult.wait_for_completion()
para aguardar a conclusão da operação. Consulte Oracle NoSQL Python SDK API Reference para obter mais detalhes sobre table_request
e seus métodos.
def create_table(handle):
statement = '''create table if not exists
stream_acct (acct_Id INTEGER,
profile_name STRING,
account_expiry TIMESTAMP(1),
acct_data JSON,
primary key(acct_Id))'''
request = TableRequest().set_statement(statement)
.set_table_limits(TableLimits(20, 10, 1))
table_result = handle.do_table_request(request, 40000, 3000)
table_result.wait_for_completion(handle, 40000, 3000)
if (table_result.get_state() == State.ACTIVE):
print('Created table: stream_acct')
else:
raise NameError('Table stream_acct is in an unexpected state ' +
str(table_result.get_state()))
Observação:
Os limites de tabela são aplicáveis somente ao Oracle NoSQL Database Cloud Service. Se forem definidos limites para um Banco de Dados NoSQL local, eles serão ignorados silenciosamente.Criando uma tabela filha: Você usa a mesma classe e os mesmos métodos TableRequest
para executar a instrução DDL para criar uma tabela filha.
- Você precisa especificar o nome completo da tabela (name_parent_table.name_child_table).
- Os limites da tabela não precisam ser definidos explicitamente, pois uma tabela filho herda os limites de uma tabela pai.
Faça download do código completo TableJoins.py nos exemplos aqui.
A classe TableRequest
é usada para criar uma tabela. A execução de operações especificadas por TableRequest
é assíncrona. Estas são operações de execução potencialmente longa. Essa solicitação é usada como a entrada de uma operação Client.DoTableRequest()
, que retorna um TableResult
que pode ser usado para sondar até que a tabela atinja o estado desejado. Consulte Referência da API do Oracle NoSQL Go SDK para obter mais detalhes sobre os vários métodos da classe TableRequest
.
func createTable(client *nosqldb.Client, err error, tableName string)(){
// Creates a table
stmt := fmt.Sprintf("CREATE TABLE IF NOT EXISTS %s ("+
"acct_Id INTEGER," +
"profile_name STRING," +
"account_expiry TIMESTAMP(1) ," +
"acct_data JSON, " +
"PRIMARY KEY(acct_Id))",tableName)
tableReq := &nosqldb.TableRequest{
Statement: stmt,
TableLimits: &nosqldb.TableLimits{
ReadUnits: 20,
WriteUnits: 20,
StorageGB: 1,
},
}
tableRes, err := client.DoTableRequest(tableReq)
if err != nil {
fmt.Printf("cannot initiate CREATE TABLE request: %v\n", err)
return
}
// The create table request is asynchronous,
// wait for table creation to complete.
_, err = tableRes.WaitForCompletion(client, 60*time.Second, time.Second)
if err != nil {
fmt.Printf("Error finishing CREATE TABLE request: %v\n", err)
return
}
fmt.Println("Created table: ", tableName)
return
}
Observação:
Os limites de tabela são aplicáveis somente ao Oracle NoSQL Database Cloud Service. Se forem definidos limites para um Banco de Dados NoSQL local, eles serão ignorados silenciosamente.Criando uma tabela filha: Você usa a mesma classe e os mesmos métodos TableRequest
para executar a instrução DDL para criar uma tabela filha.
- Você precisa especificar o nome completo da tabela (name_parent_table.name_child_table).
- Os limites da tabela não precisam ser definidos explicitamente, pois uma tabela filho herda os limites de uma tabela pai.
Faça download do código completo TableJoins.go nos exemplos aqui.
Você pode criar uma tabela usando o método tableDDL
. Esse método é assíncrono e retorna uma Promessa de TableResult
. O TableResult
é um objeto JavaScript simples que contém o status da operação DDL, como TableState, nome, esquema e TableLimits. Para obter detalhes do método, consulte a classe NoSQLClient.
O método tableDDL
usa o objeto TableDDLOpt como o segundo argumento opcional. Ao criar uma tabela, você deve especificar seu TableLimits
como parte do argumento opt. O TableLimits
especifica o throughput máximo e a capacidade de armazenamento da tabela como a quantidade de unidades de leitura, unidades de gravação e Gigabytes de armazenamento.
Faça download do código JavaScript completo CreateTable.js nos exemplos aqui e do código TypeScript completo CreateTable.ts nos exemplos aqui.
import {NoSQLClient, TableState } from 'oracle-nosqldb';
const client = new NoSQLClient('config.json');
const TABLE_NAME = 'stream_acct;
async function createTable(handle) {
const createDDL = `CREATE TABLE IF NOT EXISTS
${TABLE_NAME} (acct_Id INTEGER,
profile_name STRING,
account_expiry TIMESTAMP(1),
acct_data JSON,
primary key(acct_Id))`;
/* For Provisioned Capacity specify read units, write units, and storage limit as shown below*/
/* For On-demand Capacity - set only the storage limit and specify the mode as shown here.
* { storageGB: 25, mode: CapacityMode.ON_DEMAND };
*/
let res = await handle.tableDDL(createDDL, {
complete: true,
tableLimits: {
readUnits: 20,
writeUnits: 20,
storageGB: 1
}
});
console.log('Created table: ' + TABLE_NAME);
}
const createDDL = `CREATE TABLE IF NOT EXISTS
${TABLE_NAME} (acct_Id INTEGER,
profile_name STRING,
account_expiry TIMESTAMP(1),
acct_data JSON,
primary key(acct_Id))`;
let res = await client.tableDDL(createDDL, {complete: true,});
console.log('Created table: ' + TABLE_NAME);
Criando uma tabela filha: Você usa a mesma classe e os mesmos métodos TableRequest
para executar a instrução DDL para criar uma tabela filha.
- Você precisa especificar o nome completo da tabela (name_parent_table.name_child_table)
- Os limites da tabela não precisam ser definidos explicitamente, pois uma tabela filho herda os limites de uma tabela pai.
Faça download do código JavaScript completo TableJoins.js nos exemplos aqui e do código TypeScript completo TableJoins.ts nos exemplos aqui.
Para criar uma tabela, use um dos métodos ExecuteTableDDLAsync
ou ExecuteTableDDLWithCompletionAsync
. Esses dois métodos retornam Task<TableResult>
. A instância TableResult
contém o status da operação DDL, como TableState e esquema de tabela. Consulte Referência da API do Oracle NoSQL Dotnet SDK para obter mais detalhes sobre esses métodos.
private static async Task createTable(NoSQLClient client){
// Create a table
var sql =
$@"CREATE TABLE IF NOT EXISTS
{TableName}(acct_Id INTEGER,
profile_name STRING,
account_expiry TIMESTAMP(1),
acct_data JSON,
primary key(acct_Id))";
var tableResult = await client.ExecuteTableDDLAsync(sql,
new TableDDLOptions{TableLimits = new TableLimits(20, 20, 1)});
// Wait for the operation completion
await tableResult.WaitForCompletionAsync();
Console.WriteLine(" Created table: ",tableResult.TableName);
}
Observação:
Os limites de tabela são aplicáveis somente ao Oracle NoSQL Database Cloud Service. Se forem definidos limites para um Banco de Dados NoSQL local, eles serão ignorados silenciosamente.Criando uma tabela filha: Você usa a mesma classe e os mesmos métodos TableRequest
para executar a instrução DDL para criar uma tabela filha.
- Você precisa especificar o nome completo da tabela (name_parent_table.name_child_table)
- Os limites da tabela não precisam ser definidos explicitamente, pois uma tabela filho herda os limites de uma tabela pai.
Faça download do código completo TableJoins.cs nos exemplos aqui.