구획 정보

Oracle NoSQL Database 드라이버를 사용하여 Oracle NoSQL Database Cloud Service 테이블을 생성하고 작업하는 동안 구획을 지정하는 방법을 알아봅니다.

Oracle NoSQL Database Cloud Service 테이블은 구획에 생성되며 해당 구획으로 범위가 지정됩니다. 특정 사용자로 인증되면 별도로 지정하지 않는 한 테이블이 테넌시의 루트 컴파트먼트에서 관리됩니다. 테이블을 서로 다른 구획으로 구성하면 조직 및 보안에 도움이 됩니다.

인스턴스 주체를 사용하여 인증된 경우(OCI 컴퓨트 인스턴스에서 서비스에 액세스), 이 경우 기본값이 없으므로 해당 ID(OCID)를 사용하여 컴파트먼트를 지정해야 합니다. Oracle Cloud Infrastructure 문서인스턴스에서 서비스 호출을 참조하십시오.

애플리케이션 코드에 구획을 지정하는 방법은 여러 가지가 있습니다.

  1. 핸들을 사용하는 모든 작업에 적용되도록 NoSQLHandleConfig의 기본 컴파트먼트를 사용합니다. 예는 Obtaining a NoSQL Handle를 참조하십시오.

  2. 테이블 이름과 함께 각 요청의 컴파트먼트 이름 또는 ID(OCID)를 사용합니다. 기본 컴파트먼트를 무효화합니다.

    예:

    GetRequest getReq = new GetRequest().setTableName("mytable")
                                        .setCompartment("mycompartment");
  3. 컴파트먼트 이름을 테이블 이름의 접두어로 사용합니다. 그러면 기본 컴파트먼트와 API를 사용하여 지정된 컴파트먼트가 무효화됩니다.

    예:

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

명명된 컴파트먼트를 사용할 때 이름은 최상위 컴파트먼트의 단순 이름 또는 중첩 컴파트먼트의 경로일 수 있습니다. 후자의 경우 경로는 "."(점)으로 구분된 경로입니다.

참고: 중첩 구획에 대한 경로를 지정하는 동안 테넌시에서 추론되는 대로 경로에 최상위 구획 이름을 포함하지 마십시오.

애플리케이션 코드에 구획을 지정하는 방법은 여러 가지가 있습니다.

  • borneo.NoSQLHandleConfig.set_compartment()의 요청에 대해 기본 컴파트먼트의 지정을 허용하는 메소드가 존재합니다. 그러면 사용자의 기본 컴파트먼트가 무효화됩니다.

  • 또한 각 Request 인스턴스에 구획을 지정할 수 있습니다.

set_compartment 메소드는 ID(OCID) 또는 컴파트먼트 이름이나 경로를 사용합니다. 컴파트먼트 이름이 사용되는 경우 최상위 컴파트먼트의 이름일 수 있습니다.

참고: 컴파트먼트 경로를 사용하여 중첩 컴파트먼트를 참조하는 경우 경로는 경로의 최상위 컴파트먼트(예: compartmentA.compartmentB)를 제외하는 점으로 구분된 경로입니다.

요청에서 컴파트먼트를 설정하는 대신 컴파트먼트 이름을 사용하여 요청, 질의 또는 DDL 문에서 테이블 이름 앞에 접두어를 붙일 수 있습니다. 이 사용은 컴파트먼트의 다른 설정을 무효화합니다. 예제

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

애플리케이션 코드에 구획을 지정하는 방법은 여러 가지가 있습니다.

  • 원하는 컴파트먼트 이름 또는 ID를 설정할 수 있습니다.

  • 기본 컴파트먼트, 즉 테넌시의 루트 컴파트먼트를 사용하려면 빈 문자열로 설정합니다.

  • 중첩된 컴파트먼트를 사용하는 경우 루트 컴파트먼트에 상대적인 전체 컴파트먼트 경로를 compartmentID로 지정합니다. 예를 들어, rootCompartment.compartmentA.compartmentB를 사용하는 경우 compartmentID는 compartmentA.compartmentB로 설정되어야 합니다.

  • 컴파트먼트 OCID를 문자열 값으로 사용할 수도 있습니다.

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

NoSQLClient 생성자로 전달된 구성의 컴파트먼트 속성을 설정하여 NoSQLClient 인스턴스에서 수행되는 모든 작업에 대해 기본 컴파트먼트를 지정할 수 있습니다.

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

문자열 값은 컴파트먼트 ID, 컴파트먼트 이름 또는 경로일 수 있습니다. 단순 이름인 경우 최상위 컴파트먼트를 지정해야 합니다. 중첩된 컴파트먼트의 경로인 경우 최상위 컴파트먼트는 테넌시에서 추론되므로 제외해야 합니다. 컴파트먼트는 옵션 객체의 각 요청에 지정할 수도 있습니다. 이 값은 초기 구성 값을 대체합니다.

컴파트먼트를 지정하지 않으면 테넌시의 루트 컴파트먼트가 기본값으로 사용됩니다. 이는 특정 사용자의 ID로 권한을 부여하는 경우에만 적용됩니다. 인스턴스 주체 또는 리소스 주체를 인증에 사용하는 경우 이 경우 기본값이 없으므로 컴파트먼트 ID를 지정해야 합니다.

컴파트먼트가 제공되지 않을 경우 테넌시 OCID가 기본값으로 사용됩니다. 이는 사용자의 ID로 권한을 부여하는 경우에만 적용됩니다. 인스턴스 주체 또는 리소스 주체를 사용하는 경우 컴파트먼트 ID를 지정해야 합니다.

인스턴스 주체를 설정하는 절차는 인스턴스에서 서비스 호출을 참조하십시오. 리소스 주체 설정 절차는 실행 중인 함수에서 다른 Oracle Cloud Infrastructure 리소스에 액세스를 참조하십시오.

테이블의 기본 컴파트먼트는 사용자 테넌시의 루트 컴파트먼트입니다. NoSQLConfig의 컴파트먼트 속성을 설정하여 모든 작업에 대한 기본 컴파트먼트를 지정할 수 있습니다. 예:

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

문자열 값은 컴파트먼트 OCID 또는 컴파트먼트 이름 또는 경로일 수 있습니다. 단순 이름인 경우 최상위 컴파트먼트를 지정해야 합니다. 중첩된 컴파트먼트의 경로인 경우 최상위 컴파트먼트는 테넌시에서 추론되므로 제외해야 합니다.

또한 모든 작업 옵션 클래스에는 TableDDLOptions.Compartment, GetOptions.Compartment, PutOptions.Compartment 등과 같은 Compartment 속성이 있습니다. 따라서 작업에 대해 별도로 비교를 지정할 수도 있습니다. 이 값이 설정된 경우 NoSQLConfig의 컴파트먼트 값(있는 경우)을 무효화합니다.

컴파트먼트가 제공되지 않을 경우 테넌시 OCID가 기본값으로 사용됩니다. 이는 사용자의 ID로 권한을 부여하는 경우에만 적용됩니다. 인스턴스 주체 또는 리소스 주체를 사용하는 경우 컴파트먼트 ID를 지정해야 합니다.