Sobre Compartimentos

Saiba como especificar o compartimento ao criar e trabalhar com as tabelas Oracle NoSQL Database Cloud Service usando os Drivers do Oracle NoSQL Database.

As tabelas do Oracle NoSQL Database Cloud Service são criadas em um compartimento e têm como escopo esse compartimento. Quando autenticadas como um usuário específico, suas tabelas são gerenciadas no compartimento raiz da sua tenancy, exceto se especificado de outra forma. Organizar tabelas em diferentes compartimentos ajudará na organização e na segurança.

Se você tiver sido autenticado com um controlador de instâncias (acessando o serviço por meio de uma instância de computação do OCI), deverá especificar um compartimento usando o seu id (OCID), pois não há padrão nesse caso. Consulte Chamando o Serviço de uma Instância na Documentação do Oracle Cloud Infrastructure.

Há várias formas de especificar um compartimento no código do aplicativo:

  1. Use um compartimento padrão em NoSQLHandleConfig para que ele se aplique a todas as operações usando o handle. Consulte Obtendo um NoSQL Handle para obter um exemplo.

  2. Use o OCID (nome do compartimento ou id) em cada solicitação além do nome da tabela. Ele substitui qualquer compartimento padrão.

    Por exemplo:

    GetRequest getReq = new GetRequest().setTableName("mytable")
                                        .setCompartment("mycompartment");
  3. Use o nome do compartimento como um prefixo no nome da tabela. Isso substitui qualquer compartimento padrão e também um compartimento especificado com a API.

    Por exemplo:

    GetRequest getReq = new GetRequest().setTableName("mycompartment:mytable");

Durante a utilização de um compartimento nomeado, o nome pode ser o nome simples de um compartimento de nível superior ou um caminho para um compartimento aninhado. No último caso, o caminho será um caminho separado por "." (ponto).

Observação: ao especificar o caminho para um compartimento aninhado, não inclua o nome do compartimento de nível superior no caminho, conforme inferido da tenancy.

Há várias formas de especificar um compartimento no código do aplicativo:

  • Existe um método para permitir a especificação de um compartimento padrão para solicitações no borneo.NoSQLHandleConfig.set_compartment(). Isso substitui o compartimento padrão do usuário.

  • Além disso, é possível especificar um compartimento em cada instância do Request.

Os métodos set_compartment utilizam um id (OCID), um nome de compartimento ou um caminho. Se um nome de compartimento for usado, ele poderá ser o nome de um compartimento de nível superior.

Observação: Se um caminho de compartimento for usado para fazer referência a um compartimento aninhado, o caminho será um caminho separado por pontos que exclui o compartimento de nível superior do caminho, por exemplo, compartmentA.compartmentB.

Em vez de definir um compartimento na solicitação, é possível usar um nome de compartimento para prefixar um nome de tabela em uma solicitação, consulta ou instrução DDL. Este uso substitui qualquer outra definição do compartimento. Por exemplo,

...
request = PutRequest().set_table_name('mycompartment:mytable')
...
create_statement = 'create table mycompartment:mytable(...)'
...
request = GetRequest().set_table_name('compartmentA.compartmentB')

Há várias formas de especificar um compartimento no código do aplicativo:

  • Você pode definir um nome ou id de compartimento desejado.

  • Defina como uma string vazia para usar o compartimento padrão, que é o compartimento raiz da tenancy.

  • Se estiver usando um compartimento aninhado, especifique o caminho completo do compartimento relativo ao compartimento raiz como compartmentID. Por exemplo, se estiver usando rootCompartment.compartmentA.compartmentB, o compartmentID deverá ser definido como compartmentA.compartmentB.

  • Você também pode usar o OCID do compartimento como o valor da string.

compartmentID:="<optional-compartment-name-or-ID>"
iam.NewRawSignatureProvider(tenancy, user, region, fingerprint, compartmentID,
        privateKey, &privateKeyPassphrase)

Você pode especificar um compartimento padrão para todas as operações executadas por uma instância NoSQLClient definindo a propriedade de compartimento da configuração passada para o construtor NoSQLClient:

import { NoSQLClient,Region } from 'oracle-nosqldb';
const client = new NoSQLClient({
    region: Region.US_ASHBURN_1,
    compartment: 'mycompartment'
});

O valor da string pode ser um id de compartimento, um nome de compartimento ou um caminho. Se for um nome simples, ele deverá especificar um compartimento de nível superior. Se for um caminho para um compartimento aninhado, o compartimento de nível superior deverá ser excluído, pois é inferido da tenancy. Também é possível especificar um compartimento em cada solicitação no objeto de opções. Este valor substitui o valor de configuração inicial.

Se você não especificar um compartimento, o compartimento raiz da tenancy será usado como padrão. Isso só se aplica se você estiver autorizando com a identidade de um usuário específico. Se você estiver usando o controlador de instâncias ou o controlador de recursos para autenticação, especifique o ID do compartimento, pois não há padrão nesses casos.

Se o compartimento não for fornecido, o OCID da tenancy será usado como padrão. Observe que isso só se aplica se você estiver autorizando com a identidade do usuário. Ao usar o controlador de instâncias ou o controlador de recursos, o id do compartimento deve ser especificado.

Para ver o procedimento para configurar o controlador de instâncias, consulte Chamando Serviços de uma Instância. Para obter o procedimento para configurar o controlador de recursos, consulte Acessando Outros Recursos do Oracle Cloud Infrastructure pelas Funções em Execução.

O compartimento padrão para tabelas é o compartimento raiz da tenancy do usuário. É possível especificar um compartimento padrão para todas as operações definindo a propriedade Compartment de NoSQLConfig. Por exemplo:

var client = new NoSQLClient(
    new NoSQLConfig
    {
        Region=Region.US_ASHBURN_1,
        Compartment="<compartment_ocid_or_name>"
    });

O valor da string pode ser um OCID de compartimento ou um nome ou caminho de compartimento. Se for um nome simples, ele deverá especificar um compartimento de nível superior. Se for um caminho para um compartimento aninhado, o compartimento de nível superior deverá ser excluído, pois é inferido da tenancy.

Além disso, todas as classes de opções de operação têm a propriedade Compartment, como TableDDLOptions.Compartment, GetOptions.Compartment, PutOptions.Compartment etc. Assim, você também pode especificar comparações separadamente para qualquer operação. Esse valor, se definido, substituirá o valor do compartimento em NoSQLConfig, se houver.

Se o compartimento não for fornecido, o OCID da tenancy será usado como padrão. Observe que isso só se aplica se você estiver autorizando com a identidade do usuário. Ao usar o controlador de instâncias ou o controlador de recursos, o id do compartimento deve ser especificado.