Dettagli

Scopri come specificare il compartimento durante la creazione e l'utilizzo delle tabelle Oracle NoSQL Database Cloud Service mediante i driver Oracle NoSQL Database.

Le tabelle di Oracle NoSQL Database Cloud Service vengono create in un compartimento e sono definite in base a tale compartimento. Quando vengono autenticate come utente specifico, le tabelle vengono gestite nel compartimento radice della tenancy, a meno che non sia specificato diversamente. Organizzare le tabelle in diversi compartimenti aiuterà per quanto riguarda l'organizzazione e la sicurezza.

Se sei stato autenticato utilizzando un principal dell'istanza (che accede al servizio da un'istanza di OCI Compute), devi specificare un compartimento utilizzando il relativo ID (OCID), poiché in questo caso non esiste un valore predefinito. Vedere Calling Service From a Instance in Oracle Cloud Infrastructure Documentation.

Esistono diversi modi per specificare un compartimento nel codice dell'applicazione:
  1. Utilizzare un compartimento predefinito in NoSQLHandleConfig in modo che si applichi a tutte le operazioni che utilizzano l'handle. Per un esempio, vedere Ottenere un handle NoSQL.
  2. Utilizzare il nome o l'ID (OCID) del compartimento in ogni richiesta oltre al nome della tabella. Questa impostazione sostituisce qualsiasi compartimento predefinito.
    Ad esempio:
    GetRequest getReq = new GetRequest().setTableName("mytable")
                                        .setCompartment("mycompartment");
  3. Utilizzare il nome del compartimento come prefisso nel nome della tabella. Questa operazione sostituisce qualsiasi compartimento predefinito e un compartimento specificato mediante l'API.
    Ad esempio:
    GetRequest getReq = new GetRequest().setTableName("mycompartment:mytable");
Quando si utilizza un compartimento denominato, il nome può essere il nome semplice di un compartimento di livello superiore o il percorso di un compartimento nidificato. In quest'ultimo caso, il percorso è un "." (punto) percorso separato.

Nota

Quando si specifica il percorso di un compartimento nidificato, non includere il nome del compartimento di livello superiore nel percorso derivato dalla tenancy.
Esistono diversi modi per specificare un compartimento nel codice dell'applicazione:
  • Esiste un metodo per consentire la specifica di un compartimento predefinito per le richieste in borneo.NoSQLHandleConfig.set_compartment(). Questa operazione sostituisce il compartimento predefinito dell'utente.
  • Inoltre, è possibile specificare un compartimento in ogni istanza Request.
I metodi set_compartment utilizzano un ID (OCID), un nome compartimento o un percorso. Se viene utilizzato il nome di un compartimento, può essere il nome di un compartimento di livello superiore.

Nota

Se si utilizza un percorso compartimento per fare riferimento a un compartimento nidificato, il percorso è un percorso separato da punti che esclude il compartimento di livello superiore del percorso, ad esempio compartmentA.compartmentB.
Anziché impostare un compartimento nella richiesta, è possibile utilizzare un nome di compartimento prima di un nome di tabella in una richiesta, query o istruzione DDL. Questo uso sostituisce qualsiasi altra impostazione del compartimento. Di seguito sono riportati alcuni esempi.
...
request = PutRequest().set_table_name('mycompartment:mytable')
...
create_statement = 'create table mycompartment:mytable(...)' 
...
request = GetRequest().set_table_name('compartmentA.compartmentB')
Esistono diversi modi per specificare un compartimento nel codice dell'applicazione:
  • È possibile impostare il nome o l'ID del compartimento desiderato.
  • Impostare una stringa vuota per utilizzare il compartimento predefinito, ovvero il compartimento radice della tenancy.
  • Se si utilizza un compartimento nidificato, specificare il percorso completo del compartimento relativo al compartimento radice come compartmentID. Ad esempio, se si utilizza rootCompartment.compartmentA.compartmentB, compartmentID deve essere impostato su compartmentA.compartmentB.
  • Puoi anche utilizzare l'OCID del compartimento come valore stringa.
compartmentID:="<optional-compartment-name-or-ID>"
iam.NewRawSignatureProvider(tenancy, user, region, fingerprint, compartmentID,
        privateKey, &privateKeyPassphrase)
È possibile specificare un compartimento predefinito per tutte le operazioni eseguite da un'istanza NoSQLClient impostando la proprietà del compartimento della configurazione passata al costruttore NoSQLClient:
import { NoSQLClient,Region } from 'oracle-nosqldb';
const client = new NoSQLClient({
    region: Region.US_ASHBURN_1,
    compartment: 'mycompartment'
});

Il valore stringa può essere un ID compartimento o un nome o un percorso del compartimento. Se si tratta di un nome semplice, è necessario specificare un compartimento di livello superiore. Se si tratta di un percorso a un compartimento nidificato, è necessario escludere il compartimento di livello superiore poiché viene derivato dalla tenancy. È possibile specificare un compartimento anche in ogni richiesta nell'oggetto options. Questo valore sostituisce il valore di configurazione iniziale.

Se non si specifica un compartimento, verrà utilizzato come predefinito il compartimento radice della tenancy. Questo vale solo se si autorizza con l'identità di un utente specifico. Se si utilizza il principal istanza o il principal risorsa per l'autenticazione, è necessario specificare l'ID compartimento poiché in questi casi non esiste un valore predefinito.

Se il compartimento non viene fornito, l'OCID della tenancy verrà utilizzato come valore predefinito. Questo si applica solo se si autorizza con l'identità dell'utente. Quando si utilizza il principal istanza o il principal risorsa, è necessario specificare l'ID compartimento.

Per la procedura di impostazione del principal dell'istanza, vedere Chiamata di servizi da un'istanza. Per la procedura di impostazione del principal delle risorse, vedere Accesso ad altre risorse di Oracle Cloud Infrastructure dall'esecuzione di funzioni.

Il compartimento predefinito per le tabelle è il compartimento radice della tenancy dell'utente. È possibile specificare un compartimento predefinito per tutte le operazioni impostando la proprietà Compartimento di NoSQLConfig. Ad esempio:
var client = new NoSQLClient(
    new NoSQLConfig
    {
        Region=Region.US_ASHBURN_1,
        Compartment="<compartment_ocid_or_name>"
    });
Il valore stringa può essere un OCID compartimento o un nome o un percorso del compartimento. Se si tratta di un nome semplice, è necessario specificare un compartimento di livello superiore. Se si tratta di un percorso a un compartimento nidificato, è necessario escludere il compartimento di livello superiore poiché viene derivato dalla tenancy.

Inoltre, tutte le classi di opzioni dell'operazione dispongono della proprietà Compartment, ad esempio TableDDLOptions.Compartment, GetOptions.Compartment, PutOptions.Compartment e così via. È inoltre possibile specificare il confronto separatamente per qualsiasi operazione. Questo valore, se impostato, sostituirà l'eventuale valore del compartimento in NoSQLConfig.

Se il compartimento non viene fornito, l'OCID della tenancy verrà utilizzato come valore predefinito. Questo si applica solo se si autorizza con l'identità dell'utente. Quando si utilizza il principal istanza o il principal risorsa, è necessario specificare l'ID compartimento.

Argomenti correlati