Obtendo um Handle NoSQL

Saiba como acessar tabelas usando o Oracle NoSQL Database Drivers. Comece a desenvolver o seu aplicativo criando um NoSQL Handle. Use NoSQLHandle para acessar as tabelas e executar todas as operações.

Para criar uma conexão representada por NoSQLHandle, obtenha um identificador usando o método NoSQLHandleFactory.createNoSQLHandle e a classe NoSQLHandleConfig. A classe NoSQLHandleConfig permite que um aplicativo especifique a configuração do handle. Consulte o Guia de Referência da API Java para saber mais.

Use o código a seguir para obter um identificador NoSQL:
/* Configure a handle for the desired Region and AuthorizationProvider.
 * By default this SignatureProvider constructor reads authorization
 * information from ~/.oci/config and uses the default user profile and
 * private key for request signing. Additional SignatureProvider
 * constructors are available if a config file is not available or
 * desirable. 
 */
AuthorizationProvider ap = new SignatureProvider();

/* Use the us-ashburn-1 region */
NoSQLHandleConfig config = new NoSQLHandleConfig(Region.US_ASHBURN_1, ap);
config.setAuthorizationProvider(ap);

/* Sets a default compartment for all requests from this handle. This 
 * may be overridden in individual requests or by using a
 * compartment-name prefixed table name.
 */
config.setDefaultCompartment("mycompartment");

// Open the handle
NoSQLHandle handle = NoSQLHandleFactory.createNoSQLHandle(config);

// Use the handle to execute operations

Um identificador tem memória e recursos de rede associados a ele. Use o método NoSQLHandle.close para liberar os recursos quando o seu aplicativo for fechado com o handle.

Para minimizar a atividade da rede, a alocação de recursos e os overheads de desalocação, é melhor evitar criar e fechar handles repetidamente. Por exemplo, a criação e o fechamento de um handle em cada operação resultaria no mau desempenho do aplicativo. Como um identificador permite operações concorrentes, um único identificador é suficiente para acessar tabelas em um aplicativo multi-threaded. A criação de vários identificadores incorre em overheads extras de recursos sem fornecer nenhum benefício de desempenho.

Um handle é criado primeiro criando uma instância borneo.NoSQLHandleConfig para configurar o ponto final de comunicação, as informações de autorização e os valores padrão para a configuração de handle. borneo.NoSQLHandleConfig representa uma conexão com o serviço. Uma vez criado, ele deve ser fechado usando o método borneo.NoSQLHandle.close() para limpar recursos. As alças são seguras para threads e devem ser compartilhadas.

Um exemplo de aquisição de um Handle NoSQL para o Oracle NoSQL Cloud Service:
from borneo import NoSQLHandle, NoSQLHandleConfig, Regions
from borneo.iam import SignatureProvider
# create AuthorizationProvider
provider = SignatureProvider()
# create handle config using the correct desired region
# as endpoint, add a default compartment.
config = NoSQLHandleConfig(Regions.US_ASHBURN_1).
set_authorization_provider(provider).
set_default_compartment('mycompartment')
# create the handle
handle = NoSQLHandle(config)

Observação:

Para reduzir o uso de recursos e a sobrecarga da criação do handle, é melhor evitar a criação e o fechamento excessivos de instâncias borneo.NoSQLHandle.
A primeira etapa em qualquer aplicativo go do Oracle NoSQL Database Cloud Service é criar um identificador nosqldb.Client usado para enviar solicitações ao serviço. As instâncias do handle do Cliente são seguras para uso simultâneo por vários goroutines e destinam-se a ser compartilhadas em um aplicativo multi-goroutines. O identificador é configurado usando suas credenciais e outras informações de autenticação.
provider, err := iam.NewSignatureProviderFromFile(cfgfile, profile, passphrase, compartment)
cfg := nosqldb.Config
{ 
   Region: "us-phoenix-1", AuthorizationProvider: provider,
}
client, err := nosqldb.NewClient(cfg)
// use client for all NoSQL DB operations

A classe NoSQLClient representa o principal ponto de acesso ao serviço. Para criar a instância de NoSQLClient, forneça as informações de configuração apropriadas. Essas informações são representadas por um objeto Config e podem ser fornecidas ao construtor da classe NoSQLClient. Como alternativa, você pode optar por armazenar essas informações em um arquivo de configuração JSON e no construtor de NoSQLClient com o caminho (absoluto ou relativo ao diretório atual do aplicativo) para esse arquivo. Para obter detalhes do método, consulte a classe NoSQLClient.

O primeiro exemplo abaixo cria uma instância de NoSQLClient para o Cloud Service usando o objeto Config. Ele também adiciona um compartimento padrão e substitui valores de timeout padrão no objeto de configuração.
import { NoSQLClient, Region } from 'oracle-nosqldb';

let client = new NoSQLClient({
    region: Region.US_ASHBURN_1,
    timeout: 20000,
    ddlTimeout: 40000,
    compartment: 'mycompartment',
    auth: {
        iam: {
            configFile: '~/myapp/.oci/config',
            profileName: 'Jane'
        }
    }
});

O segundo exemplo armazena a mesma configuração em um arquivo JSON config.json e a usa para criar a instância NoSQLClient.

Arquivo config.json de amostra:
{ 
"region": "US_ASHBURN_1",
 "timeout": 20000,
 "ddlTimeout": 40000,
 "compartment": "mycompartment", 
 "auth": { 
    "iam": { 
       "configFile": "~/myapp/.oci/config",
       "profileName": "Jane"
    } 
  }
}
Código de aplicativo:
import { NoSQLClient } from 'oracle-nosqldb';
let client = new NoSQLClient('config.json');

A classe NoSQLClient representa o principal ponto de acesso ao serviço. Para criar uma instância de NoSQLClient, forneça as informações de configuração apropriadas. Essas informações são representadas pela classe NoSQLConfig, cuja instância pode ser fornecida ao construtor de NoSQLClient. Como alternativa, você pode optar por armazenar as informações de configuração em um arquivo de configuração JSON e usar o construtor de NoSQLClient que leva o caminho (absoluto ou relativo ao diretório atual) para esse arquivo.

O primeiro exemplo abaixo cria a instância de NoSQLClient para o Cloud Service usando NoSQLConfig. Ele também adiciona um compartimento padrão e substitui alguns valores de timeout padrão em NoSQLConfig.
var client = new NoSQLClient(
    new NoSQLConfig
    {
        Region = Region.US_ASHBURN_1,
        Timeout = TimeSpan.FromSeconds(10),
        TableDDLTimeout = TimeSpan.FromSeconds(20),
        Compartment = "mycompartment",
        AuthorizationProvider = new IAMAuthorizationProvider(
            "~/myapp/.oci/config", "Jane")
    });

O segundo exemplo armazena a mesma configuração em um arquivo JSON config.json e a usa para criar a instância NoSQLClient.

config.json
{
    "Region": "us-ashburn-1",
    "Timeout": 20000,
    "TableDDLTimeout": 40000,
    "compartment": "mycompartment",
    "AuthorizationProvider":
    {
        "AuthorizationType": "IAM",
        "ConfigFile": "~/myapp/.oci/config",
        "ProfileName": "Jane"
    }
}
Código de aplicativo:
var client = new NoSQLClient("config.json");