Sobre Compartimentos

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

As tabelas do Oracle NoSQL Database Cloud Service são criadas em um compartimento e têm seu escopo limitado a nesse compartimento. Quando autenticadas como um usuário específico, as suas tabelas são gerenciadas no compartimento raiz da sua tenancy, a menos que o contrário seja especificado. A organização de tabelas em diferentes compartimentos ajuda a manter a organização e a 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 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 seja aplicado a todas as operações usando o handle. Consulte Obtendo um exemplo de NoSQL Handle.
  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 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 é um caminho separado por "." (pontos).

Observação:

Ao especificar o caminho para um compartimento aninhado, não inclua o nome do compartimento de nível superior no caminho, pois ele é obtido 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 em borneo.NoSQLHandleConfig.set_compartment(). Ele substitui o compartimento padrão do usuário.
  • Além disso, é possível especificar um compartimento em cada instância Request.
Os métodos set_compartment usam 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. Esse 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 em relação 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 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. Um compartimento também pode ser especificado em cada solicitação no objeto options. 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 se aplica somente se você estiver autorizando com a identidade específica do usuário. 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 obter o procedimento para configurar o controlador de instâncias, consulte Chamando Serviços de uma Instância. Para obter o procedimento de configuração do controlador de recursos, consulte Accessing Other Oracle Cloud Infrastructure Resources from Running Functions.

O compartimento padrão para tabelas é o compartimento raiz da tenancy do usuário. Um compartimento padrão para todas as operações pode ser especificado definindo a propriedade Compartment como 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ção 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.

Tópicos Relacionados